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

题目传送门

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

思路:

  一般此类最小值最大问题都是二分,此题显然也是可以二分植物的高度的。

  确定某一个高度后,也确定了每个植物需要浇几次水,而对于一株植物来说,应当尽可能的在这株植物和后面那个格子来回走,是这株植物迅速超过最低高度(这样的走法是最优的,因为可以想象,如果往后走很多步再走回来,中间浪费的可能性比较大),于是就是对n个植物模拟浇水,考虑一些细节就可以了(二分跳出条件,long long等等)

//#pragma comment(linker,"/STACK:102400000,102400000")
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<cstring>
#include<cmath>
#include<queue>
#include<stack>
#include<stdlib.h>
//#include<unordered_map>
#define lson l,mid,rt<<1
#define rson mid+1,r,(rt<<1)|1
#define CLR(a,b) memset(a,b,sizeof(a))
#define mkp(a,b) make_pair(a,b)
typedef long long ll;
using namespace std;
inline ll read(){ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}
const int maxn=100010;
int n;
ll a[maxn],c[maxn],m;
inline bool judge(ll high){CLR(c,0);ll temp=m;if(m==0)return false;c[1]=a[1],m--;int i=1;for(;i<=n;i++){if(m<=0)break;if(c[i]>=high){if(m>0){c[i+1]=a[i+1];m--;continue;}else{break;}}ll tmp=(ll)ceil((high-c[i])*1.0/a[i]);if(m>2*tmp){m-=2*tmp+1;c[i]+=a[i]*tmp;c[i+1]+=a[i+1]*(tmp+1);continue;}else if(m==2*tmp){c[i]+=a[i]*tmp;c[i+1]+=a[i+1]*tmp;break;}else{break;}}m=temp;for(i=1;i<=n;i++){if(c[i]<high)return false;}return true;
}
int main(){int t;cin>>t;while(t--){cin>>n>>m;ll l=0,r=0,mid,ans;for(int i=1;i<=n;i++){a[i]=read();r=max(r,a[i]*m);}if(m==0){printf("0\n");continue;}while(l<=r){mid=(l+r)>>1;//    printf("mid  %d\n",mid);if(judge(mid)){ans=mid;l=mid+1;}else{r=mid-1;}}printf("%lld\n",ans);}
} 
View Code
Plants vs. Zombies

Time Limit: 2 Seconds      Memory Limit: 65536 KB

BaoBao and DreamGrid are playing the game Plants vs. Zombies. In the game, DreamGrid grows plants to defend his garden against BaoBao's zombies.


Plants vs. Zombies(?)
(Image from pixiv. ID: 21790160; Artist: socha)

There are  plants in DreamGrid's garden arranged in a line. From west to east, the plants are numbered from 1 to  and the -th plant lies  meters to the east of DreamGrid's house. The -th plant has a defense value of  and a growth speed of . Initially,  for all .

DreamGrid uses a robot to water the plants. The robot is in his house initially. In one step of watering, DreamGrid will choose a direction (east or west) and the robot moves exactly 1 meter along the direction. After moving, if the -th plant is at the robot's position, the robot will water the plant and  will be added to . Because the water in the robot is limited, at most  steps can be done.

The defense value of the garden is defined as . DreamGrid needs your help to maximize the garden's defense value and win the game.

Please note that:

  • Each time the robot MUST move before watering a plant;
  • It's OK for the robot to move more than  meters to the east away from the house, or move back into the house, or even move to the west of the house.

Input

There are multiple test cases. The first line of the input contains an integer , indicating the number of test cases. For each test case:

The first line contains two integers  and  (), indicating the number of plants and the maximum number of steps the robot can take.

The second line contains  integers  (), where  indicates the growth speed of the -th plant.

It's guaranteed that the sum of  in all test cases will not exceed .

Output

For each test case output one line containing one integer, indicating the maximum defense value of the garden DreamGrid can get.

Sample Input

2
4 8
3 2 6 6
3 9
10 10 1

Sample Output

6
4

Hint

In the explanation below, 'E' indicates that the robot moves exactly 1 meter to the east from his current position, and 'W' indicates that the robot moves exactly 1 meter to the west from his current position.

For the first test case, a candidate direction sequence is {E, E, W, E, E, W, E, E}, so that we have  after the watering.

For the second test case, a candidate direction sequence is {E, E, E, E, W, E, W, E, W}, so that we have  after the watering.

转载于:https://www.cnblogs.com/mountaink/p/9921988.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis注解模式批量insert方法

2019独角兽企业重金招聘Python工程师标准>>> 方法一:script标签方式 Insert("<script>insert into xxx (channelId,siteId) " "values " "<foreach collection\"list\" item\"item\" index\"index\&quo…

关于eclipse中文注释乱码的问题

今天打开了一个以前的android项目&#xff0c;发现中文注释都成乱码啦&#xff01;&#xff01;&#xff01; 后来在网上找了一会解决方法&#xff0c;知道了中文的编码大体是两种&#xff1a;GBK(汉字内码扩展规范)和UTF-8(8-bit Unicode Transformation Format)。 因此问题的…

python入门(5)使用文件编辑器编写代码并保存执行

python入门&#xff08;5&#xff09;使用文件编辑器编写代码并保存执行 两款文本编辑器&#xff1a; 一个是Sublime Text&#xff0c;免费使用&#xff0c;但是不付费会弹出提示框&#xff1a; 一个是Notepad&#xff0c;免费使用&#xff0c;有中文界面&#xff1a; 请注意&…

linux 批量同步,多主机目录到备份服务器批量同步脚本

为了方便同步多个主机的目录到备份服务器&#xff0c;写了如下脚本&#xff1a;#!/usr/bin/perluse strict;use File::Spec;use File::Basename;use File::Path;#设定存储路径my $storedir"/backup/";while(){chomp;my ($host,$s_path)split /\t/;my $project_namefi…

交流电的有效值rms值_交流电路的功率三角因数原来是这样理解的

点击“电工电气学习”关注即可免费订阅&#xff01;电工学习网&#xff1a;www.diangon.com关注电工学习网官方微信公众号“电工电气学习”&#xff0c;收获更多经验知识。交流电路中消耗的电能可以用直角三角形的三个边来表示&#xff0c;通常称为功率三角形我们在关于交流电路…

CSS3酷炫样式集合

1、30种炫酷CSS鼠标滑过按钮特效 2、CSS 变量实现炫酷鼠标悬浮效果 3、基于CSS3和jQuery实现跟随鼠标方位的Hover特效 4、css3金属质感登录表单 4、CSS3动态下拉菜单 5、CSS3鼠标悬浮特效 转载于:https://www.cnblogs.com/mankii/p/9922981.html

NOIP2008 普及组T4 立体图 解题报告-S.B.S.(施工未完成)

题目描述 小渊是个聪明的孩子&#xff0c;他经常会给周围的小朋友们将写自己认为有趣的内容。最近&#xff0c;他准备给小朋友们讲解立体图&#xff0c;请你帮他画出立体图。 小渊有一块面积为m*n的矩形区域&#xff0c;上面有m*n个边长为1的格子&#xff0c;每个格子上堆了一些…

HBase基础知识(三):HBase架构进阶、读写流程、MemStoreFlush、StoreFile Compaction、Region Split

1. 架构原理 1&#xff09;StoreFile 保存实际数据的物理文件&#xff0c;StoreFile以HFile的形式存储在HDFS上。每个Store会有一个或多个StoreFile&#xff08;HFile&#xff09;&#xff0c;数据在每个StoreFile中都是有序的。 2&#xff09;MemStore 写缓存&#xff0c;由于…

第一章节测试

大家在做第一章测试题时&#xff0c;需要复习如下相关知识点&#xff1a;编译型VS解释型、变量名规范、数据类型、程序交互、格式化输出、运算符、流程控制。1.简述编译型与解释型语言的区别&#xff0c;且分别列出你知道的那些语言属于编译型&#xff0c;哪些属于解释型。2.执…

VS2015升级Update2之后Cordova程序提示:此应用程序无法在此电脑上运行

VS2015在升级到Update2之后&#xff0c;有可能出现如下异常&#xff0c;在运行Cordova项目时提示&#xff1a; 查看输出面板会有乱码错误信息&#xff1a; 出现此问题的原因是在于npm程序损坏了。vs调用的npm程序并不是在node安装目录下的npm&#xff0c;而是在&#xff1a; C:…

双鉴探测器是哪两种探测方式结合_老师傅带你看懂火灾探测器的种类和基本原理,看完涨知识了...

为什么极早期的火灾探测十分关键&#xff1f;火灾的产生我们生活的环境中充满着大量的可燃物质&#xff0c;空气中的氧气含量通常也足够满足燃烧条件。但是还有另外一个形成火灾的条件就是&#xff1a;点火能量必须可以驱使氧化的过程开始。点火能量源可以是多种多样的&#xf…

分析不同类型页面渲染过程

现在让我们看看浏览器从网络上加载资源所耗费的时间&#xff08;我们忽略从缓存以及从CDN等中间商网络上加载资源&#xff09;&#xff0c;我们首先要知道的是&#xff1a; 一个到无服务的网路往返 (传播延迟) 大约100ms服务器对于HTML文档的响应大约100ms&#xff0c;对于其他…

ImageLoader加载图片

先导universal-image-loader-1.9.3包 在application配置 android:name".MyApplication" intent权限 1 package com.ch.day13_imageloaderdemo;2 3 import java.io.File;4 5 import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; 6 impor…

Access denied for user 'root'@'localhost' (using password: YES) 问题解决小记

初学php&#xff0c;按照视频安装后好mysql后 终端运行命令 mysql -u root -p 然后输入安装mysql时输入的密码六个1&#xff0c;会报这样的错误&#xff1a;Access denied for user rootlocalhost (using password: YES) &#xff1b; 百度了一大堆&#xff0c;大海捞针一般找…

创业者具备的五大技能_一、如今大学生创业需要具备哪些知识与技能?

我参加过两次互联网&#xff0b;大赛&#xff0c;分别获得过省赛的金奖与银奖&#xff0c;还曾参加山东省大大小小比赛26场&#xff0c;金奖累计获得12次。对当代创业的大学生所应具备哪些基本素质深有体会。&#xff08;1&#xff09;技能&#xff1a;1、自我认知及科学规划能…

BZOJ3387栅栏行动

首先&#xff0c;很容易想到Dp。设f[i][0]表示第i个栅栏走左边的最短路&#xff0c;f[i][1]表示第i个栅栏走右边的最短路。 所以&#xff0c;我们要找一个刚好在第i个栅栏的左右边界下面的栅栏。如图所示&#xff1a; 则有&#xff1a; f[i][0] min(f[k][0] |Left[i] - Left[…

小程序沉浸式_古北水镇红叶祭嵌入戏精学院 全新文旅沉浸模式让游客嗨起来...

2020年10月17日-24日&#xff0c;古北水镇第二届红叶祭火热来袭。今年除了“超级漫展二次元度假”的模式&#xff0c;古北水镇与顶级沉浸互动体验运营方——INX戏精学院合作&#xff0c;在深度体验空间的同时&#xff0c;加入了互动式的实景游戏体验&#xff0c;通过演员互动&a…

又拍云刘平阳,理性竞争下的技术品牌提升之道

云服务市场趋渐平稳&#xff0c;在这种情况下&#xff0c;就需要通过对某一项技术的深入应用来实现服务的精致化。同时&#xff0c;对品牌的打造和包装也必不可少。\\又拍云在2010年开始提供云服务&#xff0c;经过多年的发展&#xff0c;以及市场策略的转变&#xff0c;决定对…

iOS开发简单高效的数据存储

在iOS开发过程中&#xff0c;不管是做什么应用&#xff0c;都会碰到数据保存的问题&#xff0c;你是用什么方法来持久保存数据的&#xff1f;这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题&#xff0c;而且大家对这个问题的热情持续高涨。本文主要从概念上把“数据…

回滚机制_【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践

01概述数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时&#xff0c;在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据&#xff0c;破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。…