*这种题好像不用写题解...

题意:

  一个人要改动别人的实验记录,实验记录记录是一个集合

   实验记录本身满足:$max(X)-min(X)<=2$

   改动结果要求:

    1.新的集合平均值和之前的一样

    2.新的集合,$max(Y)<=max(X),min(Y)>=min(X)$

   求新一个和之前相同数值最少的新记录

题解:

  首先考虑不同情况,

  如果$max-min<=1$ :因为要保证平均值且值域受限制不变,无法改变值(增加一个值之后,要相应的把另外一值减小,而数值只有2/1种,改动没有意义)

  如果$max-min=2$ 我们把所有值分为 $max,mid,min$ 三类那么就有了2种选择:

  1.把所有的$mid$两两分组 变成$max,min$

  2.把所有的$max,min$两两组合,变成$mid$

  我们比较一下谁比较就行了...

1A

#include <bits/stdc++.h>
#define ll long long
#define rep(ii,a,b) for(int ii=a;ii<=b;ii++)
using namespace std;
const int maxn=1e5+10;
int casn,n,m,k;
int num[maxn];
int cnt[3];
int main(){rep(i,1,n) cin>>num[i];sort(num+1,num+1+n);rep(i,1,n)cnt[num[i]-num[1]]++;ll ans1=cnt[2]+cnt[0]+cnt[1]%2;ll ans2=max(cnt[2],cnt[0])-min(cnt[2],cnt[0])+cnt[1];ll ans=min(ans1,ans2);if(num[n]-num[1]<=1) ans=n;else if(ans1<ans2){cnt[0]+=cnt[1]/2;cnt[2]+=cnt[1]/2;cnt[1]%=2;}else {cnt[1]+=2*min(cnt[0],cnt[2]);if(cnt[2]>cnt[0]) {cnt[2]-=cnt[0];cnt[0]=0;}else{cnt[0]-=cnt[2];cnt[2]=0;}}cout<<ans<<endl;while(cnt[0]--) cout<<num[1]<<' ';while(cnt[1]--) cout<<num[1]+1<<' ';while(cnt[2]--) cout<<num[1]+2<<' ';return 0;
}

转载于:https://www.cnblogs.com/nervendnig/p/9236681.html

CodeForces 931C Laboratory Work 水题,构造相关推荐

  1. codeforces 1060a(思维水题)

    Let's call a string a phone number if it has length 11 and fits the pattern "8xxxxxxxxxx", ...

  2. Codeforces Gym 100286I iSharp 水题

    Problem I. iSharp Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest ...

  3. CodeForces - 1287B Hyperset(暴力水题)

    题目链接:点击查看 题目大意:给出"集合"的定义: 集合中必须有三个元素 每个元素的每个特征值必须全部相同或者全部不同,不能存在两者相同但与第三者不同 现在给出n个元素以及m个特征 ...

  4. 【CodeForces - 1066A~E】水题,模拟(有技巧),思维,题意难懂的模拟,二进制问题(有技巧)

    A. 题目大意: x坐标上1~L有L个点都是整数,每v个长度就有一个灯亮着,但是有 [ l , r ] 这段区间上有列火车挡住了,问你能看到多少亮灯. 解题报告: 大水题啊,找几个样例就会发现需要特殊 ...

  5. CodeForces - 13A Numbers【水题】

    题目链接:https://codeforces.com/contest/13/problem/A 暴力 #include <iostream> using namespace std; i ...

  6. Educational Codeforces Round 30 A[水题/数组排序]

    A. Chores time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...

  7. CodeForces - 1042C (emmmmmm水题)

    You are given an array aa consisting of nn integers. You can perform the following operations with i ...

  8. 【CodeForces - 289C】Polo the Penguin and Strings (水题,字符串,思维构造,有坑)

    题干: Little penguin Polo adores strings. But most of all he adores strings of length n. One day he wa ...

  9. Codeforces 864 A Fair Game 水题

    题目链接: http://codeforces.com/problemset/problem/864/A 题目描述: 看不是是不是一串数中只有两种数且这两种数字的数量是相同的 解题思路: 水题, 水过 ...

最新文章

  1. IssueVission的命令处理
  2. 昨日关注-你说过的每一句话
  3. “优秀IT工程师”是什么样的?
  4. label-embedding在文本分类中的应用
  5. python读什么类型文件最快的软件_使用python读取数据科学最常用的文件格式(转)...
  6. mysql fetch lengths_php mysqli_fetch_lengths()函数
  7. MATLAB绘制正弦波、方波、三角波、锯齿波的mif文件
  8. 计算机辅助语言和语言学关系,西方语言学与多媒体计算机辅助语言学习_王艳萍...
  9. 初识AngularJS 之 HelloWorld和数据绑定
  10. java输入年月输出日历_java输入年份打印该年份的年历 | 学步园
  11. MySQL-快速入门(3)运算符
  12. stata中计算公式命令_Stata:runby - 一切皆可分组计算!
  13. TortoiseGit拉取gitee代码
  14. 华为老总任正非给公司患抑郁症员工的一封信
  15. 逻辑回归模型(一)——数学模型
  16. Java8新特性之三:Stream API
  17. 使用随机文件流类RandomAccessFile将一个文本文件倒置读出
  18. web前端学习(三):微信小程序基于H5规范,开发Android应用程序
  19. Mysql经典面试题(建议收藏)
  20. SQL SERVER 为现有表中增加列

热门文章

  1. C语言编程规范--常用缩写词
  2. 降低前端业务复杂度新视角:状态机范式
  3. Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建
  4. 使用 rose 将 c++代码转换为 uml 类图
  5. [react] createElement与cloneElement两者有什么区别?
  6. 重学java基础第十八课:卸载jdk和安装jdk
  7. 前端学习(2978):上午回顾
  8. [html] 写一个布局,当页面滚动一定高时,导航始终固定在顶部,反之恢复原位
  9. [js] 如何判断两个对象相等?
  10. 前端学习(2585):vue-cli创建项目