Distributing Ballot Boxes(HDU1490)
给出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)相关推荐
- Distributing Ballot Boxes HDU - 4190
问题·: Today, besides SWERC'11, another important event is taking place in Spain which rivals it in im ...
- HDU 4190 Distributing Ballot Boxes【二分答案】
题意:给出n个城市,n个城市分别的居民,m个盒子,为了让每个人都投上票,问每个盒子应该装多少张票 二分盒子装的票数, 如果mid<=m,说明偏大了,r应该向下逼近 ,r=mid 如果mid> ...
- Codeforces ~ 990A ~ Commentary Boxes (水)
题意:你现在有 n n n个东西你要分给m" role="presentation">mmm个人,建造一个这个东西需要花费 a a a,毁坏一个这个东西需要花费b& ...
- 小白学习三维检测和三维语义理解(3D-understanding)持续更新中。。
Uderstanding Understanding 三维 understanding 一.Learning only from point cloud (1)PointNet: Deep Learn ...
- QStyle类用法总结(三)
1.前言 为了更容易搞懂Qt自定义风格绘制,在平时开发中,实现定制自己风格的UI,本人推出有关QStyle自定义风格系列文章.说明如下: <QStyle类用法总结(一)>.该文是对Qt自定 ...
- 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 ...
- 深度学习笔记(39) Anchor Boxes
深度学习笔记(39) Anchor Boxes 1. 一个格子多个对象检测问题 2. Anchor box 3. 对象形状交并比 3. 一个格子一个对象检测问题 4. 额外的细节 5. Anchor ...
- GPU端到端目标检测YOLOV3全过程(下)
GPU端到端目标检测YOLOV3全过程(下) Ubuntu18.04系统下最新版GPU环境配置 · 安装显卡驱动 · 安装Cuda 10.0 · 安装cuDNN 1.安装显卡驱动 (1)这里采用的是P ...
- Yolov4性能分析(上)
Yolov4性能分析(上) 一.目录 实验测试 1) 测试介绍 2) Test 3) Train 二.分析 1.实验测试 1 实验测试方法 Yolov4训练train实验方法(Darknet shou ...
- 基于区域的CNN(R-CNN)
基于区域的CNN(R-CNN) Region-based CNNs (R-CNNs) 基于区域的卷积神经网络或具有CNN特征的区域(R-CNN)是一种将深度模型应用于目标检测的开创性方法.在本节中,将 ...
最新文章
- 【牛客】简单排序 (STL)
- 求1+2+3+…+n
- CLOSE_WAIT 和TCP_KEEPALIVE
- 如何理解ScanDef的概念
- 理解 java 中常用数据结构
- 算法解读--递归(二)
- 2021上饶市高考中考成绩查询,2021年上饶中考成绩公布查询时间 上饶中考成绩查询方式入口...
- Android 系统(199)---Android事件分发机制详解
- 惠普打印机136w硒鼓芯片怎么清零_HP惠普打印机清零技巧
- 粒子群课设,粒子群算法(基础精讲)ppt课件
- 【Base64是什么?】
- 工欲善其事必先利其器-SpringBoot源码研究之源码编译
- 语音识别—声学模型训练(前向-后向算法)
- C# 实现俄罗斯方块
- 常用插值核介绍-nearest,linear,cubic,lanzcos
- 中基鸿业投资理财好习惯
- The server time zone value ‘ ‘ is unrecognized or represents more than one time zone
- 父类对象指向子类引用
- 立个Flag,2019加油!
- CSV格式转换为xlsx格式
热门文章
- 通过 经纬度 获取 地理位置(Python、高德地图)
- 紧急求救~~~在线等...请问asp怎么同时连接多个SQL SERVER数据库..小女子在此先谢谢了..
- cents OS 重装yum,配置阿里yum源
- 亚马逊运营应提升哪些自身能力
- springboot 配置文件加密
- 电子行报告:从海外龙头发展历程看国内半导体设备企业投资价值
- 单片机——LED点阵
- android雪花飘落动画,Android自定义View——从零开始实现雪花飘落效果
- 01、u3d自学课程
- 刺激战场极寒模式到底有多疼?掌握这些攻略帮你活到最后