应该经常需要锻炼一下英语阅读理解能力和代码能力,所以以后还是需要多打打CF。

今天大概就是水一水找找感觉。

A. Neko Finds Grapes

$n$个箱子,$m$个钥匙 ($n,m \leq 10^6$),每个箱子有参数$a_i$,每个钥匙有参数$b_i$

当且仅当,$a_i + b_j \equiv 1 (mod 2)$,则说箱子和钥匙配对成功。

注意到,一个箱子只能和一个钥匙配对最多一次。

要求最大化配对数。

Solution : 直接统计即可,考虑配对只可能是奇数+偶数或者偶数+奇数。

所以答案必然是$\min\{ cnta_{奇} , cntb_{偶}\} +\min\{ cnta_{偶} , cntb_{奇}\}  $

# include <bits/stdc++.h>
using namespace std;
int cntA[2],cntB[2];
int n,m;
int main()
{
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++) {
        int t; scanf("%d",&t);
        cntA[t%2]++;
    } 
    for (int i=1;i<=m;i++) {
        int t; scanf("%d",&t);
        cntB[t%2]++;
    }
    int ans=min(cntA[1],cntB[0])+min(cntA[0],cntB[1]);
    printf("%d\n",ans);
    return 0;
}
A.cpp

相关文章:

  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
  • 2021-08-20
猜你喜欢
  • 2022-01-05
  • 2021-06-03
  • 2021-11-24
  • 2021-04-28
  • 2020-06-27
  • 2021-07-05
  • 2021-07-09
相关资源
相似解决方案