BUAA1389愤怒的DZY(最大值最小化)
http://acm.buaa.edu.cn/problem/1389/
愤怒的DZY
【问题描述】
“愤怒的小鸟”如今已经是家喻户晓的游戏了,机智的WJC最近发明了一个类似的新游戏:“愤怒的DZY”。游戏是这样的:玩家有K个DZY,和N个位于不同的整数位置:X1,X2,…,XN的干草包。每一个DZY都可以站在某个位置:X 扔炸弹,扔完炸弹,这个DZY就会挂掉。扔炸弹的半径为R(且每次每个DZY扔炸弹的半径不变,都是R,而站的位置X可以改变),破坏范围为的X−R~X+R(即位置在X-R到X+R(含X-R,X+R)都会被炸掉)。现在给定DZY的个数K,和干草堆的位置:X1,X2,…,XN,问你最小的可以炸掉所有干草堆的半径R。
【输入说明】
第一行两个正整数N,K。接下来N行,每行一个数,依次是:X1,X2,…,XN。
【输出说明】
仅一行,代表最小的可以炸掉所有干草堆的半径R。
【样例输入】
7 2
20
25
18
8
10
3
1
【样例输出】
5
命题人:Hacker_WJC
学习了上题的最大值最小化,这题就很好解决了,数据n卡到10e6
对位置进行从小到大排序,枚举直径,不妨设最小直径为1,最大就是前后两点距离 a[n] - a[1],然后从a[1]开始枚举直径为mid是否可以,如果比a[i] + mid小就取下一个,否则cnt++,以该点为起点在判断
半径采用进一法输出,
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
const int MAX = + ;
int a[MAX];
int n,k,maxn,minn;
void input()
{
minn = maxn = ;
scanf("%d%d", &n, &k);
for(int i = ; i <= n; i++)
{
scanf("%d", &a[i]);
}
sort(a + , a + n + );
minn = ;
maxn = a[n] - a[];
}
bool is_ok(int mid)
{
bool ok = true;
int start = ,End = ;
int cnt = ;
while(End <= n)
{
if(a[End] - a[start] <= mid)
{
End++;
}
else
{
cnt++;
if(cnt > k)
{
ok = false;
break;
}
start = End;
}
}
return ok;
}
int solve()
{
int x = minn, y = maxn; while(x <= y)
{
int mid = (x + y) / ;
if(is_ok(mid))
y = mid - ;
else
x = mid + ;
}
return x;
}
int main()
{
input();
int ans = solve();
if(ans % == )
printf("%d\n", ans / );
else
printf("%d\n", ans / + );
}
BUAA1389愤怒的DZY(最大值最小化)的更多相关文章
- 九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...
- UVA 714 Copying Books 最大值最小化问题 (贪心 + 二分)
Copying Books Before the invention of book-printing, it was very hard to make a copy of a book. A ...
- hdu 4004 最大值最小化
http://acm.hdu.edu.cn/showproblem.php?pid=4004 一条线段长度为L,线段上有n个点,最多选取 m-1 个点,使得包括线段端点在内的相邻点之间的最大距离值最小 ...
- Crowd Control(输出不在最大值最小化的最短路上的边)
题意: 就是求完最大值最小化 然后输出在这条最大值最小化的最短路上的点的不在最短路上的边,emm.... 解析: 很明显,先套spfa最大值最小化模板,emm... 在更新d的时候 用一个pre去记 ...
- UVa 714 Copying books 贪心+二分 最大值最小化
题目大意: 要抄N本书,编号为1,2,3...N, 每本书有1<=x<=10000000页, 把这些书分配给K个抄写员,要求分配给某个抄写员的那些书的编号必须是连续的.每个抄写员的速度是相 ...
- Monthly Expense(最大值最小化问题)
POJ-3273 ...
- uva 714 Copying Books(二分法求最大值最小化)
题目连接:714 - Copying Books 题目大意:将一个个数为n的序列分割成m份,要求这m份中的每份中值(该份中的元素和)最大值最小, 输出切割方式,有多种情况输出使得越前面越小的情况. 解 ...
- uva 714 - Copying Books(贪心 最大值最小化 二分)
题目描写叙述开头一大堆屁话,我还细致看了半天..事实上就最后2句管用.意思就是给出n本书然后要分成k份,每份总页数的最大值要最小.问你分配方案,假设最小值同样情况下有多种分配方案,输出前面份数小的,就 ...
- Jamie's Contact Groups POJ - 2289(多重匹配 最大值最小化 最大流)
Jamie's Contact Groups Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 8567 Accepted: ...
随机推荐
- ArcGis实现添加MultiLayerMarkerSymbol(多个符号叠加生成新的符号)
, , ); pMarkerSymbol.Angle = ; pMarkerSymbol.XOffset = ;;;;, , ); ...
- openresty 前端开发进阶一之http后端
做前端开发,大多数情况下,都需要跟后端打交道,而最常见的方式则是通过http请求,进行通信. 在openresty中,通过http跟后端整合通信的方式又很多种,各有各的好处,可以根据情况交叉使用 1. ...
- 微信公众平台JSSDK开发
根据微信开发文档步骤如下: 1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”.JS接口安全域名设置 mi.com(前面不用带www/http,域名必须备案过) 2.引入 ...
- Volly框架的使用基础版及使用中的一些坑 Ace 网络篇(三)
直接把注释粘过来: * Volley使用讲解: * 要实现网络数据请求主要要记住下面三步骤: * 1.创建RequestQueue对象 * 2.创建XXRequest对象(XX代表String,JSO ...
- Zxing二维码重复扫描,不退出。
扫描条码,把手机实现类似超市扫描枪之类的连续扫描. private void continuePreview(){ SurfaceView surfaceView = (SurfaceView) fi ...
- matlab数据转换为字符串并合并字符串标注到图像曲线上
1.把数字转换为字符串 [函数描述]str=num2str(A):把数组A中元素取小数点后四位,并转换为字符串. [函数实例]把数字转换为字符串,输入语句: str1=num2str(pi) str2 ...
- 信息安全系统设计基础_exp2
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1353 姓名:吴子怡.郑伟 学号:20135313.20135322 指导教师: 娄嘉鹏 实验 ...
- (转)shell实例手册
原文地址:http://hi.baidu.com/quanzhou722/item/f4a4f3c9eb37f02d46d5c0d9 实在是太好的资料了,不得不转 shell实例手册 0说明{ 手册制 ...
- [软件测试]网站压测工具Webbench源码分析
一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...
- 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问 ...