100->1。。
查看原帖
100->1。。
131303
Kisaragi_167楼主2022/11/28 23:12

比赛时少写第32行 infoj100->1 luogu100->7

afo 祝大家好运

#include <bits/stdc++.h>
using namespace std;
long long T,id,n,m,c,f,k,s1,s2,ss1,ss2;
long long ans1,ans2;
char a[1005][1005];
long long b[1005][1005],b2[1005][1005];//line col
int main(){
	cin>>T>>id;
	for(int TT=1;TT<=T;TT++){
		cin>>n>>m>>c>>f;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)cin>>a[i][j];
		ans1=0,ans2=0;
		for(int i=1;i<=n;i++){
			k=-1;
			for(int j=m;j>=1;j--){
				if(a[i][j]=='1')k=-1;
				else k++;
				b[i][j]=k;
			}
		}
		for(int j=1;j<=m;j++){
			k=-1;
			for(int i=n;i>=1;i--){
				if(a[i][j]=='1')k=-1;
				else k++;
				b2[i][j]=k;
			}
		}
		for(int j=1;j<=m;j++){  
			s1=b[n][j],s2=0,ss1=b[n][j]*b2[n][j],ss2=0;
			if(b[n][j]==-1){s1=0,s2=0,ss1=0,ss2=0;}
			for(int i=n-1;i>=1;i--){
				if(b[i][j]==-1){s1=0,s2=0,ss1=0,ss2=0;continue;}
				ans1=(ans1+(b[i][j]*s2)%998244353)%998244353;
				ans2=(ans2+(b[i][j]*ss2)%998244353)%998244353;
				s2=s1,s1+=b[i][j];
				ss2=ss1,ss1+=b[i][j]*b2[i][j];
			}
		}
		cout<<ans1*c<<' '<<ans2*f<<endl;
	}
	return 0;
}
2022/11/28 23:12
加载中...