POJ 3104 Drying

思路

非常标准的二分枚举答案的题目
设t为用器电的次数, mid为天数
a[i] = k * t + mid - t
t = (a[i] - mid) / (k-1)向上取整
我忘记减去t了,因为你那天用了器电,就不能加上原来 加1的情况

还要别忘了开longlong!!真见祖宗了

代码

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>using namespace std;typedef long long LL;const int N = 100010;
LL a[N];
LL n, k;bool check(LL mid) {LL cnt = 0;for (int i = 0; i < n; i ++) {if(mid < a[i]) {int sum = ceil((a[i] - mid) * 1.0 / (k - 1));cnt += sum;} }return cnt <= mid;
}   int main() {while(~scanf("%lld", &n)) {for (int i = 0; i < n; i++)scanf("%lld", &a[i]);sort(a, a + n);scanf("%lld", &k);if (k == 1) // 特判{printf("%lld\n", a[n - 1]);break;}LL l = 1, r = a[n - 1];while(l < r) {int mid = l + r >> 1;if(check(mid))r = mid;elsel = mid + 1;}printf("%lld\n", r);}return 0;
}

POJ - 3258 River Hopscotch

思路

也是标准的二分枚举答案
我发现我太喜欢二分算法了。

核心:check函数判断是否mid满足 移走的石子数量cnt是否满足 <= m
当两个石子距离超过mid时, 则需要移走石子

代码

#include<iostream>
#include<cstring>
#include<algorithm>using namespace std;const int N = 50010;int a[N];
int l, n, m;bool check(int dist) {int last = 0;int cnt = 0;for (int i = 1; i < n + 2; i ++) {if(a[i] - last < dist) {cnt++;continue;}else {last = a[i];}}return cnt <= m;
}int main() {scanf("%d%d%d", &l, &n, &m);// 将起点和终点加进来a[0] = 0, a[1] = l;for (int i = 2; i < n + 2; i ++) {scanf("%d", &a[i]);}sort(a, a + n + 2);int l = 0, r = 1e9 + 10;while(l < r) {int mid = l + r + 1>> 1;if(check(mid))l = mid;elser = mid - 1;}printf("%d\n", r);return 0;
}

kuangbin 二分相关推荐

  1. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

  2. “kuangbin带你飞”专题计划——专题十四:数论基础

    写在前面 1.目前还没啥写的.开始时间:2021-05-13(其实博客上看得到该博客创建时间的) 2.上一个专题刷的是网络流(博客总结),属于第一次接触.本来想的是一周特别高效,然后一周略划水,结果是 ...

  3. (2021-07-14~)“kuangbin带你飞”专题计划——专题十三:基础计算几何

    目录 前言 参考博客 自己总结的东西: 难度判断? 题目 1.[TOYS POJ - 2318 ](解决) 2.[Toy Storage POJ - 2398 ](解决) 3.[Segments PO ...

  4. Kuangbin专题三Dancing Links

    Kuangbin专题三Dancing Links 没写完所有的,因为要去上课了赶紧先预习一下,这就先发出来吧. 跳舞链这东西以前在hihocoder上翻到过,当时看的模模糊糊的,现在好好学一学. 暂时 ...

  5. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  6. 分治算法的设计思想(二分检索、二分归并排序)

    分治策略思想: 将原问题划分或者归结为规模较小的子问题. 递归或迭代求解每一个问题. 将子问题的解综合得到原问题的解. 性质: 子问题与原问题具有相同的性质. 子问题的求解彼此独立. 划分时子问题的规 ...

  7. LeetCode简单题之二分查找

    题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: 输入: n ...

  8. 二分查找模板全面总结

    二分查找 二分法的引入 情形1 1.X的平方根 2.搜索旋转排序数组 情形2 1.第一个错误的版本 2.寻找峰值 3.寻找旋转排序数组中的最小值 情形3 在排序数组中查找第一个和最后一个位置 当遇到查 ...

  9. [C] [二分] C语言实现快速排序

    为了以防万一有人想不开想手撕快排呢?比如我. 通过快排来理解二分思想 什么是快排? 快排的思想不难,理解好递归很重要. 什么是递归? 递归,就是在运行的过程中调用自己. 构成递归需具备的条件: 子问题 ...

最新文章

  1. 兄弟俩都是院士!哥哥在南大,弟弟在复旦
  2. Canvas VS . SVG
  3. Kubernetes — PV、PVC
  4. Vue通过eventBut实现组件全局通信
  5. 谷歌历史版本_《地图中的历史》,本书中的地图,我们为你找到了高清版本
  6. iOS uiviewcontroller 添加另外一个controller的View
  7. 台积电:高雄地震对生产影响比预期略高
  8. 细数嵌入式开发与通用系统开发的不同
  9. buntu下shell脚本运行异常:bash和…
  10. 我关于读书的一点小体会
  11. 电脑更新重启后黑屏_电脑黑屏重启还是黑屏的解决方法教程
  12. 项目进度管理之三点估算法
  13. iOS APP 启动页和icon图标尺寸
  14. 2020山东大学软件测试期末试题
  15. UVA11105 H-半素数 Semi-prime H-numbers(线性筛+前缀和+暴力)
  16. 2021年安全员-C证考试及安全员-C证考试技巧
  17. 货币供应量M1M2与上证综合指数之间的相关性图示
  18. (云服务器学习)部署python程序到云服务器
  19. python 腾讯视频签到_Python处理腾讯视频
  20. ADNI-python实现批量nii和dcm文件转换为png图像

热门文章

  1. linux内核c1bcbc40,Linux内核驱动
  2. python之界面案例
  3. MTK SPI驱动开发
  4. fortran教程5:数组
  5. socket加入组播
  6. Matlab卷积函数之conv、deconv、conv2、convn
  7. 车流量统计 matlab,基于视频的车流量统计——matlab代码
  8. json解析工具之jackson的常用实例
  9. 读《研磨设计模式》-代码笔记-装饰模式-Decorator
  10. 银河麒麟桌面操作系统之磁盘分区与磁盘挂载