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 *的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #618 (Div.1) (Div.2) (CF1299) (CF1300)

CF1300 C. Anu Has a Function

CF1300E Water Balance

CF1300E-Water Balance 贪心

CF1300D-Aerodynamic 求点集是否中心对称

CF1300C-Anu Has a Function 思维