codeforces723c
来源:互联网 发布:java代码如何打包tar 编辑:程序博客网 时间:2024/06/01 23:35
这个就是代码问题,主要是脑速问题,想的代码实现还是很复杂,导致这个容易出bug以及一晚上都在调试。。。。gg
就是不断的去比如果个数小于n/m的话,找大于n/m或者大于m的换就行了
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MaxN = 1e9+5;int a[2010] , sum[2010] , change[2010] , xu[2010];int n , m ;int main(){ int _min , ans = 0; scanf("%d %d", &n , &m); _min = n / m; int Max = 0; for(int i = 0 ; i < n ; i++){ scanf("%d",&a[i]); if(a[i] <= m)sum[a[i]]++; if(a[i] > Max) Max = a[i]; } for(int i = 1 ; i <= m ; i++){ xu[i] = _min - sum[i]; if(sum[i] < _min && xu[i] > 0) ans += xu[i]; //printf("xu[%d] = %d ,%d\n",i,xu[i],ans); } //printf("ans = %d\n",ans); int num = 0, j = 0; for(int i = 0 ; i < n ; i++){ int flag = 0; if(a[i] <= m && xu[a[i]] < 0) flag = 1; if(flag || a[i] > m){ // printf("*\n"); while(xu[j] <= 0 && j < m){ j++; } //printf("j = %d\n",j); if(xu[j] > 0){ //printf("%d ti %d\n",i,j); xu[j]--; //printf("xu[%d] = %d\n",j,xu[j]); if(flag) xu[a[i]]++; a[i] = j; num++; } } } printf("%d %d\n", _min , ans); for(int i = 0 ; i < n - 1 ; i++) printf("%d ",a[i]); printf("%d\n",a[n - 1]); return 0;}
0 0
- codeforces723c
- [codeforces723C]Polycarp at the Radio
- codeforces723C- Polycarp at the Radio-greedy
- CodeForces723C Polycarp at the Radio 贪心
- codeforces723C Polycarp at the Radio 英语阅读题
- matrix6
- x86(32位)分页管理的机制
- 2017微软秋季校园招聘在线编程笔试 题目2 Composition
- linux中的文件移动
- MQTT协议 Python客户端
- codeforces723c
- Scroll与Layer中的touch冲突
- Javascript入门笔记1-script标签
- matrix7
- 七、Lua中的协同程序
- ARM 汇编指令
- html table标签 用法
- 使用新浪SAE开发微信公众号 验证Token却一直失败
- 可支持向量机SVM(support vector machine)基础