直接看代码把,和to the max差不多的动规
#include<iostream>
using namespace std;
int a[200050];
int main()
{
int n,w,l,i,sum,cnt;
while( scanf("%d",&n)!=EOF){
for( i=0; i<n; i++){
scanf("%d%d",&w,&l);
a[i]=w-l;
a[i+n]=a[i];
}
sum=0; cnt=0; w=0;
for( i=0; i<2*n; i++){
sum+=a[i];
if( sum>=0)
cnt++;
else{
if( cnt>w)
w=cnt;
sum=0;
cnt=0;
}
}
if( w<cnt)
w=cnt;
if( w>n)
w=n;
printf("%d\n",w);
}
return 0;
}
本文介绍了一个使用动态规划解决的问题:寻找数组中最长的非负和子数组。通过双倍数组循环和计数技巧,实现了一种有效的方法来解决这个问题。
1010

被折叠的 条评论
为什么被折叠?



