hiho1357 小Ho的防护盾
来源:互联网 发布:弹幕网站源码 编辑:程序博客网 时间:2024/04/29 23:50
/*
先倍增枚举T,直到T成功,然后二分,然后二分,找到最小的T
*/
#include<iostream>
#include<algorithm>
using namespace std;
int N,M,K;
int a[100000];
先倍增枚举T,直到T成功,然后二分,然后二分,找到最小的T
*/
#include<iostream>
#include<algorithm>
using namespace std;
int N,M,K;
int a[100000];
bool judge(int T)
{
int num=K,val=M;//保护层个数,可受val点伤害
for(int i=0;i<N;i++)
{
if(a[i]>=val)
{
num--;
val=M;
if(num==0)
return false;
}
else
{
val-=a[i];
}
val=min(M,val+T);//恢复
}
return true;
}
{
int num=K,val=M;//保护层个数,可受val点伤害
for(int i=0;i<N;i++)
{
if(a[i]>=val)
{
num--;
val=M;
if(num==0)
return false;
}
else
{
val-=a[i];
}
val=min(M,val+T);//恢复
}
return true;
}
int main()
{
cin>>N>>M>>K;
for(int i=0;i<N;i++)
cin>>a[i];
int T=1;
while(judge(T)==false)
{
T*=2;
}
int l=T/2,r=T;
//在T和T/2直接二分,T/2肯定不行
while(l<r-1)
{
int mid=(l+r)/2;
if(judge(mid)==false)
l=mid;
else
r=mid;
}
cout<<l+1<<endl;
return 0;
}
{
cin>>N>>M>>K;
for(int i=0;i<N;i++)
cin>>a[i];
int T=1;
while(judge(T)==false)
{
T*=2;
}
int l=T/2,r=T;
//在T和T/2直接二分,T/2肯定不行
while(l<r-1)
{
int mid=(l+r)/2;
if(judge(mid)==false)
l=mid;
else
r=mid;
}
cout<<l+1<<endl;
return 0;
}
0 0
- hiho1357 小Ho的防护盾
- [HihoCoder]#1357 : 小Ho的防护盾
- 小ho的01串
- 小ho的01串
- 小ho的01串
- #1473 : 小Ho的强迫症
- 小ho的01串(枚举)
- 问题 F: 小ho的01串
- 【HPUOJ 1415】小ho的0 【字符串】
- 1415: 小ho的01串 [字符串]
- 1415: 小ho的01串 [字符串]
- HPUOJ 小ho的01串
- 小ho的01串 [字符串]
- HPU1415--小ho的01串
- hiho1505 : 小Hi和小Ho的礼物描述
- #1505 : 小Hi和小Ho的礼物
- hihocode 1505 : 小Hi和小Ho的礼物
- #1473 : 小Ho的强迫症(扩展欧几里得)@
- CSU 1812 三角形和矩形(计算几何,多边形面积交)
- 数值溢出(arithmetic overflow)问题与解决方案
- C++primer 第三章
- AAA Jersey框架初体验 最详细版
- 站一路也是一种历练
- hiho1357 小Ho的防护盾
- Vultr购买VPS搭建shadowsocks服务器
- JavaMail中的国际化(二)
- 修改wamp默认目录路径
- 【Codeforces Round #366 Div. 2】 705C Thor
- 【机器学习】决策树(下)——CART算法及剪枝处理
- Linux 环境配置
- 排序(C++)
- C++小品:bind1st和bind2nd - [我的第一本C++书]