85分求调,能想到的都模了,int128也试过还是过不了
查看原帖
85分求调,能想到的都模了,int128也试过还是过不了
260107
YDFhyx楼主2024/7/26 00:18
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN=1e6+10;
const int Mod=1e9+7;
ll n,m,k,x,y,xx,yy;
ll ans;
int main(){
	cin>>n>>m>>k;
	n=(n%Mod+Mod)%Mod;
	m=(m%Mod+Mod)%Mod;
	cin>>x>>y;
	x=(x%Mod+Mod)%Mod;
	y=(y%Mod+Mod)%Mod;
	while(k--){
		cin>>xx>>yy;
		xx=(xx%Mod+Mod)%Mod;
		yy=(yy%Mod+Mod)%Mod;
		if(xx!=x&&yy!=y){
			if(xx>x)ans=((ans+n-xx+1+Mod)%Mod+Mod)%Mod;	
			else ans=((ans+xx)%Mod+Mod)%Mod;
			if(yy>y)ans=((ans+m-yy+1+Mod)%Mod+Mod)%Mod;
			else ans=((ans+yy)%Mod+Mod)%Mod;
		}else{
			if(xx==x){
				if(yy>y){
					ans=(ans+(m-yy+1+Mod)%Mod*(n+m-2+Mod)%Mod+Mod)%Mod;//第一步捡 
					ans=(ans+(yy-2+Mod)%Mod*(m-yy+1+Mod)%Mod+Mod)%Mod;//第二步捡 
				}else{
					ans=(ans+(yy)%Mod*(n+m-2+Mod)%Mod+Mod)%Mod;//第一步 
					ans=(ans+(m-yy-1+Mod)%Mod*(yy)%Mod+Mod)%Mod;
				}
			}else{
				if(xx>x){
					ans=(ans+(n-xx+1+Mod)%Mod*(n+m-2+Mod)%Mod+Mod)%Mod;//第一步捡 
					ans=(ans+(xx-2+Mod)%Mod*(n-xx+1+Mod)%Mod+Mod)%Mod;
				}else{
					ans=(ans+(xx)%Mod*(n+m-2+Mod)%Mod+Mod)%Mod;//第一步 
					ans=(ans+(n-xx-1+Mod)%Mod*(xx)%Mod+Mod)%Mod;
				}
			}
		}
//		cout<<ans<<endl;
	}
	cout<<(ans%Mod+Mod)%Mod;
	return 0;
}
2024/7/26 00:18
加载中...