蒟蒻求教
查看原帖
蒟蒻求教
479448
fire_and_sweets楼主2022/6/28 18:23

这个程序为什么会TLE? n不是只有200吗?

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[205][205], qian[205][205], ans, n, m;
inline int read()
{    long long ans=0;
    char last=' ',ch=getchar();
    while(ch<'0'||ch>'9')
    {
        last=ch;ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        ans=(ans<<3)+(ans<<1);
        ans+=ch-'0';ch=getchar();
    }
    return last=='-'?-ans:ans;  
}
signed main()
{
	n = read();
	m = read();
	for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) a[i][j] = read();
	for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) qian[i][j] = qian[i - 1][j] + qian[i][j - 1] - qian[i - 1][j - 1] + a[i][j];
	for (int i = 1; i <= n; i++) //开始4for枚举
		for (int j = 1; j <= m; j++)
			for (int x = i; x <= n; x++)
				for (int y = j; y <= m; y++)
					if (qian[x][y] + qian[i - 1][j - 1] - qian[x][j - 1] - qian[i - 1][y] > 0) ans = max(ans, (x - i + 1) * (y - j + 1));
	cout << ans << endl;
	return 0;
}

为什么会错呢?

2022/6/28 18:23
加载中...