文章目录

  • [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(二分)相关推荐

  1. zoj4062 Plants vs. Zombies 二分+模拟(贪心的思维)

    题目传送门 题目大意:有n个植物排成一排,标号为1-n,每株植物有自己的生长速度ai,每对植物浇一次水,该株植物就长高ai,现在机器人从第0个格子出发,每次走一步,不能停留,每一步浇一次水,总共可以走 ...

  2. ZOJ4062 Plants vs. Zombies 二分

    ZOJ4062 Plants vs. Zombies 一机器人给植物浇水,浇水之前必须移动一格,移动后必须浇水,从1~n的位置上有n个植物,每个植物都有自己的生长速度, 每浇一次生长一次,机器人初始位 ...

  3. 2018 ACM-ICPC 亚洲区域赛青岛站 E - Plants vs. Zombies(二分)

    题意 有n个植物,m次移动1格的机会, 以下n个数a1-an,代表每一次浇水(其实就是访问),该处的植物会增加防御值ai,初始防御值di=0 n个植物分别在坐标轴1,-,n的位置,浇水机的位置初始在0 ...

  4. Plants vs. Zombies【二分】

    ZOJ - 4062 Plants vs. Zombies BaoBao and DreamGrid are playing the game Plants vs. Zombies. In the g ...

  5. ZOJ 4062 Plants vs. Zombies(二分答案)

    题目链接:Plants vs. Zombies 题意:从1到n每个位置一棵植物,植物每浇水一次,增加ai高度.人的初始位置为0,人每次能往左或往右走一步,走到哪个位置就浇水一次.求m步走完后最低高度的 ...

  6. ZOJ 4062 Plants vs. Zombies(二分)

    ZOJ 4062 Plants vs. Zombies 意义不明的花妈和芳香. There are plants in DreamGrid's garden arranged in a line. F ...

  7. Plants vs. Zombies

    ZOJ - 4062 BaoBao and DreamGrid are playing the game Plants vs. Zombies. In the game, DreamGrid grow ...

  8. 植物大战僵尸(Plants vs. Zombies)Mac版本

    游戏介绍 可怕的僵尸即将入侵你的家,唯一的防御方式就是你栽种的植物!武装你的植物,切换他们不同的功能,诸如强悍的豌豆射手或樱桃炸弹,更加快速有效的将僵尸阻挡在入侵的道路上.不同的敌人,不同的玩法构成五 ...

  9. 关于植物大战僵尸| Plants VS Zombies 运行时 Fatal Error

    系统/System:Win 10 游戏版本Game Version:Plants VS Zombies 1.0 英文原版 下载链接见PZ的贴吧,或: 植物大战僵尸链接 下载的资源无需安装就可直接运行. ...

最新文章

  1. Go 学习笔记(58)— Go 第三方库之 etcd/clientv3(连接客户端、PUT、GET、Lease、Op、Txn、Watch 基础概念说明)
  2. centos 6.4 更新163源
  3. python怎么写文件-python 头文件怎么写
  4. 管理费用负数报不了怎么办_我的心脏血管堵了很久,大夫说打不开了,我可怎么办?...
  5. python matplotlab在jupyter notebook中画图不显示怎么办?(%matplotlib inline)
  6. 用VC和MinGW导出dll的def和lib(a)文件
  7. 安装composer
  8. 《社交网站界面设计(原书第2版)》——1.12 传感器在交互中的作用
  9. Python如何从社交用户信息中寻找潜在客户?
  10. Lightroom Classic 教程,如何将照片从 Lightroom 移至Ps,在 Ps 中为照片应用滤镜?
  11. eclipse混淆打包出错
  12. 出现“Failed to update Unity Web Player”解决方法
  13. 程序员薪酬待遇大调查:学哪种语言的最赚钱?
  14. android传感器type_orientation,android – 已弃用的Sensor.TYPE_ORIENTATION的等效替换
  15. 北京最好的商标律师解析商标侵权的处罚规定
  16. zookeeper入门篇
  17. 自我介绍到底有多重要?如何做好自我介绍?
  18. CodeForces 1015 C Songs Compression
  19. 2012年移动SEO启示
  20. DingTalk钉钉消息通知

热门文章

  1. 江西 南昌 富士康 java,好音讯!富士康智能科技小镇落户小蓝经开区!总投资达110亿元...
  2. 新西兰访问学者的签证材料
  3. 【鸟哥的linux初级笔记——01】
  4. Mesa Overview
  5. 安装到部署 火绒安全企业新品究竟有多简?
  6. 尝试用python解概率题,并祝大小朋友儿童节快乐
  7. 项目经理必须知道的7种项目管理方案
  8. 南邮 OJ 1567 Suspicious Stocks
  9. 深度学习-VGG16原理详解
  10. 嵌入式系统和嵌入式操作系统