传送门

[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. Selenium 、WebDriver :Capability

    Selenium | WebDriver Capability 内容摘要: 1.WebDriver 通用配置 2.RemoteWebDriver特有配置 3.Grid特有配置 4.在使用特定浏览器时的 ...

  2. openSUSE搭建OpenVPN

    目录 openSUSE搭建OpenVPN 环境 安装openVPN服务端 安装easy-rsa工具 配置vars文件 创建服务端证书及key 创建客户端证书 疏理证书文件 服务端配置 启动openvp ...

  3. LNMP下动静分离部署phpmyadmin软件包

    LNMP环境肯定是先要配置好的.可以参考我之前的博客.那我们直接进行配置,我这里使用了三台机器进行动静分离部署,第一台负责nginx反向代理,第二台负责php-fpm应用程序以及mariadb的服务器 ...

  4. Ubuntu + python pip遇到的问题

    今天在做Flask跨源资源共享(CORS)的时候在安装flask-cors时遇到了两个问题. 首先我是在Ubuntu环境下安装的,整了好一会才弄得出来,现在整理一下. 安装flask-cors pip ...

  5. 【转】字符编码笔记:ASCII、Unicode、UTF-8 和 Base64

    1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一 ...

  6. 离线安装Cloudera Manager 5和CDH5(最新版5.9.3) 完全教程(六)CM的安装

    一.角色分配 Cloudera Manager Agent:向server端报告当前机器服务状态. Cloudera Manager Server:接受agent角色报告服务状态,以视图界面展现,方便 ...

  7. PCB (2)创建新工程原理图

    1创建一个新项目 2创建一个新的原理图图纸 3将原理图图纸添加到项目 4设置原理图选项 修改单位 设置图纸大小 图纸附加说明 5绘制原理图 打开库 之后连续放置的器件会在此基础上+1 名字 描述 6 ...

  8. MATLAB——神经网络sim仿真函数

  9. docker运行tomcat

    1.下载tomcat docker pull tomcat 运行tomcat docker run -it -p 8888:8080 tomcat 查看tomcat内的文件 docker exec - ...

  10. QT 布局管理器的使用

    很多的时候,需要布局管理器的使用, 在此介绍一下布局管理器的使用,直接上代码 #include "widget.h" #include "ui_widget.h" ...