hihocoder #1095 二分
2016-06-14 20:46
239 查看
注意这里有一个坑点就是上界应该设置为k+1,而不是k。
因为当掷骰子的结果全是k的时候,每次加k也会输。
二分闭区间模板写法:
因为当掷骰子的结果全是k的时候,每次加k也会输。
二分闭区间模板写法:
//这个值越大越能满足,(最小化最大值) int l = mins, r = maxs; while (l < r) { int mid = l + (r - l) / 2; if (judge(mid)) r = mid; else l = mid + 1; }
//这个值越小越能满足,(最大化最小值) int l = mins, r = maxs; while (l < r) { int mid = l + (r - l + 1) / 2; if (judge(mid)) l = mid; else r = mid - 1; }
double l = mins, r = maxs + 1; for (int i = 0; i < 150; i++) { double mid = (l + r) / 2; // ..... }
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <cmath> #include <cstdlib> #include <ctime> #include <stack> using namespace std; typedef pair<int, int> pii; typedef long long ll; typedef unsigned long long ull; typedef vector<int> vi; #define pr(x) cout << #x << ": " << x << " " #define pl(x) cout << #x << ": " << x << endl; #define pri(a) printf("%d\n",(a)) #define xx first #define yy second #define sa(n) scanf("%d", &(n)) #define sal(n) scanf("%lld", &(n)) #define sai(n) scanf("%I64d", &(n)) #define vep(c) for(decltype((c).begin() ) it = (c).begin(); it != (c).end(); it++) const int mod = int(1e9) + 7, INF = 0x3f3f3f3f; const int maxn = 1e5 + 13; int A[maxn], n, k; bool judge(int mid) { ll hi = 0, ho = 0, v = 0; for (int i = 0; i < n; i++) { v += mid; if (A[i] >= v) { hi++; v = 0; } else { ho++; v -= A[i]; } } return ho > hi; } int main(void) { #ifdef LOCAL freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); #endif sa(n), sa(k); for (int i = 0; i < n; i++) { sa(A[i]); } int l = 1, r = k + 1; while (l < r) { int mid = l + (r - l) / 2; if (judge(mid)) r = mid; else l = mid + 1; } pri(l); return 0; }
相关文章推荐
- Tomcat的测试页打开空白页的解决方法
- Hadoop源码分析(1):HDFS读写过程解析
- mysql启动问题access denied for user 'root'@'localhost'(using password:YES)
- mybatis入门教程(九)------mybatis缓存
- Java多种方式自定义序列化
- C#递归生成XML文件,递归序列化对象
- 【LeetCode】122. Best Time to Buy and Sell Stock II
- HDOJ 2005 第几天?
- I/O多路复用之select
- Photoshop详细讲解制作最逼真的公章章印教程
- 【HTML5】Canvas画布
- CRM开发总结1:线索增强程序
- 如何正确使用const,static,extern
- C#将TimeSpan转换为正常时间
- MyAsyAsyncTask工具类网络请求HttpClient
- Thrift 入门
- MYSQL企业常用架构与调优经验分享
- 上周作业
- JSON
- 海康ipc onvif抓包分析