Codeforces 727D
2016-10-17 01:02
357 查看
思路:先把单个的选了,然后从S,M开始,每种人都优先选小的,有衣服不够就直接NO。和731B的思路有点类似。
#include<bits/stdc++.h> using namespace std; #define mod 1000000007 #define PI acos(-1.0) #define INF 0x3f3f3f3f typedef long long LL; typedef unsigned long long ULL; const int maxn=100005; char s[20]; char size[20][20]={"S","M", "L", "XL", "XXL", "XXXL","S,M","M,L","L,XL","XL,XXL","XXL,XXXL"}; int num[10]; vector<int>cnt1[10],cnt2[10]; int n; int p[maxn]; int main() { for(int i=0;i<6;i++){ scanf("%d",num+i); } scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%s",s); for(int j=0;j<11;j++){ if(strcmp(s,size[j])==0){ if(j<6){ cnt1[j].push_back(i); } else { cnt2[j-6].push_back(i); } p[i]=j; break; } } } for(int i=0;i<6;i++){ num[i]-=cnt1[i].size(); if(num[i]<0){ printf("NO\n"); return 0; } } int pos=0; for(int i=0;num[0]>0&&i<cnt2[0].size();i++){ p[cnt2[0][pos++]]=0; num[0]--; } for(int i=0;i<5;i++){ for(int j=pos;j<cnt2[i].size();j++){ p[cnt2[i][j]]=i+1; num[i+1]--; } if(num[i+1]<0){ printf("NO\n");return 0; } pos=0; for(int j=0;num[i+1]>0&&j<cnt2[i+1].size();j++){ num[i+1]--; p[cnt2[i+1][pos++]]=i+1; } } if(num[5]<0){ printf("NO\n"); } else { printf("YES\n"); for(int i=0;i<n;i++){ printf("%s\n",size[p[i]]); } } return 0; }
相关文章推荐
- Codeforces 727D-T-shirts Distribution
- CodeForces #?(727A|727B|727D|727F)|贪心|动态规划
- 【codeforces 727D】T-shirts Distribution
- CodeForces 197B Limit
- Codeforces--630A--Again Twenty Five! (水题)
- 【离线】【深搜】【树】Codeforces 707D Persistent Bookcase
- Codeforces 781C Underground Lab
- codeforces 816B
- CodeForces 932A Palindromic Supersequence
- Codeforces 519D A and B and Interesting Substrings
- CodeForces 632A-Grandma Laura and Apples
- codeforces 700C. Break Up 枚举
- codeforces 551d[补]
- codeforces 802I 后缀自动机
- CodeForces - 932D Tree [倍增+二分]
- Codeforces 398A Cards 暴力
- Codeforces 631A - Interview
- codeforces 681C Heap Operations
- codeforces 208 E. Blood Cousins (dsu on the tree)
- Codeforces 840D Destiny 【主席树】