ABC460_C 题解

msjing在T2卡了1个小时没过但是T310分钟抬了

solve

  • 说白了就是两两配对,判条件,直接排序手法扫
  • sample3过不了
  • 发现排序后不一定是一一对应,即\(a_i->b_i\)不正确,用你说啊
  • 换一种,分别扫a,b,一个个比
  • 也可以考虑二叉堆
  • 其实就是双指针扫描,直接干

code

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
constexpr int maxn=2e5+10;
long long n,m;
long long a[maxn],b[maxn];
int main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin >> n >> m;
	for (long long i=1;i<=n;i++) cin >> a[i];
	for (long long i=1;i<=m;i++) cin >> b[i];
	sort(a+1,a+1+n);
	sort(b+1,b+1+m);
	long long ans=0;
	for (long long i=1,l=1;i<=m && l<=n;i++,l++)
	{
		if (b[i]<=a[l]*2) ans++;
		else
		{
			while (l<n)
			{
				l++;
				if (b[i]<=a[l]*2)
				{
					ans++;
					break;
				}
			}
		}
	}
	cout << ans << endl;
    return 0;
}
posted @ 2026-05-31 10:00  msjing  阅读(11)  评论(0)    收藏  举报