传送门

[http://codeforces.com/contest/1051/problem/C]

题意

给你一堆数,问是否可以分为两堆使得两堆里只出现一下的数字的种类相等,可以输出任意一种分的方式

分析

具体看代码

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//freopen("in.txt","r",stdin);
int n,i;
int a[110],b[110];
while(cin>>n){
memset(b,0,sizeof(b));
for(i=0;i<n;i++){
cin>>a[i];
b[a[i]]++;//统计每个数字的个数
}
int cnt=0;
bool f=false,t=false;
for(i=1;i<=100;i++){
if(b[i]==1)
cnt++;//统计个数为1的种类数
if(b[i]>2) f=true;//看有没有个数大于2的
}
int h=1; if(cnt%2==0)//如果个数为1的数字种类为偶数肯定可以分为两个集合均即可
{//剩下的大于等于2的随便扔进那一堆
cout<<"YES\n";
for(i=0;i<n;i++){
if(b[a[i]]>1) cout<<'A';
else if(b[a[i]]==1&&h==1){
cout<<'A';
h*=-1;
}
else if(b[a[i]]==1&&h==-1){
cout<<'B';
h*=-1;
}
}
cout<<endl;
} else if(cnt%2==1&&f){//只有个数为1的数字种类为奇数且有个数大于2的才可以均分
cout<<"YES\n";//具体操作把一个大于2的一个拿来凑使得个数为1的数字种类为偶数,剩下的大于等于2的随便扔进那一堆
for(i=0;i<n;i++){
if(b[a[i]]==2) cout<<'A'; else if(b[a[i]]>2&&t){
cout<<'A';
}
else if(b[a[i]]>2&&!t){
cout<<'B';
t=true;
}
else if(b[a[i]]==1&&h==1){
cout<<'A';
h*=-1;
}
else if(b[a[i]]==1&&h==-1){
cout<<'B';
h*=-1;
}
}
cout<<endl;
}
else cout<<"NO\n";//剩下皆不可以均分为俩个集合
}
return 0;
}

C. Vasya and Multisets的更多相关文章

  1. Vasya and Multisets CodeForces - 1051C(英语限制了我的想象力)

    题意: 对输入的每个数都进行分配到两个多重集中,问分配完以后 每个多重集中的个数为1的元素是否相等  相等则输出一个分配方式, 不想等为NO 解析: 三种情况 1.原数列中个数为1 的数的个数为偶数 ...

  2. 2018.9.20 Educational Codeforces Round 51

    蒟蒻就切了四道水题,然后EF看着可写然而并不会,中间还WA了一次,我太菜了.jpg =.= A.Vasya And Password 一开始看着有点虚没敢立刻写,后来写完第二题发现可以暴力讨论,因为保 ...

  3. Educational Codeforces Round 51 (Rated for Div. 2)

    做了四个题.. A. Vasya And Password 直接特判即可,,为啥泥萌都说难写,,,, 这个子串实际上是忽悠人的,因为每次改一个字符就可以 我靠我居然被hack了???? %……& ...

  4. CodeForces Educational Codeforces Round 51 (Rated for Div. 2)

    A:Vasya And Password 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen(&q ...

  5. Codeforces Edu Round 51 A-D

    A. Vasya And Password 模拟题,将所缺的种类依次填入"出现次数$ >1 $"的位置,替换掉Ta即可. #include <iostream> ...

  6. Milliard Vasya's Function-Ural1353动态规划

    Time limit: 1.0 second Memory limit: 64 MB Vasya is the beginning mathematician. He decided to make ...

  7. CF460 A. Vasya and Socks

    A. Vasya and Socks time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  8. 递推DP URAL 1353 Milliard Vasya's Function

    题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...

  9. Codeforces Round #281 (Div. 2) D. Vasya and Chess 水

    D. Vasya and Chess time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

随机推荐

  1. Pygame安装教程

    1.python --version  查看安装的Python版本, pip --version  查看安装的pip版本, 升级pip命令: python -m pip install --upgra ...

  2. Git提交新项目

    Github或者码云上新建项目 $ git init $ git add * $ git remote add origin https://gitee.com/demo/demo.git $ git ...

  3. HDFS的namenode从单节点扩展为HA需要注意的问题

    扩展为HA需要注意的问题 原Namenode称为namenode1,新增的Namenode称为namenode2. 从namenode单节点扩展为HA模式官网上有详细的教程,下面是扩展过程中疏忽的地方 ...

  4. CSS3渐变——径向渐变

    上节在<再说CSS3渐变——线性渐变>和大家一起学习了CSS3 Gradient中径向渐变最新语法(称得上是W3C的标准语法)相关知识以及其基本使用.今天我们在这一篇中主要和大家一起来了解 ...

  5. JavaScript中的typeof操作符用法实例

    在Web前端开发中,我们经常需要判断变量的数据类型.鉴于ECMAScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof就是负责提供这方便信息的操作符.   对一个值使用t ...

  6. go标准库的学习-reflect

    参考: https://studygolang.com/pkgdoc http://c.biancheng.net/golang/concurrent/ 导入方式: import "refl ...

  7. nat表使用

    Net Address Translation 网络地址转换 IP地址 私网IP:nat技术将私网IP转换公网IP 公网IP: iptables nat表:三条链 主要用PREROUTING,POST ...

  8. oracle 定期迁移分区表数据(不落地)

    [oracle@SJ ~]$ cat /home/oracle/JY_SJ.sh #!/bin/bashsource /home/oracle/.bash_profileSDATE=$(date  + ...

  9. MATLAB——神经网络init初始化函数和adapt函数

  10. sql截取日期/时间的单独部分,比如年、月、日、小时、分钟等等

    可以使用EXTRACT() 函数.(oracle和mysql都有该函数) 语法: EXTRACT(unit FROM date) date 参数是合法的日期表达式.unit 参数可以是下列的值:YEA ...