求助!80分最后四个点不过啊!
查看原帖
求助!80分最后四个点不过啊!
778782
lkrabc楼主2023/8/27 12:37
#include <bits/stdc++.h>

using namespace std;

const int N = 2e5+10;
int l[N],h[N];
int n,m,q,k;
int op,x;
long long cnt;
int main(){
	cin >> n >> m>> q >> k;
	while(q--){
		cin >> op >> x;
		if(op==1) h[x]++;
		else l[x]++;
	}
	if(n+m>6000&&k==2){ //特判测试点10~12
		long long ansh1=0,ansh2=0,ansl1=0,ansl2=0;
		for(int i = 1;i<=n;i++){
			if(h[i]%2==0) ansh2++;
			else ansh1++;
		}
		for(int i = 1;i<=m;i++){
			if(l[i]%2==0) ansl2++;
			else ansl1++;
		}
		cnt = ansh1*ansl2+ansh2*ansl1;
		cout << cnt;
		return 0;
	}
	if(n+m>6000){//特判13~16
		for(int i = 1;i<=n;i++){
			if(h[i]%k!=0) cnt+=m;
		}
		cout << cnt;
		return 0;
	}
   //否则就正常判断
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=m;j++){
			if((l[j]+h[i])%k!=0) cnt++; 
		}
	}
	cout << cnt;
	return 0;
}

求求各位大佬相助!

2023/8/27 12:37
加载中...