2018北京網路賽D 80days (尺取)

来源:https://www.cnblogs.com/ACMerszl/archive/2018/10/04/9742491.html
-Advertisement-
Play Games

#1831 : 80 Days #1831 : 80 Days 時間限制:1000ms 單點時限:1000ms 記憶體限制:256MB 描述 80 Days is an interesting game based on Jules Verne's science fiction "Around th ...


#1831 : 80 Days

時間限制:1000ms 單點時限:1000ms 記憶體限制:256MB

描述

80 Days is an interesting game based on Jules Verne's science fiction "Around the World in Eighty Days". In this game, you have to manage the limited money and time.

Now we simplified the game as below:

There are n cities on a circle around the world which are numbered from 1 to n by their order on the circle. When you reach the city i at the first time, you will get ai dollars (ai can even be negative), and if you want to go to the next city on the circle, you should pay bi dollars. At the beginning you have c dollars.

The goal of this game is to choose a city as start point, then go along the circle and visit all the city once, and finally return to the start point. During the trip, the money you have must be no less than zero.

Here comes a question: to complete the trip, which city will you choose to be the start city?

If there are multiple answers, please output the one with the smallest number.

輸入

The first line of the input is an integer T (T ≤ 100), the number of test cases.

For each test case, the first line contains two integers n and c (1 ≤ n ≤ 106, 0 ≤ c ≤ 109).  The second line contains n integers a1, …, an  (-109 ai ≤ 109), and the third line contains n integers b1, …, bn (0 ≤ bi ≤ 109).

It's guaranteed that the sum of n of all test cases is less than 106

輸出

For each test case, output the start city you should choose.

提示

For test case 1, both city 2 and 3 could be chosen as start point, 2 has smaller number. But if you start at city 1, you can't go anywhere.

For test case 2, start from which city seems doesn't matter, you just don't have enough money to complete a trip.

樣例輸入
2
3 0
3 4 5
5 4 3
3 100
-3 -4 -5
30 40 50
樣例輸出
2
-1


比賽的時候都以為是dp,但是自己寫的感覺就是暴力。。。

思路:p[i]=a[i]-b[i] 化環為直 尺取法取長度為n的序列,front如果大於n就是-1 (見註釋)

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <math.h>
 4 #include <string.h>
 5 #include <stdlib.h>
 6 #include <string>
 7 #include <vector>
 8 #include <set>
 9 #include <map>
10 #include <queue>
11 #include <algorithm>
12 #include <sstream>
13 #include <stack>
14 using namespace std;
15 #define rep(i,a,n) for (int i=a;i<n;i++)
16 #define per(i,a,n) for (int i=n-1;i>=a;i--)
17 #define pb push_back
18 #define mp make_pair
19 #define all(x) (x).begin(),(x).end()
20 #define fi first
21 #define se second
22 #define SZ(x) ((int)(x).size())
23 #define FO freopen("in.txt", "r", stdin);
24 #define debug(x) cout << "&&" << x << "&&" << endl;
25 #define lowbit(x) (x&-x)
26 #define mem(a,b) memset(a, b, sizeof(a));
27 typedef vector<int> VI;
28 typedef long long ll;
29 typedef pair<int,int> PII;
30 const ll mod=1000000007;
31 const int inf = 0x3f3f3f3f;
32 ll powmod(ll a,ll b) {ll res=1;a%=mod;for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
33 ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
34 //head
35 
36 const int N=1e6+5;
37 int p[N<<1],a[N],b[N],_,n;
38 ll c;
39 int main() {
40     for(scanf("%d",&_);_;_--) {
41         scanf("%d%lld",&n,&c);
42         rep(i,1,n+1) scanf("%d",&a[i]);
43         rep(i,1,n+1) scanf("%d",&b[i]);
44         rep(i,1,n+1) p[i]=p[i+n]=a[i]-b[i];//模擬環
45         int front=1,rear=1;//都指向1
46         while(front<=n&&rear-front+1<=n) {//front<=n n長度
47             c+=p[rear];//累加 後移
48             rear++;
49             while(c<0){//如果c<0 說明front不能到達rear front後移
50                 c-=p[front];
51                 front++;
52             }
53         }
54         if(front>n) puts("-1");//1~n都不行
55         else printf("%d\n",front);//可以取長度為n的序列 輸出隊頭
56     }
57 }

 

(貌似提交是過不去的。。。)



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 將屬於一類的對象放在一起: 如果一個函數操縱一個全局變數,那麼兩者最好都在類內作為特性和方法實現。 不要讓對象過於親密: 方法應該只關心自己實例的特性,讓其他實例管理自己的狀態。 簡單就好: 讓方法小巧起來,一般來說,多數方法都應在30秒內被讀完,儘量在代碼的行數控制在一頁或者一屏之內。 小心繼承, ...
  • JPA概述 JPA(Java Persistence API)的簡稱,用於持久化的API。 JAVAEE5.0平臺標準的ORM的規範使得應用程式以統一的方式訪問持久層。 JPA和Hibernate的關係 JPA是Hibernate的一個抽象,就像JDBC和JDBC驅動的關係一樣。 PA是規範:JPA ...
  • 1. 點擊菜單欄的File >New Project 2. 打開Terminal, 進入剛剛創建的路徑執行如下命令: python manage.py startapp app01 顯示效果如下: 3. 配置靜態文件路徑 4. 在view.py文件新增方法: 5. 在urls.py文件中進行路由匹配 ...
  • 一、JVM中的類載入器類型 從Java虛擬機的角度講,只有兩種不同的類載入器:啟動類載入器和其他類載入器。 1.啟動類載入器(Boostrap ClassLoader):這個是由c++實現的,主要負責JAVA_HOME/lib目錄下的核心 api 或 -Xbootclasspath 選項指定的jar ...
  • 第一個SpringBoot程式 例子來自慕課網廖師兄的免費課程 "2小時學會SpringBoot" "Spring Boot進階之Web進階" 使用IDEA新建工程,選擇SpringBoot Initializr,勾選Web一路next就搭建了一個最簡單的SpringBoot工程。如下: @Spri ...
  • 基本概念 JMX(Java Management Extensions,即Java管理擴展)是一個為應用程式、設備、系統等植入管理功能的框架。JMX可以跨越一系列異構操作系統平臺、系統體繫結構和網路傳輸協議,靈活的開發無縫集成的系統、網路和服務管理應用。簡介看上去不是很直觀和明白,也可能我瞭解的太少 ...
  • 輸出結果:main start t1 -> main wait() -> t1 call notify() -> main continue 其實調用t1.start(),t1為就緒狀態,只是main方法中,t1被main線程鎖住了,t1.wait()的時候,讓當前線程等待,其實是讓main線程等待 ...
  • 1. 在urls.py的文件中導入操作正則表達式的方法:(新版的Django是使用path方法對URL進行路由分配) 2 . 在templates文件夾下的index.html添加如下代碼,進行路徑匹配:(在需要超鏈接的連接進行路由匹配) 3. 點擊超鏈接顯示的URL如下: http://127.0 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...