*这种题好像不用写题解...
题意:
一个人要改动别人的实验记录,实验记录记录是一个集合
实验记录本身满足:$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 水题,构造的更多相关文章
-
Codeforces Gym 100531G Grave 水题
Problem G. Grave 题目连接: http://codeforces.com/gym/100531/attachments Description Gerard develops a Ha ...
-
codeforces 706A A. Beru-taxi(水题)
题目链接: A. Beru-taxi 题意: 问那个taxi到他的时间最短,水题; AC代码: #include <iostream> #include <cstdio> #i ...
-
codeforces 569B B. Inventory(水题)
题目链接: B. Inventory time limit per test 1 second memory limit per test 256 megabytes input standard i ...
-
Codeforces 489A SwapSort (水题)
A. SwapSort time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...
-
codeforces 688A A. Opponents(水题)
题目链接: A. Opponents time limit per test 1 second memory limit per test 256 megabytes input standard i ...
-
CodeForces 534B Covered Path (水题)
题意:给定两个速度,一个一初速度,一个末速度,然后给定 t 秒时间,还每秒速度最多变化多少,让你求最长距离. 析:其实这个题很水的,看一遍就知道怎么做了,很明显就是先从末速度开始算起,然后倒着推. 代 ...
-
Codeforces Gym 100286I iSharp 水题
Problem I. iSharpTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...
-
CodeForces 705A(训练水题)
题目链接:http://codeforces.com/problemset/problem/705/A 从第三个输出中可看出规律, I hate that I love that I hate it ...
-
CodeForces Gym 100685C Cinderella (水题)
题意:给定 n 个杯子,里面有不同体积的水,然后问你要把所有的杯子的水的体积都一样,至少要倒少多少个杯子. 析:既然最后都一样,那么先求平均数然后再数一下,哪个杯子的开始的体积就大于平均数,这是一定要 ...
随机推荐
-
jquery 获取和设置 checkbox radio 和 select option的值?
============== 获取和设置 checkbox radio 和 select的值? === val()函数, 其名字就表达了 它的意思: 他就是= value 的简写! val就是valu ...
-
ASP.NET MVC 伪静态的实现
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.Ignore ...
-
创建Thread类的子类
package unit8; public class MyThreadTest { public static void main(String[] args) { MyThread t1 = ne ...
-
CSS之圣杯布局与双飞翼布局
圣杯布局 三行等高 HTML: <!DOCTYPE html><html><head> <meta charset="utf-8"& ...
-
C变量类型和作用域
C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域也不同.C语言中的变量,按照作用域的范围可分为两种, 即局部变量和全局变量. 一.局部变量 局部变量也称为内部变量.局部变量是在函数内作定 ...
-
Google视频搜索
本博文的主要内容有 .Google视频搜索的介绍 .Google视频搜索之一:普通搜索 .Google视频搜索之二:高级搜索 1.Google视频搜索的介绍 https://zh.wiki ...
-
[NOIP2017] 逛公园
[NOIP2017] 逛公园 题目大意: 给定一张图,询问长度 不超过1到n的最短路长度加k 的1到n的路径 有多少条. 数据范围: 点数\(n \le 10^5\) ,边数\(m \le 2*10^ ...
-
string_array.go
package app import ( "strings" ) type StringArray []string func (a *StringArray) Set(s ...
-
Spark编译
Spark的运行版本使用mvn编译,已经集成在源码中.如果机器有外网或者配置了http代理,可以直接调用编译命令来进行编译. windows&Linux命令如下: ./build/mvn \ ...
-
Flash Builder 4的快捷方式和调试技巧
Flash Builder 4的快捷方式和调试技巧 来自于flex开发人员中心:http://www.adobe.com/cn/devnet/flex/articles/flashbuilder_sh ...