CF777B 1300 *
Posted blackatao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF777B 1300 *相关的知识,希望对你有一定的参考价值。
题意
有两个人S和M,他们每人有一段长度为N的数字,两个人在每一轮游戏中都可以按顺序拿出一个数字,谁的数字小谁就接受一次惩罚。若相等两者都没有惩罚。另外,M珂以重新安排自己数字的顺序,问 M的最少被惩罚次数 和 S的最多被惩罚次数 是多少。1<=n <= 1000。
解析
都从最小的比较,如果M可以赢,那就出这张牌,因为这已经是M最小的牌了,不亏
如果M不能赢,就留到最后出给S最大的牌
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int a[N],b[N];
int n;
int main()
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%1d",&a[i]);
for(int i=1;i<=n;i++)
scanf("%1d",&b[i]);
sort(a+1,a+1+n);
sort(b+1,b+1+n);
//m 不输的次数最多
int j = 1,res1 = 0,res2 = 0;
for(int i=1;i<=n;i++)
if(b[i] >= a[j])
j ++;
res1 ++;
j = 1;//m赢的次数最多
for(int i=1;i<=n;i++)
if(b[i] > a[j])
j ++;
res2 ++;
cout << n - res1 << endl << res2;
return 0;
以上是关于CF777B 1300 *的主要内容,如果未能解决你的问题,请参考以下文章