求卡常 TLE+WA 10pts求助
查看原帖
求卡常 TLE+WA 10pts求助
1118893
Dark_Star楼主2024/7/4 10:51
#include<bits/stdc++.h>
#define int long long
#define little_dog puts("OvO,2021zjhs005 is better than me.")
#define lcfollower break
#define _2021zjhs005 continue
#define inf 0x3f3f3f3f
#define infi 0x3f3f3f3f3f3f3f3fll
#define up(i,x,y) for(register int i=x;i<=y;++i)
#define dn(i,x,y) for(register int i=x;i>=y;--i)
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return x*f;}
inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10|48);}
inline void writeln(int x){write(x),putchar('\n');}
inline void writesp(int x){write(x),putchar(' ');}
inline int readone(){char ch=getchar();while(ch<'0'||ch>'9')ch=getchar();return ch-'0';}
struct lc{
	inline void fre(){freopen(".in","r",stdin);freopen(".out","w",stdout);}
	inline void ext(){exit(0);}
};namespace LC{
	const long long mod=998244353;
	int a[1001][1001],ri[1001][1001],down[1001][1001];
	inline signed main(){
		lc follower;
//		follower.fre();
		int T=read(),id=read();
		while(T--){
			int n=read(),m=read(),c=read(),f=read();long long ansc=0,ansf=0;
			up(i,1,n)up(j,1,m)a[i][j]=readone();
			up(i,1,n)dn(j,m,1){
				if(a[i][j]==1)ri[i][j]=0;
				else ri[i][j]=ri[i][j+1]+1;
			}dn(i,n,1)up(j,1,m){
				if(a[i][j]==1)down[i][j]=0;
				else down[i][j]=down[i+1][j]+1;
			}up(i,1,n)
				up(j,i+2,n)
					up(k,1,m)
						if(down[i][k]>=j-i+1){
							int now=(ri[i][k+1]*ri[j][k+1])%mod;
							ansc=(ansc+now)%mod;
							ansf=(ansf+now*down[j+1][k])%mod;
						}
			writesp(ansc*c),writeln(ansf*f);
		}follower.ext();
	}
}signed main(){
	LC::main();
}
2024/7/4 10:51
加载中...