codeforces - 723C 题解
题意:给定一个歌曲演唱的序列,第i个数字代表第i首歌由ai号乐队演唱;用最少的操作将这些歌改成1-m号乐队演唱,且每个乐队演唱歌曲数的最小值最大。问操作数
问题解法:首先分析如何让最小值最大,有两种方式来提升最小值,第一种是将1-m范围外的乐队演唱的歌分给1-m范围内的演唱数最小的乐队,第二种是将1-m内演唱数较大的乐队的歌分一些给1-m内演唱数较小的乐队。所以题目的贪心策略也就基本确定了
1 #include<iostream> 2 #include<algorithm> 3 #include<climits> 4 using namespace std; 5 int a[10001]; 6 int b[10001]={}; 7 int n,m; 8 int board; 9 bool check() 10 { 11 for(int i=1;i<=m;i++) 12 { 13 if(b[i]<board) 14 { 15 return true; 16 } 17 } 18 return false; 19 } 20 int main() 21 { 22 cin>>n>>m; 23 for(int i=1;i<=n;i++) 24 { 25 cin>>a[i]; 26 if(a[i]<=m) 27 { 28 b[a[i]]+=1; 29 } 30 } 31 int res1,res2=0; 32 board=n/m; 33 for(int i=1;i<=n;i++) 34 { 35 if(a[i]>m) 36 { 37 for(int j=1;j<=m;j++) 38 { 39 if(b[j]<n/m) 40 { 41 b[j]+=1; 42 a[i]=j; 43 res2+=1; 44 break; 45 } 46 } 47 } 48 } 49 while(check()) 50 { 51 for(int i=1;i<=n;i++) 52 { 53 if(b[i]>board) 54 { 55 for(int j=1;j<=m;j++) 56 { 57 if(b[j]<board) 58 { 59 for(int k=1;k<=n;k++) 60 { 61 if(a[k]==i) 62 { 63 a[k]=j; 64 b[i]-=1; 65 b[j]+=1; 66 res2+=1; 67 break; 68 } 69 } 70 if(b[i]<=board) 71 { 72 break; 73 } 74 } 75 } 76 } 77 } 78 } 79 res1=INT_MAX; 80 for(int i=1;i<=m;i++) 81 { 82 res1=min(res1,b[i]); 83 } 84 cout<<res1<<" "<<res2<<endl; 85 for(int i=1;i<=n;i++) 86 { 87 cout<<a[i]<<" "; 88 } 89 return 0; 90 }
转载于:https://www.cnblogs.com/shao0099876/p/7297011.html
codeforces - 723C 题解相关推荐
- Dominated Subarray[codeforces 1257C]题解
Dominated Subarray[codeforces 1257C] CF-1257C(Dominated Subarray) 题目 输入 输出 题目大意 样例输入 样例输出 CF-1257C(D ...
- Codeforces 833B 题解(DP+线段树)
题面 传送门:http://codeforces.com/problemset/problem/833/B B. The Bakery time limit per test2.5 seconds m ...
- Codeforces 1344 题解
A 假设所有的 \((i+a_i)\) 模 \(n\) 意义下构成排列则答案为 YES,否则为 NO. 时间复杂度 \(O(n)\) 或 \(O(n\log n)\). 代码: 79150268 B ...
- Codeforces 1314 题解
这场整体质量感觉可以算 2020 年度(目前为止)最垃圾. A 按数值从小到大扫描,维护一个优先队列,每遇到一个数加入队列,每次数值发生 \(+1\) 时弹掉队列中价值最大元素,然后把此时队列中所有元 ...
- Codeforces 1338 题解
A 对于每个 \(i\) 我们求出 \(b_i\) 表示 \(i\) 这个数最少要增加多少(\(\max^i_{j=1}a_j-a_i\)),答案等于最小的 \(k\) 使得 \(2^k-1\ge \ ...
- Codeforces 1149 题解
A 特判全是 \(2\),对于有 \(1\) 的情况把 \(1\) 放到第二个和最后. 时间复杂度 \(O(n)\). 代码: 76492031 B 考虑只有一次询问的情况,有一个 \(O(n^3)\ ...
- Codeforces 1025 题解
A 若 \(n=1\) 则答案为 YES,否则答案为 YES 当且仅当存在两个相同的字符. 时间复杂度 \(O(n)\). 代码: 76484733 B 求出所有 \(\text{lcm}(a_i,b ...
- Codeforces 1188 题解
A 首先对于 A1 题,可以加减任意实数,结论是答案为 YES 当且仅当没有度数为 \(2\) 的点.必要性显然,充分性通过下面的构造来证明. A2 题的构造:考虑随便找一个叶子节点为根,记为 \(r ...
- codeforces #1 题解
codeforces1A 题目链接:http://codeforces.com/problemset/problem/1/A 题意:给定一个n*m的矩形,然后给一个a*a的地板,求最少需要多少地板可以 ...
最新文章
- 从零开始构建:使用CNN和TensorFlow进行人脸特征检测
- “tensorFromBlob”: 不是“at::DeprecatedTypeProperties”的成员
- nginx通过用户和密码来实现认证功能
- oracle12c bug,Oracle12c R2注意事项: 因BUG生成大量的trace file 包含KRB: (rman module)
- boost::mpl::less_equal相关的测试程序
- 又翻出来老电视剧看了看....
- javascript --- [express+ vue2.x + elementUI]登陆的流程梳理
- 蚂蚁暑期实习前端面试
- 《Orange’s 一个操作系统的实现》3.保护模式4----LDT(Local Descriptor Table)
- mysql锁表语句,从理论到实践!
- msxml3.dll 错误 '80072efd' ---asp 网站报错
- 这些地区的大学,取消英语四六级口语考试!
- 油管最火KMP算法讲解,阿三哥的源代码!
- ssh开启图形界面_分享|3 个 Linux 上的 SSH 图形界面工具
- 苹果平板电脑服务器已停止响应,苹果平板电脑ipad完全死机怎么办【解决方法】...
- 读取经纬度坐标并存储为字典格式,即key为ID,value为轨迹点
- 壁挂炉开启采暖模式后,水泵24小时运转,安装联动线(联控线)后完美解决
- 华为eNSP模拟器操作技巧之关闭信息提示
- PCB与PE(大地)相连技术文章
- 梦之旅游戏攻略html5,《梦之旅1:梦境》攻略
热门文章
- 用java项目做Hibernate的增删查改,和分页(hibernate-distribution-3.6.0.Final为例)
- 解决:WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions.
- omap3530 linux串口驱动,LINUX下OMAP3530接MT9P031的摄像头驱动调试 给力的一周
- OpenCV视频解码器
- 计算机中实现10进制转换成二进制c编程
- 国行new moto x升级android6,摩托罗拉Android6.0升级计划:全都在
- 熊掌:SEO从站点到数字的转变
- mysql_5.7_windows安装步骤
- 苹果和安卓到底有何不同?
- 51nod 1430:奇偶游戏 博弈