社区讨论

怎么会不偏不倚的卡到50pts啊……

P8865[NOIP2022] 种花参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhj43f44
此快照首次捕获于
2025/11/03 20:24
4 个月前
此快照最后确认于
2025/11/03 20:24
4 个月前
查看原帖

代码:

CPP
#include<iostream>
using namespace std;
const long long MOD=998244353;
long long T,ID,n,m,c,f,anc,anf;
char map[1145][1145];
long long cnt[1145][1145];
int main(){
scanf("%lld %lld",&T,&ID);
while(T--){
	anc=anf=0;
	scanf("%lld %lld %lld %lld",&n,&m,&c,&f);
	for(long long i=0;i<n;i++){
		for(long long ii=0;ii<=m;ii++){
			cnt[i][ii]=-1;
		}
		scanf("%s",map[i]);
		for(long long ii=m-1;ii>-1;ii--){
			if(map[i][ii]=='0'){
				cnt[i][ii]=cnt[i][ii+1]+1;
			}else{
				cnt[i][ii]=-1;
			}
		}
	}
	/*for(long long i=0;i<n;i++){
		for(long long ii=0;ii<m;ii++){
			printf("%lld ",cnt[i][ii]);
		}printf("\n");
	}*/
	for(long long ii=0,a,b;ii<m;ii++){
		a=b=0;
		for(long long i=0;i<n;i++){
			if(cnt[i][ii]<0){a=b=0;continue;}
			anc+=(cnt[i][ii]*(b%MOD))%MOD;
			anc%=MOD;anf+=a%MOD;anf%=MOD;
			a+=(cnt[i][ii]*(b%MOD))%MOD;a%=MOD;
			if(cnt[i-1][ii]>0){b+=cnt[i-1][ii];}
		}
	}
	printf("%lld %lld\n",(c*anc)%MOD,(f*anf)%MOD);
}
return/*结束*/0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...