<a target=_blank href="http://acm.hdu.edu.cn/showproblem.php?pid=1422">点击打开链接</a><span id="transmark"></span> ///最长连续子段 由最大连续子段和变形的到 ///统计出最大长度即可 #include<bits/stdc++.h> #define INF 0x3f3f3f3f #define M 100001 using namespace std; struct node { int L,R,num; } len,Max; int p[M]; int main() { int n; while(~scanf("%d",&n)) { p[0]=0; for(int i=0 ; i<n; i++) { int t,w; scanf("%d%d",&w,&t); p[i]=w-t; } /// memset(dp,0,sizeof(dp)); Max.L=0; Max.R=0; Max.num=1; int sum=p[0]; len.L=0; len.R=0; len.num=1; for(int j=1; j<2*n; j++) { int i=j%n; if(sum<0) { sum=p[i]; len.num=1; len.L=j; len.R=j; } else { if(j-1-len.L>=n-1) { Max.num=n; break; } if(len.num>Max.num) Max=len; sum+=p[i]; len.num+=1; len.R=j; } } printf("%d\n",Max.num); } return 0; }