2018ACM/ICPC 青岛现场赛 E题 Plants vs. Zombies
题意:
你的房子在0点,1,2,3,...,n(n<=1e5)点每个点都有一颗高度为0的花,浇一次水花会长a[i]。
你有一个机器人刚开始在你家,最多走m步,每一步只能往前走或者往后走,每走到一个地方除了房子都会给花浇水,问m步以后最低那朵花的高度最大是多少。
思路:二分,并且可以证明左右横跳(即这一个点不够我们就来回走一直到够高度为止)。
需要注意步数用完直接break,每一朵花浇够次数立刻走向下一朵花(如果还有步数)。
代码:
#include<bits/stdc++.h>
#define ll long long
#define maxn 200010
using namespace std;
ll n,m,k;
ll c[maxn],a[maxn];
ll ans,tmp,sum;
inline ll read(){
ll x=,f=;
char ch=getchar();
while(ch<''||ch>''){
if(ch=='-')
f=-;
ch=getchar();
}
while(ch>=''&&ch<=''){
x=x*+ch-'';
ch=getchar();
}
return x*f;
} inline void print(ll x){
if(x<){
putchar('-');
x=-x;
}
if(x>)
print(x/);
putchar(x%+'');
}
bool jud(ll mid)
{
for(int i=;i<=n;i++) c[i]=;
ll cnt=m-;c[]=a[];
int i=;
for(;i<=n;i++)
if(i<n){
if(cnt==) break;
ll tmp=(mid-c[i]+a[i]-)/a[i];
if(tmp<=) {cnt--;c[i+]+=a[i+];continue;}
if(cnt<tmp*) break;
cnt-=tmp*;
c[i]+=a[i]*tmp;
c[i+]+=a[i+]*tmp;
if(cnt==) break;
cnt--;
c[i+]+=a[i+];
if(cnt==) break;
}
else
{
if(cnt==) break;
if(c[i]>=mid) break;
else
{
ll tmp=(mid-c[i]+a[i]-)/a[i];
if(cnt<tmp*) return ;
else c[i]+=a[i]*tmp;
}
}
for(;i<=n;i++)if(c[i]<mid) return ;
return ;
}
int main()
{
ll T,cas=;
T=read();
while(T--)
{
n=read();m=read();
ll l=,r=m;
for(int i=;i<=n;i++)
{a[i]=read();
if(r<m*a[i]) r=m*a[i];
}
if(m==) {puts("");continue;}
ll ans=r;
while(l<r)
{
ll mid=(l+r)/;
if(jud(mid)) {l=mid+;ans=mid;}
else r=mid;
}
print(ans);
putchar('\n');
}
return ;
}
2018ACM/ICPC 青岛现场赛 E题 Plants vs. Zombies的更多相关文章
- 2018 ACM-ICPC青岛现场赛 B题 Kawa Exam 题解 ZOJ 4059
题意:BaoBao正在进行在线考试(都是选择题),每个题都有唯一的一个正确答案,但是考试系统有m个bug(就是有m个限制),每个bug表示为第u个问题和第v个问题你必须选择相同的选项,题目问你,如果你 ...
- hdu 4435 第37届ACM/ICPC天津现场赛E题
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题目:给出N个城市,从1开始需要遍历所有点,选择一 ...
- 2013 ACM/ICPC 长沙现场赛 A题 - Alice's Print Service (ZOJ 3726)
Alice's Print Service Time Limit: 2 Seconds Memory Limit: 65536 KB Alice is providing print ser ...
- 2013 ACM/ICPC 长沙现场赛 C题 - Collision (ZOJ 3728)
Collision Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge There's a round medal ...
- hdu 4432 第37届ACM/ICPC天津现场赛B题
题目大意就是找出n的约数,然后把约数在m进制下展开,各个数位的每一位平方求和,然后按m进制输出. 模拟即可 #include<cstdio> #include<iostream> ...
- 2013杭州现场赛B题-Rabbit Kingdom
杭州现场赛的题.BFS+DFS #include <iostream> #include<cstdio> #include<cstring> #define inf ...
- Gym101981D - 2018ACM-ICPC南京现场赛D题 Country Meow
2018ACM-ICPC南京现场赛D题-Country Meow Problem D. Country Meow Input file: standard input Output file: sta ...
- HDU 4800/zoj 3735 Josephina and RPG 2013 长沙现场赛J题
第一年参加现场赛,比赛的时候就A了这一道,基本全场都A的签到题竟然A不出来,结果题目重现的时候1A,好受打击 ORZ..... 题目链接:http://acm.hdu.edu.cn/showprobl ...
- 2018ICPC青岛现场赛 重现训练
先贴代码,以及简要题解. 和一个队友下午双排打了一下,队友光速签到,我签的J被嫌弃写得慢以及演员...然后我秒出了E了思路然而难以置信这么简单的思路当时才过了十几个,于是发现D.F不是太好做.最后交了 ...
随机推荐
- PHP filemtime() 函数
定义和用法 filemtime() 函数返回文件内容上次的修改时间. 若成功,则时间以 Unix 时间戳的方式返回.若失败,则返回 false. 语法 filemtime(filename) 参数 描 ...
- Graph Database & 图形数据库
Graph Database 图形数据库 https://en.wikipedia.org/wiki/Graph_database cayley https://github.com/cayleygr ...
- poj2135 Farm Tour(费用流)
Description When FJ's friends visit him on the farm, he likes to show them around. His farm comprise ...
- linux 命令大全,我去
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...
- selenium_UI自动化——篇1(基础)
元素定位的几种方式: (1)driver.find_element_by_id("idname") (2)driver.find_element_by_name("nam ...
- 如何设置Java虚拟机JVM启动内存参数
Tomcat默认的Java虚拟机JVM启动内存参数大约只有64MB或者128MB,非常小,远远没有利用现在服务器的强大内存,所以要设置Java虚拟机JVM启动内存参数.具体设置方法为: Tomcat修 ...
- mysql、mybatis遇到问题集合
1.错误描述 使用JDBC连接MySql时出现:The server time zone value '�й���ʱ��' is unrecognized or represents more th ...
- ubuntu 指定用户执行脚本
方法 创建可执行脚本 以下以脚本名称为superset.sh为例,具体的脚本内容大家可以自己发挥. cd ~ vi superset.sh # 脚本内容自己写好后保存 修改脚本权限 sudo chmo ...
- Python常用模块-摘要算法(hashlib)
Python常用模块-摘要算法(hashlib) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MD5算法参数详解 1.十六进制md5算法摘要 #!/usr/bin/env p ...
- 说说SQL Server的数据类型
以SQL Server为例,SQL Server的数据类型总共有33种,归纳为一下类别: 精确数字 Unicode字符串 近似数字 二进制字符串 日期和时间 其他数据类型 字符串 1.数字数据类型 ...