http://codeforces.com/gym/101028/problem/I

题意:给你n个洞,k个布条,问布条能贴到所有洞时的最小值。

题解:二分答案,因为答案越大就越容易满足条件。

技巧:两种judge写法:常规与upper_bound,嗯,就是有种可以upper_bound的感觉。

坑:VS提示upper_bound出错但是代码能ac Orz//_DEBUG_ERROR2("invalid iterator range", _File, _Line);百度不到为啥。。最后发现

 pos = upper_bound(a + pos + 1, a + n + 1, a[pos] + mid - 1) - a;改成
 pos = upper_bound(a + pos , a + n + 1, a[pos] + mid - 1) - a;就好了。有点意思

ac代码:正常写法

#define    _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
#include<stdio.h>
using namespace std;
const int maxn = 1e5 + ;
int a[maxn];
int n, k;
bool judge(int x) {
int p = , cnt = ;
for (int i = ; i <= n; i++) {
if (p < a[i]) {
cnt++;
p = a[i] + x - ;
if (cnt == k) {
if (p >= a[n])return ;
else return ;
}
if (p >= a[n])return ;
}
}
return ;
}
int main() {
int t;
cin >> t;
while (t--) { cin >> n >> k;
for (int i = ; i <= n; i++) {
scanf("%d", &a[i]);
}
int l = , r = a[n];
int mid;
while (l <= r) {
mid = l + r >> ;
if (!judge(mid)) l = mid+;
else r = mid-; }
cout << l << endl;
} }

简化版:

#define    _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
#include<stdio.h>
using namespace std;
const int maxn = 1e5 + ;
int a[maxn];
int n, k;
bool judge(int x) {
int pos = , cnt = ;
for (int i = ; i <= k; i++) {
pos = upper_bound(a + pos + , a + n + , a[pos] + x - ) - a;
}
if (pos > n)return ;
return ;
}
int main() {
int t;
cin >> t;
while (t--) { cin >> n >> k;
for (int i = ; i <= n; i++) {
scanf("%d", &a[i]);
}
int l = , r = a[n];
int mid;
while (l <= r) {
mid = l + r >> ;
int pos = ;
for (int i = ; i <= k; i++) {
pos = upper_bound(a + pos + , a + n + , a[pos] + mid - ) - a;
}
if (pos>n) r = mid - ;
else l = mid + ; }
cout << l << endl;
} }

Gym - 101028I March Rain 二分的更多相关文章

  1. 2016 Al-Baath University Training Camp Contest-1 I. March Rain —— 二分

    题目链接:http://codeforces.com/problemset/gymProblem/101028/I I. March Rain time limit per test 2 second ...

  2. Codeforces Gym 100425A Luggage Distribution 二分 数学

    A - Luggage DistributionTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...

  3. Code Forces Gym 100886J Sockets(二分)

    J - Sockets Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Valera ...

  4. Gym - 100851L:Landscape Improved (二分+单调性)

    题意: 一个宽度为N的网格图,i上有h[i]高的方块.现在你有W个方块,问怎么放使得最终的最高点最高.   当一个格子的下方,左下方和右下方都有方块那么久可以把方块放到这个格子上.最左端和最右端不能放 ...

  5. Gym 100971D Laying Cables 二分 || 单调栈

    要求找出每个a[i],找到离他最近而且权值比它大的点,若距离相同,输出权利最大的那个 我的做法有点复杂,时间也要500+ms,因为只要时间花在了map上. 具体思路是模拟一颗树的建立过程,对于权值最大 ...

  6. 【Codeforces】Gym 101608G WiFi Password 二分+线段树

    题意 给定$n$个数,求有最长的区间长度使得区间内数的按位或小于等于给定$v$ 二分区间长度,线段树处理出区间或,对每一位区间判断 时间复杂度$O(n\log n \log n)$ 代码 #inclu ...

  7. Gym 100883J palprime(二分判断点在凸包里)

    题意:判断一堆小点有多少个在任意三个大点构成的三角形里面. 思路:其实就是判断点在不在凸包里面,判断的话可以使用二分来判断,就是判断该点在凸包的哪两个点和起点的连线之间. 代码: /** @xigua ...

  8. Gym - 101981B Tournament (WQS二分+单调性优化dp)

    题意:x轴上有n个人,让你放置m个集合点,使得每个人往离他最近的集合点走,所有人走的距离和最短. 把距离视为花费,设$dp[i][k]$表示前i个人分成k段的最小花费,则有递推式$dp[i][k]=m ...

  9. Book Borders (Gym - 101480B)(二分)

    题目链接 题解:用二分查询一下每次满足长度的下一个加上它的长度. #include <bits/stdc++.h> using namespace std; typedef long lo ...

随机推荐

  1. NetBpm 安装篇(1)

    尊重别人劳动成果 转载注明出处:http://www.cnblogs.com/anbylau2130/p/3875718.html 官方主页 http://www.netbpm.org/docs/in ...

  2. Popupwindow全屏问题

    //sdk > 21 解决 标题栏没有办法遮罩的问题 popupWindow.setClippingEnabled(false);

  3. iOS - 转场时 appear 与 disappear 的调用顺序探索

    不同的转场方式 A.B viewDidDisappear调用的流程不同 在A页面跳转到B页面的过程中 A 的 viewDidDisappear 方法和 B 的 viewDidAppear 谁先调用? ...

  4. c++ map使用问题【运行结果不一样】

    map经常把指针作为key,这种情况下. 我们经常会很自然的以为,如果要取元素时,会按照我们存的顺序拿到元素. 但是事实上不是这样的,因为map取得时候是按key的大小排序的,而如果用指针作为key, ...

  5. Makefile 链接静态库

    Linux的静态库是以.a结尾的,要连接静态库有两种方法,一种是在编译命令最后直接加上库路径/库名称. 例如你的库在绝对目录/lib/libtest.a下面你就可以这样来编译$(CC) $(CFLAG ...

  6. Qt编写的RTSP播放器+视频监控(ffmpeg版本)

    记得四年前就写了个简易版本的,当时写得非常粗糙,代码实在惨不忍睹,时隔多年后,重新写了个版本,同时还解决了以前不支持6画面8画面切换等异形布局的问题.1:可以用过目录下的rtsp.txt设置要显示的视 ...

  7. Win7/Win8/IIS7/IIS8配置ASP/ACCESS

    1.在IIS信息服务管理器配置好站点后,配置ASP属性: a.IIS启用ASP 1.打开控制面板>>程序和功能>>“打开或关闭windows功能”,见下图 2.稍等片刻,出现一 ...

  8. Ubuntu 16.04 LAMP server tutorial with Apache 2.4, PHP 7 and MariaDB (instead of MySQL)

    https://www.howtoforge.com/tutorial/install-apache-with-php-and-mysql-on-ubuntu-16-04-lamp/ This tut ...

  9. 跟bWAPP学WEB安全(PHP代码)--OS命令注入

    背景 这是温故知新的一个系列,也是重新拾起WEB安全的一个系列,同时希望能稍微有点对初学者的帮助.第一篇先来讲讲OS命令注入 bWAPP里面有两个页面也就是两个漏洞,来验证OS命令注入.一个是有回显的 ...

  10. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十四:储存模块

    实验十四比起动手笔者更加注重原理,因为实验十四要讨论的东西,不是其它而是低级建模II之一的模块类,即储存模块.接触顺序语言之际,“储存”不禁让人联想到变量或者数组,结果它们好比数据的暂存空间. . i ...