Plants vs. Zombies(二分)
文章目录
- [Plants vs. Zombies](https://zoj.pintia.cn/problem-sets/91827364500/problems/91827370312)
- 题意
- 解题思路
- 代码
Plants vs. Zombies
题意
给以n个数,每个数表示浇一次水可以长高多少,你一共可以移动m次,每次移动只能移动一格,移动一次浇一次水,问你m次以后最小值最大是多少
解题思路
这个题刚开始看到没一点思路,仔细一想就是二分了,我们二分最小值最大是多少,每次check的时候当这个位置没有check值大,我们就浇这个,并且向后移动再回来,这样一直check下去,如果最后步数不够用就说明check值太大了。
有个细节就是最后一步要特判,因为有可能给倒数第二个位置浇水的时候顺便给他浇的满足情况了;
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1000000007;
const int mx=100100;
ll n,m;
ll a[mx];bool check(ll x){ll tem=m;ll y=0,cnt;
// y表示浇上一步 顺便给下一步浇了几次 ll res;for(int i=1;i<n;i++){cnt=a[i]*(y+1);tem--;//走到这个位置就需要花费一步 if(cnt<x){res=x-cnt;y=(res+a[i]-1)/a[i];// 减去使得这个位置满足情况的 步数 tem=tem-y*2LL;if(tem<0) return 0;}else{y=0;}}
// 特判 最后一步
// 如果小于 x 需要浇水 否则就不需要 if(a[n]*y<x){tem--;res=x-(a[n]*y+a[n]);y=(res+a[n]-1)/a[n];tem-=y*2;}// 如果tem 小于0说明步数不够用了 return tem>=0;
}int main(){ios::sync_with_stdio(0);int _;cin>>_;while(_--){cin>>n>>m;ll ma=0; for(int i=1;i<=n;i++){cin>>a[i];ma=max(ma,a[i]);}
// 如果 m<n 肯定不可能的 if(m<n) {cout<<"0\n";continue;}ll l=0LL,r=m*ma+7;ll mid,ans=0;while(l<=r){mid=(l+r)/(ll)2;if(check(mid)){ans=mid;l=mid+1LL;}else{r=mid-1LL;}}cout<<ans<<"\n";} return 0;
}
Plants vs. Zombies(二分)相关推荐
- 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 ...
- ZOJ 4062 Plants vs. Zombies(二分答案)
题目链接:Plants vs. Zombies 题意:从1到n每个位置一棵植物,植物每浇水一次,增加ai高度.人的初始位置为0,人每次能往左或往右走一步,走到哪个位置就浇水一次.求m步走完后最低高度的 ...
- ZOJ 4062 Plants vs. Zombies(二分)
ZOJ 4062 Plants vs. Zombies 意义不明的花妈和芳香. There are plants in DreamGrid's garden arranged in a line. F ...
- Plants vs. Zombies
ZOJ - 4062 BaoBao and DreamGrid are playing the game Plants vs. Zombies. In the game, DreamGrid grow ...
- 植物大战僵尸(Plants vs. Zombies)Mac版本
游戏介绍 可怕的僵尸即将入侵你的家,唯一的防御方式就是你栽种的植物!武装你的植物,切换他们不同的功能,诸如强悍的豌豆射手或樱桃炸弹,更加快速有效的将僵尸阻挡在入侵的道路上.不同的敌人,不同的玩法构成五 ...
- 关于植物大战僵尸| Plants VS Zombies 运行时 Fatal Error
系统/System:Win 10 游戏版本Game Version:Plants VS Zombies 1.0 英文原版 下载链接见PZ的贴吧,或: 植物大战僵尸链接 下载的资源无需安装就可直接运行. ...
最新文章
- Go 学习笔记(58)— Go 第三方库之 etcd/clientv3(连接客户端、PUT、GET、Lease、Op、Txn、Watch 基础概念说明)
- centos 6.4 更新163源
- python怎么写文件-python 头文件怎么写
- 管理费用负数报不了怎么办_我的心脏血管堵了很久,大夫说打不开了,我可怎么办?...
- python matplotlab在jupyter notebook中画图不显示怎么办?(%matplotlib inline)
- 用VC和MinGW导出dll的def和lib(a)文件
- 安装composer
- 《社交网站界面设计(原书第2版)》——1.12 传感器在交互中的作用
- Python如何从社交用户信息中寻找潜在客户?
- Lightroom Classic 教程,如何将照片从 Lightroom 移至Ps,在 Ps 中为照片应用滤镜?
- eclipse混淆打包出错
- 出现“Failed to update Unity Web Player”解决方法
- 程序员薪酬待遇大调查:学哪种语言的最赚钱?
- android传感器type_orientation,android – 已弃用的Sensor.TYPE_ORIENTATION的等效替换
- 北京最好的商标律师解析商标侵权的处罚规定
- zookeeper入门篇
- 自我介绍到底有多重要?如何做好自我介绍?
- CodeForces 1015 C Songs Compression
- 2012年移动SEO启示
- DingTalk钉钉消息通知