fzu月赛 2203 单纵大法好 二分
Accept: 8 Submit: 18
Time Limit: 5000 mSec Memory Limit : 65536 KB
Problem Description
人在做,天在看,单纵不怂保平安
众娘皆为轮回来,敢教POI进夜战。
勿怪战列低智商,航母不是一个样?
假摔不虚有损管,大破进击是真相!
老S最近喜欢上某个搜集战舰的游戏,这个游戏中很重要的一个内容是能编排自己的战舰,通过出击完成任务来获取资源或新的战舰。大家都说老S是一个“直男”,所以他喜欢把战舰排成一条直线。目前老S正准备完成某个新的任务--“困难级丹麦海峡”,可以将地图视为1*N的一列方格(下标为1,2,...,N),老S有K列战舰,每列战舰长度为A。老S可以将自己的战舰布局在地图中的任意位置,但是两列战舰之间至少要有一个空格子,并且显然战舰是不能重叠放置的。老S通过内部人员率先知道了敌军的炮弹将会打向那些位置,老S希望使自己的舰队尽量晚的被第一次击中。请输出老S的舰队最晚将被敌方炮弹第一次击中?如果老S的舰队可以不被敌方炮弹击中则输出-1。
Input
包含多组数据
每组数据第一行有3个整数分别为N,K,A 分别表示地图长度,老S拥有的战舰数,每艘战舰的长度。(1<=N,K,A<=200000)
第二行有1个整数M,表示敌方炮弹数。 (1<=M<=N)
第三行有M个整数,Xi表示第i个敌方炮弹将击中位置Xi (1<=Xi<=N)击中位置Xi (1<=Xi<=N)
Output
仅有一个整数ANS,表示老S最晚将被哪个炮弹第一次击中
Sample Input
Sample Output
Source
FOJ有奖月赛-2015年10月
思路:二分第m个炮弹,检验:这m个炮弹把n个空格分成了t段连续的空位,对于每一段长度为g的空位,设能放x艘船, 应满足:A*x + (x-1) <= g, 得: x = (g+1) / (A+1)
,其中每两艘船之间要一个空格,放x艘船至少(x-1)
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std; const int N = 2e5 + 10;
int n, k, m, A;
int pos[N], r[N]; int calc(int v) {
return (v + 1) / (A + 1);
}
bool check(int p) {
int cnt = 0;
for(int i = 1; i <= p; ++i) r[i] = pos[i];
sort(r + 1, r + p + 1);
for(int i = 2; i <= p; ++i)
{
int len = r[i] - r[i - 1] - 1;
cnt += calc(len);
}
cnt += calc(r[1] - 1);
cnt += calc(n - r[p]);
if(cnt >= k) return true;
else return false;
}
int main()
{
while(~scanf("%d%d%d", &n, &k, &A))
{
scanf("%d", &m);
for(int i = 1; i <= m; ++i) scanf("%d", &pos[i]); int low = 1, high = m; while(low < high)
{
int mid = (low + high) >> 1;
if(!check(mid)) high = mid;
else low = mid + 1;
}
if(check(m))
puts("-1");
else
printf("%d\n", low);
}
return 0;
}
fzu月赛 2203 单纵大法好 二分的更多相关文章
- FZU 2203 单纵大法好 (二分 && 贪心)
题意 : 老S最近喜欢上某个搜集战舰的游戏,这个游戏中很重要的一个内容是能编排自己的战舰,通过出击完成任务来获取资源或新的战舰.大家都说老S是一个“直男”,所以他喜欢把战舰排成一条直线.目前老S正准备 ...
- FOJ 2203 单纵大法好
二分答案+验证 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm&g ...
- FZU月赛20160416 ABEF
Problem A ABCDEFG Accept: 302 Submit: 442Time Limit: 1000 mSec Memory Limit : 32768 KB Proble ...
- 【补】【FZU月赛】【20150515】【待续】
A FZU-2054 水题,比较A,B双方的最大值即可. B FZU-2055 string,截取‘.’之前和之后然后和给出的文件夹名和拓展名比较就好了啊,不明白为什么那么多人错. 代码: #incl ...
- FZU 1575 小学生的游戏【模拟二分】
某天,无聊的小斌叫上几个同学玩游戏,其中有比较笨的小兴,比较傻的小雪,可爱的小霞和自以为是的小楠.他们去找聪明的小明去给他们当裁判.判定谁取得游戏胜利. 而这个游戏是由小斌想个1到10000000的数 ...
- Fzu月赛11 老S的旅行计划 dij
Description 老S在某城市生活的非常不自在,想趁着ICPC举办期间在省内转转.已知老S所在的省有N个城市,M条无向边(对于某一对结点可能出现重边).由于省内的交通相当糟糕,通过某条边所需要花 ...
- fzu月赛(2015.11)(思维)
Problem 2205 据说题目很水 Sunday最近对图论特别感兴趣,什么欧拉回路什么哈密顿回路,又是环又是树.在看完一本书后,他对自己特别有信心,便找到大牛牛犇犇,希望他出一题来考考自己. 在遥 ...
- 【FZU】2152 文件系统
Problem 2152 文件系统 Accept: 63 Submit: 126 Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- FZU Problem 2156 Climb Stairs DP
http://acm.fzu.edu.cn/problem.php?pid=2156 题目大意: 爬楼梯,要爬到n这个位置,每次可以走x也可以走y,然后一定要经过A和B两点,求最终到达n的方案数. 思 ...
随机推荐
- .net在当前日期的基础上加一天
比如今天是:2015-11-10 18:57:01,在这个基础上加一天,那么就是2015-11-11 18:57:01,代码如下: DateTime now_dt = DateTime.Now; ). ...
- [Android Pro] APK
svn updatesvn status ls -alsvn log --limit 8 > RELEASE_NOTE.txt cat RELEASE_NOTE.txt chmod a+x gr ...
- 群内大神与你交流WEB经验 业内专家指点就职技巧
就知道你是一个有理想要抱负的人,不会满足于做一个初级的前端开发工程师.在接下来的这个阶段,我们将走上前端开发的进阶之路,将自己的能力再往上拔高一个等级.同样,薪资也会往上升一个等级!但是,如果你是一个 ...
- linux more AND less
================================more================================ more 是我们最常用的工具之一,最常用的就是显示输出的内容, ...
- HTTP长连接和短连接原理浅析
原文出自:HTTP长连接和短连接原理浅析
- 51nod1006(lcs)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1006 题意:中文题诶- 思路:最长公共子序列模板题- 我们用d ...
- 个推+DCLOUD,推送消息和透传消息
DCLOUD方案中集成了个推方案,最好是用个推来做推送相关的东西 消息分2类: 1.推送消息,这种一般会出现在手机的最上面的通知栏,用户是肯定会知道的 2.透传消息,这种一般就是一个Alert提示框, ...
- Logcat打印调试信息
Android Logcat调试中的V.D.I.W.E的分别代表什么? Log.v -- 黑色 -- verbose infoLog.d -- 蓝色 -- debug infoLog.i -- 绿色 ...
- MySql中delimiter的作用是什么?
这个命令与存储过程没什么关系吧.其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了.默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束,那么 ...
- COALESCE NVL NVL2 DECODE
1 COALESCE 語法:COALESCE(expr1, expr2, ..., exprn) n>=2 作用:COALESCE returns the first non-null expr ...