codeforces 279B - Books
2017-04-07 23:18
399 查看
二分查找。
#include<cstdio>
int n,t,a[100000+5];
bool judge(int num)
{
int sum=0;
for(int j=1;j<=num;j++) sum+=a[j];
if(sum<=t) return true;//先把第一本书作为开始,读num本书,算出耗时
for(int i=2;i<=n-num+1;i++)
{
sum=sum-a[i-1]+a[i+num-1];//对于之后的第二本、第三本所为开始的读num本书,只要去掉最前面一个,再在后面添上一个就可以了,算是一定的时间复杂度上的优化
if(sum<=t) return true;
}
return false;
}
int main()
{
scanf("%d%d",&n,&t);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
int st=0,ed=n+1,mid;
while(ed-st>1)
{
mid=st+(ed-st)/2;
if(judge(mid)) st=mid;
else ed=mid;
}
printf("%d\n",st);
}
#include<cstdio>
int n,t,a[100000+5];
bool judge(int num)
{
int sum=0;
for(int j=1;j<=num;j++) sum+=a[j];
if(sum<=t) return true;//先把第一本书作为开始,读num本书,算出耗时
for(int i=2;i<=n-num+1;i++)
{
sum=sum-a[i-1]+a[i+num-1];//对于之后的第二本、第三本所为开始的读num本书,只要去掉最前面一个,再在后面添上一个就可以了,算是一定的时间复杂度上的优化
if(sum<=t) return true;
}
return false;
}
int main()
{
scanf("%d%d",&n,&t);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
int st=0,ed=n+1,mid;
while(ed-st>1)
{
mid=st+(ed-st)/2;
if(judge(mid)) st=mid;
else ed=mid;
}
printf("%d\n",st);
}
相关文章推荐
- codeforces 279-B. Books(尺取)
- [Codeforces] 279B - Books
- codeforces 279 B. Books
- codeforces--279--
- Codeforces 552B - Vanya and Books(数学)
- CodeForces-552B - Vanya and Books
- Codeforces 279 B Books
- [CF 279B]Books[二分]
- CodeForces 552B-Vanya and Books
- CodeForces 554A-Kyoya and Photobooks【规律】
- 【33.33%】【codeforces 552B】Vanya and Books
- ACM刷题之codeforces————Ya Rajaie and Books
- CodeForces 740A Alyona and copybooks
- CodeForces 740A - Alyona and copybooks(思维)
- [树上LIS 线段树合并] Codeforces 490F #279 (Div. 2) F. Treeland Tour
- Books CodeForces - 279B
- codeforces 381A. Alyona and copybooks=
- 【76.83%】【codeforces 554A】Kyoya and Photobooks
- codeforces 740A Alyona and copybooks
- [Codeforces 877F] Ann and Books