二分查找
本题要点:
1、二分 投票点的最大投票数量。 L = 1, R = max_b(城市的最大人口数)
2、对于每一个 mid, 计算所有城市 满足投票点的最大投票数量 是 mid 的 最少的投票点数量。函数 judge 来计算这个。
找到最小的使得 if(judge(mid) <= m) 成立的 mid, 就是答案。

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int MaxN = 500010;
int b[MaxN];
int n, m, max_b;int calc(int sum, int max_part) // sum , 最大一份是 max_part
{int flag = 0;if(sum % max_part)flag = 1;return sum / max_part + flag;
}int judge(int mid)
{int sum = 0;for(int i = 1; i <= n; ++i){sum += calc(b[i], mid);  }return sum;
}void solve()
{int L = 1, R = max_b, mid;while(L < R){//      printf("L = %d, R = %d\n", L, R);mid = (L + R) / 2;if(judge(mid) <= m){R = mid;}else{L = mid + 1;}}printf("%d\n", L);
}int main()
{while(scanf("%d%d", &n, &m) != EOF){if(-1 == n && -1 == m)break;max_b = -1;for(int i = 1; i <= n; ++i){scanf("%d", &b[i]);max_b = max(max_b, b[i]);}solve();}return 0;
}/*
4 6
120
2680
3400
200
-1 -1
*//*
1700
*/

SP10108 BALLOT - Distributing Ballot Boxes(二分查找)相关推荐

  1. 二分查找(折半查找)详解

    二分查找详解 1. 二分查找的引入 2. 二分的一些基本知识 1) 定义 2) 特点 3. 二分查找的边界问题 1) 常用模板 2)综合练习 4.二分的应用 1) Flyer 2) Distribut ...

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

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

  3. LeetCode简单题之二分查找

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

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

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

  5. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

  6. 二分查找算法的一点改进

    在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...

  7. 二分法:二分查找(递归+非递归)实现

    二分查找又称折半查找,首先,假设表中元素是按升序排列,将 表中间位置的关键字与查找关键字比较: 如果两者相等,则查找成功; 否则利用中间位置将表分成前.后两个子表: 1)如果中间位置的关键字大于查找关 ...

  8. python数据结构与算法:二分查找

    二分查找:python 实现 def binary_seaech(alist,item):"""二分查找 递归实现"""n = len(al ...

  9. 【C++】C++11 STL算法(四):二分查找法(Binary search operations)、合并操作

    目录 一.lower_bound 1.原型: 2.说明: 3.官方demo 二.upper_bound 1.原型: 2.说明: 3.官方demo 三.binary_search 1.原型: 2.说明: ...

  10. 二分查找的循环实现和递归实现

    自己实现了二分查找的循环实现和递归实现 说明:二分查找适用于顺序存储结构,不适于链式存储结构,是一个高效的查找方法.虽然折半查找效率高,但是要排序,排序本身是一种很费时的运算.     要求传入的表是 ...

最新文章

  1. Allegro 如何把铺好铜皮的平面层互换
  2. DL之DNN优化技术:GD、SGD、Momentum、NAG、Ada系列、RMSProp各种代码实现之详细攻略
  3. 众唱点歌机会显示无法连接服务器,目前众多厂商唱多的服务器附加存储缺点分析...
  4. [物理学与PDEs]第1章第3节 真空中的 Maxwell 方程组, Lorentz 力 3.1 真空中的 Maxwell 方程组...
  5. 转为字符数组_数组的20种常用的方法?
  6. android监听器作用,android - 监听器和接收器(Android)有什么区别?
  7. mysql中的派生表
  8. 超越传感器和相机 - 将物联网从云端迁移到物理世界
  9. GNOME下也是Alt+F2,输入gnome-terminal
  10. 机器学习--支持向量机(一)什么是支持向量机
  11. java web 缓存省市县_实现 Java 本地缓存,该从这几点开始
  12. 图片水印如何去除,怎样处理带水印的图片
  13. 伽罗华有限域的FEC
  14. Mac系统解决matplotlib无法显示中文字体
  15. NLP教程笔记:BERT 双向语言模型
  16. ArcEngine下纵断面图的绘制
  17. 论文 | Credit Card Fraud Detection Using Convolutional Neural Networks
  18. 跟新老板谈加薪条件的方法
  19. mysql SQLSTATE[HY000] [1045] Access denied for user
  20. js正则表达式实现千分位符

热门文章

  1. 【eNSP 华为模拟器】三层交换技术及操作步骤【图文】
  2. [单调栈 扫描线] BZOJ 4826 [Hnoi2017]影魔
  3. 80C51单片机PROTUES仿真C语言数码管点亮
  4. WebBrowser抓图示例——截取网页上的验证码图片
  5. qt实现windows系统下录屏功能
  6. 就小容量分布式光伏电站信息采集系统的设计与应用的研究方案 光伏电站建设 小型光伏电站 (安科瑞-须静燕)
  7. c语言已知斜率 求倾角,直线与方程(一)倾斜角与斜率
  8. 解决The APR based Apache Tomcat Native library which allows optimal performance in production environ
  9. 【Docker系列】从头学起 Docker——docker run 命令详解
  10. html 缩小时字体错位,微信字体设置导致页面错位的解决方法