想不到问题所在,但是还是有一半是wa
查看原帖
想不到问题所在,但是还是有一半是wa
90347
NiII_CMeNOH_2楼主2023/12/17 15:50
#include<bits/stdc++.h>
using namespace std;
int main()
{
	const int maxn=1E6+4;int n;int m;
	long long a[maxn];long long b[maxn];
	cin>>n>>m;
	for(int i=1;i<=n;i++){	scanf("%lld",&a[i]); a[i]*=i;	}
	for(int j=1;j<=m;j++){	scanf("%lld",&b[j]); b[j]*=j;	}
	sort(a,a+n+1);sort(b,b+m+1);
	int i=1;int j=1;int ans=0;
	for(;i+j<=m+n;)
	{
	//	cout<<i<<' '<<j<<'\n';
		if(i==n&&a[i]<b[j]) break;
		if(j==m&&b[j]<a[i]) break;//ai中最大的也小于bj,那么后面肯定不会相等 
		if(a[i]==0||a[i]<b[j])	{	i++; 	continue;} 
		if(b[j]==0||b[j]<a[i])	{	j++; 	continue;} //特判0
		//注意到前面把ai<bj与ai>bj都排掉了,再写ai==bj属于脱裤子放屁 
		ans++; //cout<<i<<','<<a[i]<<' '<<j<<','<<b[j]<<'\n';
		if(i<n) i++; else j++;
	}
	cout<<ans;
	return 0;
}

没有tle,只有wa

2023/12/17 15:50
加载中...