ZOJ 4062 Plants vs. Zombies(二分答案)
题目链接:Plants vs. Zombies
题意:从1到n每个位置一棵植物,植物每浇水一次,增加ai高度。人的初始位置为0,人每次能往左或往右走一步,走到哪个位置就浇水一次。求m步走完后最低高度的植物最大高度为多少。
题解:明显二分答案的题目。check时从左往右遍历,贪心思路:把该位置满足同时给后面减少浇水次数,策略是该位置和后一个位置左右横跳,注意最后一个位置的时候,如果满足就不需要再跳过去。
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; 6 7 const int N=1e5+10; 8 typedef long long ll; 9 ll a[N],d[N],n,m; 10 11 bool check(ll k){ 12 for(ll i=1;i<=n;i++) d[i]=0; 13 ll cnt=m; 14 for(ll i=1;i<=n;i++){ 15 if(cnt==0){ 16 if(i==n&&d[i]>=k) return true; 17 return false; 18 } 19 cnt--; 20 d[i]+=a[i]; 21 if(d[i]<k){ 22 ll tmp=k-d[i]; 23 ll c=tmp/a[i]; 24 if(tmp%a[i]!=0) c++; 25 if(cnt>=2*c){ 26 cnt-=2*c; 27 d[i]+=(a[i]*c); 28 d[i+1]+=(a[i+1])*c; 29 } 30 else return false; 31 } 32 } 33 return true; 34 } 35 36 int main(){ 37 int t; 38 scanf("%d",&t); 39 40 while(t--){ 41 ll ans=0; 42 scanf("%lld%lld",&n,&m); 43 for(ll i=1;i<=n;i++){ 44 scanf("%lld",&a[i]); 45 } 46 ll l=0,r=1e17+100; 47 while(l<=r){ 48 ll mid=(l+r)/2; 49 if(check(mid)) ans=max(ans,mid),l=mid+1; 50 else r=mid-1; 51 } 52 printf("%lld\n",ans); 53 } 54 55 return 0; 56 }
View Code
转载于:https://www.cnblogs.com/ehanla/p/9974960.html
ZOJ 4062 Plants vs. Zombies(二分答案)相关推荐
- ZOJ 4062 Plants vs. Zombies(二分)
ZOJ 4062 Plants vs. Zombies 意义不明的花妈和芳香. There are plants in DreamGrid's garden arranged in a line. F ...
- ZOJ 4062 Plants vs. Zombies 2018 ICPC 青岛站 E Plants vs. Zombies
ZOJ 4062 二分 哎,二分,二分,二分,我咋就没想到啊,在一篇博客上看到一句话: 一般此类最小值最大问题都是二分,此题显然也是可以二分植物的高度的. 博客链接:https://www.cnblo ...
- 2018青岛ICPC ZOJ 4062: Plants vs. Zombies(二分)
题意: 一条横轴上有n棵植物,第i棵植物在位置i上,生长速度为di,初始高度都为0,你的家在位置0上 你有一个洒水车,第0秒时在家门口(位置0),之后它每1秒都可以往左或往右移动一个单位(往左往右自己 ...
- zoj4062 Plants vs. Zombies 二分+模拟(贪心的思维)
题目传送门 题目大意:有n个植物排成一排,标号为1-n,每株植物有自己的生长速度ai,每对植物浇一次水,该株植物就长高ai,现在机器人从第0个格子出发,每次走一步,不能停留,每一步浇一次水,总共可以走 ...
- ZOJ4062 Plants vs. Zombies 二分
ZOJ4062 Plants vs. Zombies 一机器人给植物浇水,浇水之前必须移动一格,移动后必须浇水,从1~n的位置上有n个植物,每个植物都有自己的生长速度, 每浇一次生长一次,机器人初始位 ...
- 2018 ACM-ICPC 亚洲区域赛青岛站 E - Plants vs. Zombies(二分)
题意 有n个植物,m次移动1格的机会, 以下n个数a1-an,代表每一次浇水(其实就是访问),该处的植物会增加防御值ai,初始防御值di=0 n个植物分别在坐标轴1,-,n的位置,浇水机的位置初始在0 ...
- Plants vs. Zombies【二分】
ZOJ - 4062 Plants vs. Zombies BaoBao and DreamGrid are playing the game Plants vs. Zombies. In the g ...
- Plants vs. Zombies ZOJ - 4062
参考博客: https://blog.csdn.net/lzc504603913/article/details/83824416 题目描述 有n个植物排成一行,从1-n.每个植物交一次水可以长高a[ ...
- Plants vs. Zombies【二分答案】
题目链接 题意:有N盆花,现在有一个浇花机器人,当它走到一个花盆面前的时候,可以给该花浇对应的a[i]的权值的防御值(植物大战僵尸嘛),然后呢,机器人一共可以走M步,问最后防御权值最小的花的最大权是多 ...
最新文章
- Kafka史上最详细原理总结 ----看完绝对不后悔
- IOS TextField设置大全
- mysql配置读写分离无效_MySQL数据库的同步配置+MySql 读写分离
- v3s 全志_基于全志V3s的开源开发板,提供pcb和系统源码和资料
- TCP/IP学习笔记(三)TCP流量控制以及滑动窗口
- 看《Linux入门讲座》随记
- aix查看oracle进程内存,Aix 查看进程占用内存大小(按从大小排列)
- WPF Unleashed Chapter 2:XAML Demystified 翻译(第二部分)
- dpkg: 处理归档 /var/cache/apt/archives/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb (--unpack)时出错: 无法安装 /lib/
- 通达信里的统计函数及区块背景函数
- Linux- 日常运维-w-查看系统负载
- 麦克纳姆轮速度分解再分析
- 一个人的简历(林肯)
- Exchange server 2007启用 设置pop3
- Hive(四)——数据操作
- matlab-lsqcurvefit函数 初始值选取
- 项目实战(一)HTML5+CSS3+JS完成前端网站的制作
- JQuery 简单表单验证
- 《游戏设计艺术(第2版)》——学习笔记(13)第13章 游戏机制必须平衡
- 【1024个人爆款文章】Android 安卓原生UI实现游戏《俄罗斯方块》,算法太多,把我写崩溃了,附源码