给出n个城镇的人,m个投票箱,求出最小票箱容积,使得最快完成投票收集。

2,7

2000

5000

那么一个票箱装1000,7个票箱装满。

这道题是第二次写,两种思路,一种是二分答案,一种是优先队列。

方法一:二分答案

#include<bits/stdc++.h>
using namespace std;
int a[500005];
int n,m,maxnum;
int check(int x)
{int cost=0;for(int i=0;i<n;i++)cost+=ceil(a[i]*1.0/x);if(cost>m) return 0;//箱子用的太多了,说明值定小了,还需要增大else return 1;
}
int bin_find(int low,int high)//复杂度n*log(m);
{int mid;while(low<high){mid=(low+high)/2;if(check(mid)==0)//箱子还多,值还可以增大low=mid+1;else high=mid;//箱子不够或者刚好,值要减小}return high;
}int main()
{while(cin>>n>>m,n!=-1&&m!=-1){maxnum=-1;for(int i=0; i<n; i++){cin>>a[i];maxnum=max(maxnum,a[i]);}if(n==m)//如果相等必然是最大值cout<<maxnum<<endl;else cout<<bin_find(1,maxnum)<<endl;//如果不是必然是在1-maxnum之间}return 0;
}

方法二:优先队列

先定义结构里边存人数,和分配的票箱数,然后单位票箱的容积越大越靠顶部。然后先分配掉n个,剩下的单独去分配ss

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct node
{long long a,b;//a是人数,b是箱子数friend bool operator <(node x,node y){return x.a*y.b<y.a*x.b;//本质是x.a/x.b<y.a/y.b不想处理小数所以变形}
};
int main()
{while(cin>>n>>m,n!=-1&&m!=-1){priority_queue<node> q;m-=n;//每个地方至少分一个,所以还多出这么多node temp;temp.b=1;for(int i=0; i<n; i++){cin>>temp.a;q.push(temp);}while(m--)//多出来的箱子去分配,每次都给均值下来最大的那个,也就是top,在放回{temp=q.top();q.pop();temp.b++;q.push(temp);}temp=q.top();long long ans=ceil(temp.a*1.0/temp.b);cout<<ans<<endl;}return 0;
}

Distributing Ballot Boxes(HDU1490)相关推荐

  1. Distributing Ballot Boxes HDU - 4190

    问题·: Today, besides SWERC'11, another important event is taking place in Spain which rivals it in im ...

  2. HDU 4190 Distributing Ballot Boxes【二分答案】

    题意:给出n个城市,n个城市分别的居民,m个盒子,为了让每个人都投上票,问每个盒子应该装多少张票 二分盒子装的票数, 如果mid<=m,说明偏大了,r应该向下逼近 ,r=mid 如果mid> ...

  3. Codeforces ~ 990A ~ Commentary Boxes (水)

    题意:你现在有 n n n个东西你要分给m" role="presentation">mmm个人,建造一个这个东西需要花费 a a a,毁坏一个这个东西需要花费b& ...

  4. 小白学习三维检测和三维语义理解(3D-understanding)持续更新中。。

    Uderstanding Understanding 三维 understanding 一.Learning only from point cloud (1)PointNet: Deep Learn ...

  5. QStyle类用法总结(三)

    1.前言 为了更容易搞懂Qt自定义风格绘制,在平时开发中,实现定制自己风格的UI,本人推出有关QStyle自定义风格系列文章.说明如下: <QStyle类用法总结(一)>.该文是对Qt自定 ...

  6. R语言ggplot2可视化分面图(facet_grid):去除分面图灰色矩形框以及框中的标签、Getting rid of facet_grid labels on those gray boxes

    R语言ggplot2可视化分面图(facet_grid):去除分面图灰色矩形框以及框中的标签.Getting rid of facet_grid labels on those gray boxes ...

  7. 深度学习笔记(39) Anchor Boxes

    深度学习笔记(39) Anchor Boxes 1. 一个格子多个对象检测问题 2. Anchor box 3. 对象形状交并比 3. 一个格子一个对象检测问题 4. 额外的细节 5. Anchor ...

  8. GPU端到端目标检测YOLOV3全过程(下)

    GPU端到端目标检测YOLOV3全过程(下) Ubuntu18.04系统下最新版GPU环境配置 · 安装显卡驱动 · 安装Cuda 10.0 · 安装cuDNN 1.安装显卡驱动 (1)这里采用的是P ...

  9. Yolov4性能分析(上)

    Yolov4性能分析(上) 一.目录 实验测试 1) 测试介绍 2) Test 3) Train 二.分析 1.实验测试 1 实验测试方法 Yolov4训练train实验方法(Darknet shou ...

  10. 基于区域的CNN(R-CNN)

    基于区域的CNN(R-CNN) Region-based CNNs (R-CNNs) 基于区域的卷积神经网络或具有CNN特征的区域(R-CNN)是一种将深度模型应用于目标检测的开创性方法.在本节中,将 ...

最新文章

  1. 【牛客】简单排序 (STL)
  2. 求1+2+3+…+n
  3. CLOSE_WAIT 和TCP_KEEPALIVE
  4. 如何理解ScanDef的概念
  5. 理解 java 中常用数据结构
  6. 算法解读--递归(二)
  7. 2021上饶市高考中考成绩查询,2021年上饶中考成绩公布查询时间 上饶中考成绩查询方式入口...
  8. Android 系统(199)---Android事件分发机制详解
  9. 惠普打印机136w硒鼓芯片怎么清零_HP惠普打印机清零技巧
  10. 粒子群课设,粒子群算法(基础精讲)ppt课件
  11. 【Base64是什么?】
  12. 工欲善其事必先利其器-SpringBoot源码研究之源码编译
  13. 语音识别—声学模型训练(前向-后向算法)
  14. C# 实现俄罗斯方块
  15. 常用插值核介绍-nearest,linear,cubic,lanzcos
  16. 中基鸿业投资理财好习惯
  17. The server time zone value ‘ ‘ is unrecognized or represents more than one time zone
  18. 父类对象指向子类引用
  19. 立个Flag,2019加油!
  20. CSV格式转换为xlsx格式

热门文章

  1. 通过 经纬度 获取 地理位置(Python、高德地图)
  2. 紧急求救~~~在线等...请问asp怎么同时连接多个SQL SERVER数据库..小女子在此先谢谢了..
  3. cents OS 重装yum,配置阿里yum源
  4. 亚马逊运营应提升哪些自身能力
  5. springboot 配置文件加密
  6. 电子行报告:从海外龙头发展历程看国内半导体设备企业投资价值
  7. 单片机——LED点阵
  8. android雪花飘落动画,Android自定义View——从零开始实现雪花飘落效果
  9. 01、u3d自学课程
  10. 刺激战场极寒模式到底有多疼?掌握这些攻略帮你活到最后