首页 > 其他分享 >【每日一题】Problem 489B. BerSU Ball

【每日一题】Problem 489B. BerSU Ball

时间:2023-06-27 13:44:50浏览次数:50  
标签:std Ball int pb pa 489B Problem 配对 size

原题

解决思路

排序+双指针

#include <bits/stdc++.h>

int main() {
  int n; std::cin >> n;
  std::vector<int> a(n + 1, 0);
  for (int i = 1; i <= n; ++i) std::cin >> a[i];

  int m; std::cin >> m;
  std::vector<int> b(m + 1, 0);
  for (int i = 1; i <= m; ++i) std::cin >> b[i];

  std::sort(a.begin(), a.end());
  std::sort(b.begin(), b.end());

  int pa, pb; pa = pb = 1;
  int ans = 0;
  while (pa < a.size() && pb < b.size()) {
    if (std::abs(a[pa] - b[pb]) <= 1) {
      ++pa;
      ++pb;
      ++ans;
    } else if (a[pa] > b[pb]) {
      ++pb;
    } else {
      ++pa;
    }
  }
  std::cout << ans << std::endl;
}
误区

是否存在 \(a[i]\) 与 \(a[i-1]\) 同时可以配对 \(b[j]\) 的情况,而由于 \(a[i]\) 提前与 \(b[j]\) 配对,导致后续 \(a[n]\) 无法与 \(b[m]\) 配对以及影响之后的配对情况?
答:不存在,最多是 \(a[i]\) 与 \(a[n]\) 一换一,总数量不变,不影响 \(a[n+1]\) 及之后的情况,可以用递推反证法证明

标签:std,Ball,int,pb,pa,489B,Problem,配对,size
From: https://www.cnblogs.com/HelloEricy/p/17508626.html

相关文章

  • 【每日一题】Problem 443B. Kuriyama Mirai's Stones
    原题解决思路两个数组,一个未排序,一个排序;使用前缀和的方式减少时间复杂度#include<bits/stdc++.h>intmain(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);intn;std::cin>>n;std::vector<int>v(n+1,0);f......
  • 【cs50 2022】lab1 && problem set1
    |lab1|#include<cs50.h>#include<stdio.h>intmain(void){//TODO:Promptforstartsizeintstart_size;do{start_size=get_int("Startsize:");}while(start_size<9);//TODO:Promptforend......
  • CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!) C. Tenzing and Balls
    一开始以为是贪心,后来发现不好贪于是选择了dp,但是dp有个小细节没注意到,后面wa了几发我们以状态来分,f[i]表示考虑i的最大区间合长度,每次转移的时候考虑两种情况,一种是a[i]前面有一样的数字,比较选了a[i]和不选a[i]两种情况下的最大值,还有一种就是a[i]为第一个出现的数字则选区间长......
  • AGC021E ball Eat chamelemons
    E-BallEatChameleons设颜色序列中有\(R\)个红球,\(B\)个蓝球,且有\(B+R=k\)然后分类讨论:\(R<B\)无解\(R>B\)这时有一种合法方案为:\(R-B\)只变色龙只用吃一个红球,剩下的\(n-(R-B)\)只变色龙吃的红球和蓝球的数量相等且最后吃的那个球是蓝球对于\(n-(R-B)\)只变色龙,......
  • AGC021E Ball Eat Chameleons 题解
    本文网址:https://www.cnblogs.com/zsc985246/p/17501300.html,转载请注明出处。传送门AGC021EBallEatChameleons题目翻译有\(n\)只变色龙,一开始都是蓝色。你会依次扔出\(k\)个球,每次扔出都要指定一只变色龙吃掉这个球。扔出的球可以是红色或蓝色。变色龙从蓝色变成红......
  • 【每日一题】Problem 359B. Permutation
    原题解决思路虽然题解思路里写着\(dp\),但是还是用最简单的\(math\)方法写了找规律题:如果结果为\(0\),只需要每个\(a_{2i-1}-a_{i}\)同向即可,即都为整数或负数如果结果为\(2k\),则只需要任意一个\(|a_{2i-1}-a_{i}|\)的值为\(k\),且与其他的\(a_{2i-1}-a_{i}\)方向......
  • 【每日一题】Problem 253B. Physics Practical
    原题解决思路定义\(dp[i][j]\)为对\(i\)元素做出选择后,要删除的最少元素个数对于\(i\),有两种情况,选或不选选:则找到\(y(y>2x)\)的个数,可以通过排序二分实现不选:则在\(i-1\)的最少删除个数的选择下\(+1\)#include<bits/stdc++.h>intbinarySearch(std::vect......
  • 【每日一题】Problem 234C. Weather
    原题解决思路还是先从二维数组开始,定义一个二维数组\(dp\),对于\(dp[i,j]\),\(i\)表示第\(i\)个元素,\(j\)表示当前元素的状态(正数或负数)\(dp[i,0]\)表示第\(i\)个元素为负数时,前\(i\)个元素中需要改动的元素数;\(dp[i,1]\)表示第\(i\)个元素为正数时,前\(i\)个......
  • F. Bags with Balls 第二类斯特林数
    BagswithBalls标号为奇数的个数为\(c=\frac{m+1}{2}\)标号为偶数个数为\(w=m-c\)答案显然为\(ANS=\sum_{i=1}^{n}C(n,i)c^iw^{n-i}i^k\)直接算是\(O(n)\)的,但这道题\(n\)为\(1e9\)考虑第二类斯特林数化简\(i^k\)\(x^k=\sum_{i=1}^kC(x,i)s(k,i)i!\)\(ANS=\sum_{i=1}^{n}C......
  • 每日一题力扣 1262 https://leetcode.cn/problems/greatest-sum-divisible-by-three/
    、 题解这道题目核心就算是要知道如果x%3=2的话,应该要去拿%3=1的数字,这样子才能满足%3=0贪心sum不够%3的时候,就减去余数为1的或者余数为2的需要注意两个余数为1会变成余数为2的,所以可能减去2个余数为1核心代码如下publicintmaxSumDivThreeOther(int[]nums){​  ......