专栏文章

CF2141B Games

CF2141B题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@minoq5lj
此快照首次捕获于
2025/12/02 05:52
3 个月前
此快照最后确认于
2025/12/02 05:52
3 个月前
查看原文

题目传送门

思路

我们设 Alice 独有的游戏(即不在对方游戏列表里的游戏)数量为 cntacnta,Bob 独有的游戏数量为 cntbcntb
接下来我们可以分两种情况来讨论:
  1. cnta>cntbcnta>cntb,此时 Bob 所有独有的游戏都会被推荐(即推荐 cntbcntb 次),又因为 Alice 先开始推荐,所以 Alice 会推荐 cntb+1cntb+1 次。最后加上推荐成功的那一次,总次数为 2×cntb+22 \times cntb+2
  2. cntacntbcnta \le cntb,此时 Alice 所有独有的游戏都会被推荐(即推荐 cntacnta 次),但 Bob 这时就只能推荐 cntacnta 次(因为他后推荐)。最后加上推荐成功的那一次,总次数为 2×cnta+12 \times cnta+1

AC Code:

CPP
#include <bits/stdc++.h>
using namespace std;
const int N=100+4;
int a[N],b[N];

void solve()
{
    int n,m;
    cin >>n>>m;
    int cnta=n,cntb=m;
    for(int i=1;i<=n;i++) cin >>a[i];
    for(int i=1;i<=m;i++) cin >>b[i];
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(a[i]==b[j]) cnta-- , cntb--;
        }
    }
    if(cnta>cntb) cout <<2*cntb+2;
    else cout <<2*cnta+1;
    cout <<'\n';
}
int main()
{
    int t;
    cin >>t;
    while(t--) solve();
    return 0;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...