Atcoder ABC 384
好菜好菜好菜
A.aaaadaa
模拟
void solve(){
int n;
cin >> n;
char s1,s2;
cin >> s1 >> s2;
string s;
cin >> s;
for(int i = 0;i < s.size();i++){
if(s[i] != s1){
s[i] = s2;
}
}
cout << s << endl;
}
B.ARC Division
按题意模拟,先判断场次范围,再判断自己的分数
void solve(){
int n,r;
cin >> n >> r;
int sum = r;
for(int i = 1;i <= n;i++){
int div,sc;
cin >> div >> sc;
if(div == 1){
if(sum >= 1600 && sum <= 2799){
sum += sc;
}
}else{
if(sum >= 1200 && sum <= 2399){
sum += sc;
}
}
}
cout << sum << endl;
}
C.Perfect Standings
用二进制处理,00001就是A,00011就是B,以此类推。 对于每一种排列组合用优先队列进行排序,可以写出代码如下
typedef pair<int,int> PII;
priority_queue<PII> q;
int w[6];
char ch[6]={'E','D','C','B','A'};
void solve(){
for(int i=0;i<5;i++)cin >> w[i];
reverse(w,w+5);
for(int i=1;i<1<<5;i++)
{
int value=0;
for(int j=0;j<5;j++)
if(i>>j&1)value+=w[j];
q.push({value,i});
}
while(q.size())
{
auto t=q.top();q.pop();
for(int i=4;i>=0;i--)
if(t.second>>i&1)cout<<ch[i];
cout<<endl;
}
}