time limit: 1 sec memory limit: 128 mb
submit: 488 solved: 57
zstu的萌新們準備去自助旅行,他們租了一輛吉普車,然後選擇了n個城市作為遊覽地點。然後他們驚喜的發現他們選擇的城市剛好繞城乙個環。
也就是說如果給所有城市按照0,1,2,……,n-1編號,0號城市和n-1號城市是相鄰的,並且只能從i號城市去(i+1)%n號城市。
已知每個城市可以充油gas(i),從 i 到 (i+1)%n 城市耗油 cost(i)。
假設這輛吉普車沒有的油箱一開始是空的,並且沒有上限。
沒有油的話自然就不能繼續旅行了,這個問題讓萌新們非常困擾。作為優秀的acmer,請你幫他們找到乙個出發城市,使得萌新們能遊覽盡可能多的城市(注意最多遊覽n個城市)。如果有多個可選擇的出發城市,那麼請把他們按照編號從小到大輸出。
第一行有個整數t, 表示測試組數。t≦10。
接下來的每個測試組第一行有個數n, 表示遊覽的城市數, 2 <= n <= 100000。
第二行有n個數, 第i個數表示在i號城市能充油gas(i),0 <= i <= n-1。
第三行有n個數,第i個數表示從i號城市到(i+1)%n號城市會耗油 cost(i), 0 <= i <= n-1, 0 <= gas(i), cost(i) <= 10000。
對於每個測試組,請在一行中輸出可以選擇的出發城市編號,並按照編號從小到大輸出。
224 45 322 33 4
10 1
解題思路:求乙個pre(i)為segma(0<=j<=i) gas(i)-cost(i),用線段樹維護區間區間min,然後對於每乙個位置i,我們要找到i這個位置能跑到多遠,就等效於找到乙個pre(j), 使得pre(j)
#include #include #include #include #include #include #include #include #include using namespace std ;
const int m=100000+10;
int a[m<<1], n;
int ans[m];
int x[m<<1<<2];
void build(int k,int l,int r)
int mid=(l+r)>>1;
build(k<<1,l,mid);
build(k<<1|1,mid+1,r);
x[k]=min(x[k<<1],x[k<<1|1]);}
int f(int k,int l,int r,int p,int minn)
int ret=-1;
int mid=(l+r)>>1;
if(p<=mid) ret=f(k<<1,l,mid,p,minn);
if(~ret) return ret;
return f(k<<1|1,mid+1,r,p,minn);}
int main ()
{ int t;
scanf("%d",&t);
while(t--)
{scanf("%d",&n);
for(int i=0; i
萌新的51之旅
本人是微控制器學習的萌新一枚,學習微控制器等知識目的就是提公升自己專業方面的綜合的素質修養,我將會把自己的每次的學習的內容和心理歷程記錄下來,分享給大家的同時也加深自己的理解。眾所周知,微控制器的入門51是再好不過的選擇,對於我這種剛剛接觸微控制器的人來說,我覺得51微控制器還是十分容易接受的,首先...
萌新的linux之旅12
11.管理網路 1.ip基礎知識 1.ipv4 2進製32位 10進製 172.25.0.10 255.255.255.0 172.25.0.10 ip位址 255.255.255.0 子網掩碼 子網掩碼255位對應的ip位為網路位 子網掩碼0對應的ip位為主機位 2.配置ip 圖形化 1.圖形介面...
萌新的linux之旅19
系統正常引導過程 如果引導程式boot損壞 446位元組是啟動引導 dd if dev zero of dev vda bs 446 count 1 注意一定是446 多了或少了都不能正常引導修復 保證selinux是disabled 然後重啟,發現一直在booting,即無法引導系統系統 關閉虛擬...