C. Vasya and Multisets
传送门
[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的更多相关文章
- Vasya and Multisets CodeForces - 1051C(英语限制了我的想象力)
题意: 对输入的每个数都进行分配到两个多重集中,问分配完以后 每个多重集中的个数为1的元素是否相等 相等则输出一个分配方式, 不想等为NO 解析: 三种情况 1.原数列中个数为1 的数的个数为偶数 ...
- 2018.9.20 Educational Codeforces Round 51
蒟蒻就切了四道水题,然后EF看着可写然而并不会,中间还WA了一次,我太菜了.jpg =.= A.Vasya And Password 一开始看着有点虚没敢立刻写,后来写完第二题发现可以暴力讨论,因为保 ...
- Educational Codeforces Round 51 (Rated for Div. 2)
做了四个题.. A. Vasya And Password 直接特判即可,,为啥泥萌都说难写,,,, 这个子串实际上是忽悠人的,因为每次改一个字符就可以 我靠我居然被hack了???? %……& ...
- CodeForces Educational Codeforces Round 51 (Rated for Div. 2)
A:Vasya And Password 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen(&q ...
- Codeforces Edu Round 51 A-D
A. Vasya And Password 模拟题,将所缺的种类依次填入"出现次数$ >1 $"的位置,替换掉Ta即可. #include <iostream> ...
- Milliard Vasya's Function-Ural1353动态规划
Time limit: 1.0 second Memory limit: 64 MB Vasya is the beginning mathematician. He decided to make ...
- CF460 A. Vasya and Socks
A. Vasya and Socks time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- 递推DP URAL 1353 Milliard Vasya's Function
题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...
- 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 ...
随机推荐
- git命令设置简写(别名)
### git命令设置简写(别名) 前言:有时候在执行git命令比较多的情况下,每次敲git命令比较费时,同时有些命令比如cherry-pick这种比较长时更是费时,所以可以通过设置命令行简写来设置. ...
- django中admin
我们在models中建立了表结构,想要在admin中表示: from django.contrib import admin from . import models for table in mod ...
- Linux 小知识翻译 - 「别名」
实际上,「别名」被用在多种场合下.比如「命令的别名」,「邮件地址的别名」等等. 所以,单独说「别名」的时候,根据不用的场合,代表的意思也不一样. 一般来说,「别名」是指意思差不多的东西. 「别名」的英 ...
- Ulua对象管理方式
不管是C++中还是在C#中,在都绕不开一个问题:类对象怎么在Lua中使用的问题,还好Lua提供了Userdata以及ligh Userdata结构类型,通过扩展可以处理这方面的问题.现在的很多框架也大 ...
- java死锁详解
进程死锁及解决办法: 一:死锁的概念: 死锁是进程死锁的简称 什么是死锁: 死锁是指多个进程循环等待他方占有的资源而无限的僵持下去的局面.很显然,没有外力作用,那么死锁涉及到的各个进 ...
- Spring 自动清除缓存的配置
- spring.resources.chain.strategy.content.enabled=true - spring.resources.chain.strategy.content.pat ...
- php一致性hash算法
原理部分转自:https://www.jianshu.com/p/e8fb89bb3a61 基本场景 比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object ...
- CSS3渐变——线性渐变
渐变背景一直以来在Web页面中都是一种常见的视觉元素.但一直以来,Web设计师都是通过图形软件设计这些渐变效果,然后以图片形式或者背景图片的形式运用到页面中.Web页面上实现的效果,仅从页面的视觉效果 ...
- redis 基本命令
set times 2017.12.12 设置键名键值 get times 获取键名 exists times 检测键名是否存在 type times 键名的类型 expire times 6 ...
- MetaMask/sw-controller
https://github.com/MetaMask/sw-controller Service Worker Controller Used to register a service worke ...