关于MLE
  • 板块灌水区
  • 楼主ssl_lwz
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/8/30 11:28
  • 上次更新2023/11/3 00:22:54
查看原帖
关于MLE
484751
ssl_lwz楼主2023/8/30 11:28

请dalao们帮我看下为什么会mle

#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e3 + 10;
const int mod = 998244353;
int a[N][N],n,m,f1,f2,T,id,ans1,ans2;
int sp[N][N],sq[N][N];

struct node{
	int x1,y1,x2,num;
};
vector<node> v;
signed main(){
    cin>>T>>id;
    while(T--){
    	memset(sp,0,sizeof sp);
    	memset(a,0,sizeof a);
    	v.clear();
    	ans1=ans2=0;
    	cin>>n>>m>>f1>>f2;
	    for(int i=1;i<=n;++i)
	      for(int j=1;j<=m;j++){
	      	char c;
	      	cin>>c;
	      	a[i][j]=c-'0';a[i][j]^=1;
		  }
		for(int i=n;i>=1;i--)
	      for(int j=m;j>=1;j--){
	      	if(!a[i][j])  sp[i][j]=0;
	      	else sp[i][j]=sp[i][j+1]+1;
		  }
//		for(int i=1;i<=n;i++,cout<<endl)
//		  for(int j=1;j<=m;j++)
//		    cout<<sp[i][j]<<" ";
        for(int i=1;i<=n;i++)
          for(int j=1;j<=m;j++){
          	if(sp[i][j]<=1)  continue;
          	for(int k=i+2;k<=n;k++)
          	{
          		if(!sp[k][j]||!sp[i+1][j])  break;
          		ans1=(ans1+(sp[i][j]-1)*(sp[k][j]-1))%mod;
          		v.push_back({i,j,k,(sp[i][j]-1)*(sp[k][j]-1)});
          		//cout<<(sp[i][j]-1)*(sp[k][j]-1)<<" "<<i<<" "<<j<<endl;
			}
		  }
		for(node p:v){
			int tx=p.x2+1,sum=0;
			while(sp[tx][p.y1]){
				++sum;++tx;
			}
			ans2=(ans2+p.num*sum)%mod;
		}
		cout<<ans1*f1<<" "<<ans2*f2<<endl;
	}
	
	return 0;
}

2023/8/30 11:28
加载中...