CodeForces 931C Laboratory Work 水题,构造
*这种题好像不用写题解...
题意:
一个人要改动别人的实验记录,实验记录记录是一个集合
实验记录本身满足:$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 个杯子,里面有不同体积的水,然后问你要把所有的杯子的水的体积都一样,至少要倒少多少个杯子. 析:既然最后都一样,那么先求平均数然后再数一下,哪个杯子的开始的体积就大于平均数,这是一定要 ...
随机推荐
- layui打印html页面转成pdf
<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8&q ...
- 【1】【leetcode-93】复原IP地址
(不会,典型) 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135 ...
- java代码实现ftp服务器的文件上传和下载
java代码实现文件上传到ftp服务器: 1:ftp服务器安装: 2:ftp服务器的配置: 启动成功: 2:客户端:代码实现文件的上传与下载: 1:依赖jar包: 2:sftpTools 工具类: ...
- Mac 键盘符号 及VSCode快捷键 说明
Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Control ↩ == Return/Enter ⌫ == De ...
- jQuery two way bindings(双向数据绑定插件)
jQuery two way bindings https://github.com/petersirka/jquery.bindings 这是一个简单的jQuery双向绑定库. 此插件将HTML元素 ...
- mysql比较运算符和函数
mysql> SELECT 15 BETWEEN 1 AND 22;+---------------------+| 15 BETWEEN 1 AND 22 |+---------------- ...
- Linux之Ubuntu添加/移除个人软件包存档的源[PPA,Personal Package Archives]
现在很多第三方软件还需要添加PPA软件源到Ubuntu系统当中,但是添加了PPA之后,软件可以直接在软件中心进行安装并会自动提示升级,这就是Ubuntu带来的方便,现在我们就来看看如何添加PPA软件源 ...
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week2, Assignment(Optimization Methods)
声明:所有内容来自coursera,作为个人学习笔记记录在这里. 请不要ctrl+c/ctrl+v作业. Optimization Methods Until now, you've always u ...
- EcustOJ P109跳一跳(离散化+dp)
题目链接 感觉这道题我看了很多天,胡思乱想啊,一开始觉得记忆化搜索会可能T啊,,可能出题人的数据卡的好就稳T了的感觉..后来想了想,好像离散化一下,记一下位置之后再记忆化搜索就应该稳了吧..(好像直接 ...
- javascript删除cookie
代码很简单 function deleteCookie (cookieName) { document.cookie = `${cookieName}=; expires=${new Date(0). ...