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

题意:

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

   实验记录本身满足:$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;
}

CodeForces 931C Laboratory Work 水题,构造的更多相关文章

  1. Codeforces Gym 100531G Grave 水题

    Problem G. Grave 题目连接: http://codeforces.com/gym/100531/attachments Description Gerard develops a Ha ...

  2. codeforces 706A A. Beru-taxi(水题)

    题目链接: A. Beru-taxi 题意: 问那个taxi到他的时间最短,水题; AC代码: #include <iostream> #include <cstdio> #i ...

  3. codeforces 569B B. Inventory(水题)

    题目链接: B. Inventory time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  4. Codeforces 489A SwapSort (水题)

    A. SwapSort time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  5. codeforces 688A A. Opponents(水题)

    题目链接: A. Opponents time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  6. CodeForces 534B Covered Path (水题)

    题意:给定两个速度,一个一初速度,一个末速度,然后给定 t 秒时间,还每秒速度最多变化多少,让你求最长距离. 析:其实这个题很水的,看一遍就知道怎么做了,很明显就是先从末速度开始算起,然后倒着推. 代 ...

  7. Codeforces Gym 100286I iSharp 水题

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

  8. CodeForces 705A(训练水题)

    题目链接:http://codeforces.com/problemset/problem/705/A 从第三个输出中可看出规律, I hate that I love that I hate it ...

  9. CodeForces Gym 100685C Cinderella (水题)

    题意:给定 n 个杯子,里面有不同体积的水,然后问你要把所有的杯子的水的体积都一样,至少要倒少多少个杯子. 析:既然最后都一样,那么先求平均数然后再数一下,哪个杯子的开始的体积就大于平均数,这是一定要 ...

随机推荐

  1. java8的Streams

    首先看一个问题:在这个task集合中一共有多少个OPEN状态的?计算出它们的points属性和.在Java 8之前,要解决这个问题,则需要使用foreach循环遍历task集合:但是在Java 8中可 ...

  2. 047、管理Docker Machine(2019-03012 周二)

    参考https://www.cnblogs.com/CloudMan6/p/7248188.html     用docker-machine创建machine的过程很简洁,非常适合多主机环境.除此之外 ...

  3. 020、搭建本地Registry(2019-01-11 周五)

    参考https://www.cnblogs.com/CloudMan6/p/6902325.html   Docker Hub 虽然方便,但还是有些限制,比如     1.需要Internet连接,上 ...

  4. MySQL 数据库应用程序编程

    普通用户使用客户端应用程序(Client Application)和服务器程序(Server Application)通信以取得服务, 而服务器程序通常要和数据库服务器通信以取得数据存取服务, 这时就 ...

  5. CSS3 transform-origin 属性

    <!DOCTYPE html> <html> <head> <style> #div1 { position: relative; height: 20 ...

  6. weui hd bd ft

    weui样式看到hd ,bd, ft hd 是header的缩写 bd 是body的缩写 ft 是footer的缩写

  7. luogu 2371 墨墨的等式

    1.背包dp #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) #define ll ...

  8. DNN网络(三)python下用Tensorflow实现DNN网络以及Adagrad优化器

    摘自: https://www.kaggle.com/zoupet/neural-network-model-for-house-prices-tensorflow 一.实现功能简介: 本文摘自Kag ...

  9. 百度地图web api使用案例

    效果如下: 1.获取位置的经纬度: 如坐标:114.110033,22.541098 获取经纬度: http://api.map.baidu.com/lbsapi/getpoint/index.htm ...

  10. PHP入门知识

    一.搭建开发环境 想要使用一门后端语言,当然是要先搭建开发环境,模拟出服务器环境,不然怎么体现出后端,所以就先大众使用使用的Apache.Mysql,如果不想那么多折腾,建议直接使用xampp或者wa ...