【codeforces 727D】T-shirts Distribution
【题目链接】:http://codeforces.com/problemset/problem/727/D
【题意】
给你6种尺寸的衣服;
他们的尺码依次为S, M, L, XL, XXL, XXXL;
给你每种衣服的件数;
以及每个人想要的衣服种类;
(但有些人可能不知道自己要的是哪一种衣服,则他们对这相邻的两种衣服都接受)
然后让你去分配这6种衣服;
让每个人都满意;
【题解】
对于单个选择的;直接让他们满意;
给他们想要的;
对于相邻选择的;
考虑”S,M”,”M,L”,”L,XL”,”XL,XXL”,”XXL,XXXL”
可以看到S只有一种人要,其他的人都不会要S了
所以对于选择S、M的,
优先把S衣服给它;
如果S不够了,再分M的;
如果不行、就无解;
这样我们又把S、M的排除掉了,
对于剩下的
“M,L”,”L,XL”,”XL,XXL”,”XXL,XXXL”
M也只有一种人要;
则对于M、L也优先分配M;
不足的再用L补
很棒的贪心
【Number Of WA】
0
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1e5+100;
const string idx[11]={"S","M","L","XL","XXL","XXXL","S,M","M,L","L,XL","XL,XXL","XXL,XXXL"};
int now[6],n,p[N],ans[N];
string s;
int zzk(string t)
{
rep1(i,0,10)
if (idx[i]==t)
return i;
}
int main()
{
//freopen("F:\\rush.txt","r",stdin);
ios::sync_with_stdio(false),cin.tie(0);//scanf,puts,printf not use
rep1(i,0,5) cin>>now[i];
cin>>n;
rep1(i,1,n)
{
cin >> s;
rep1(j,0,10)
if (s == idx[j])
p[i] = j;
}
rep1(i,1,n)
if (p[i]<=5)
{
if (now[p[i]])
{
now[p[i]]--;
ans[i] = p[i];
}
else
return cout << "NO"<<endl,0;
}
rep1(k,6,10)
{
int pos = idx[k].find(',',0);
int p1 = zzk(idx[k].substr(0,pos)),p2 = zzk(idx[k].substr(pos+1,10));
//cout <<p1<<' '<<p2<<endl;
rep1(i,1,n)
if (p[i]==k)
{
if (now[p1])
{
now[p1]--;
ans[i] = p1;
continue;
}
if (now[p2])
{
now[p2]--;
ans[i] = p2;
continue;
}
return cout << "NO"<<endl,0;
}
}
cout <<"YES"<<endl;
rep1(i,1,n)
cout << idx[ans[i]] << endl;
return 0;
}
【codeforces 727D】T-shirts Distribution的更多相关文章
- 【codeforces 798D】Mike and distribution
[题目链接]:http://codeforces.com/contest/798/problem/D [题意] 让你选一个下标集合 p1,p2,p3..pk 使得2*(a[p1]+a[p2]+..+a ...
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- 【23.33%】【codeforces 557B】Pasha and Tea
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【codeforces 707E】Garlands
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...
- 【codeforces 707C】Pythagorean Triples
[题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...
- 【codeforces 709D】Recover the String
[题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...
- 【codeforces 709B】Checkpoints
[题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...
- 【codeforces 709C】Letters Cyclic Shift
[题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...
- 【Codeforces 429D】 Tricky Function
[题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ...
随机推荐
- svn 插件安装
方法一:link安装 1.从官网下载site-1.6.18.zip文件. 2.从中解压出features与 plugins目录.拷贝到D:\MyEclipse\myPlugin\svn里面,其他的* ...
- Mac下搭建hexo3.0博客
Mac下搭建hexo3.0博客(文章同步自个人博客站点以及Github博客https://xingstarx.github.io/) window环境下搭建hexo博客 详细内容能够參考这一篇文章怎样 ...
- 《游戏脚本的设计与开发》-(RPG部分)3.8 通过脚本来自由控制游戏(一)
注意:本系列教程为长篇连载无底洞.半路杀进来的朋友,假设看不懂的话.请从第一章開始看起.文章文件夹请点击以下链接. http://blog.csdn.net/lufy_legend/article/d ...
- SQL SERVER 读书笔记:非聚集索引
对于有聚集索引的表,数据存储在聚集索引的叶子节点,而非聚集索引则存储 索引键值 和 聚集索引键值.对于非聚集索引,如果查找的字段没有包含在索引键值,则还要根据聚集索引键值来查找详细数据,此谓 Book ...
- JDK8新特性:函数式接口
一,定义 函数式接口,英文为Functional Interface.首先它是一个接口,那么它与其它接口有什么不同呢?不同点就是在这个接口中只允许有一个抽象方法. 这里的只允许一个抽象方法不包括以下几 ...
- 20. Valid Parentheses[E]有效的括号
题目 Given a string containing just the characters '(',')','[',']','{' and '}',determine if the input ...
- java中字符串比较==和equals
1 总体来说java中字符串的比较是==比较引用,equals 比较值的做法.(equals 对于其他引用类型比较的是地址,这是因为object的equals方法比较的是引用),但是不同的声明方法字符 ...
- Super超级ERP系统---(8)订单管理--订单创建
订单管理是ERP系统中一个重要模块,客户下订单,ERP通过订单来为客户进行配送.订单模块主要包括订单创建,订单修改,订单审核,订单取消,订单分配,订单打印,订单拣货,订单出库.在随后的几节里我们看看这 ...
- Docker 配置与实践清单
https://mp.weixin.qq.com/s/yeEkF5DKa9IjmIvuzOTT3g
- SQLServer int转float
例: select 2/4 会得到0 改为 select 2/4.0 则会得到0.500000 也同时达到了int转float的效果