Codeforces Round #673 (Div. 2) B. Two Arrays (贪心)
2024-09-08 07:43:06
题意:给你一组数\(a\)和一个数\(T\),将这组数分为两组\(c\)和\(d\),定义\(f(x)\)为数组\(x\)中任意两个不同元素的和为\(T\)的个数,问为了使\(min(f(c)+f(d))\),应该怎样对\(a\)分组.
题解:我们可以分成三种情况,假如一组数中所有元素都\(< \frac{T}{2}\),或者\(>\frac{T}{2}\),那么它们的\(f(x)\)都为\(0\),然而对于\(a[i]=\frac {T}{2}\)的情况,我们将其交叉放在两组即可.
代码:
int t;
int n;
ll T;
ll a[N]; int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>t;
while(t--){
cin>>n>>T;
for(int i=1;i<=n;++i){
cin>>a[i];
}
int col;
int cnt=0;
for(int i=1;i<=n;++i){
if(T%2==0 && a[i]*2==T){
cnt=1-cnt;
col=cnt;
}
else if(a[i]<=T/2){
col=0;
}
else col=1;
cout<<col<<" ";
}
cout<<'\n';
} return 0;
}
最新文章
- iOS之计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等
- linux 中更改用户权限和用户组的命令chmod,chgrp实例
- C# 在异步中使用HttpWebRequest出现的“正在终止线程”错误的解决方案
- 使用Apache Commons Configuration读取配置信息
- 后台代码对iBatis配置文件中具体的sql语句的调用实现(被封装的增删改查)
- OpenJudge计算概论-比饭量【枚举法、信息数字化】
- HTML5学习笔记简明版(1):HTML5介绍与语法
- webBrowser执行js的方法,并返回值,c#后台取值
- 跨域名设置cookie或获取cookie
- 数据结构(主席树):HDU 4729 An Easy Problem for Elfness
- PHP给图片加文字水印
- NYOJ--114--某种序列(大数)
- PHP中include与require的特点和区别说明
- 【AIM Tech Round 4 (Div. 2) D Prob】
- 百度语音合成AI
- hdu多校第4场E. Matrix from Arrays HDU 二维前缀和
- Javascript高级编程学习笔记(75)—— 表单(3)表单字段
- ACM-ICPC 2018 沈阳赛区网络预赛-K:Supreme Number
- gdb入门
- SQL Server--疑难杂症之坑爹的Windows故障转移群集