如果你三重循环暴枚却TLE
查看原帖
如果你三重循环暴枚却TLE
523641
_Spectator_楼主2022/3/3 12:48

惨痛的TLE记录

TLE die马:

#include<bits/stdc++.h>
using namespace std;
long long n,m,q,x,y;
bool a[505][505];
int main()
{
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>a[i][j];
	while(q--)
	{
		cin>>x>>y;
		a[x][y]=!a[x][y];
		long long len=0,ma=0; //here!
		for(int i=1;i<=n;i++,len=0)
			for(int j=1;j<=m;j++)
			{
				if(a[i][j])len++;
				else len=0;
				ma=max(ma,len);
			}
		cout<<ma<<endl;
	}
	return 0;
} 

AC 代码:

#include<bits/stdc++.h>
using namespace std;
long long n,m,q,x,y;
bool a[505][505];
int main()
{
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>a[i][j];
	while(q--)
	{
		cin>>x>>y;
		a[x][y]=!a[x][y];
		int len=0,ma=0; //here!
		for(int i=1;i<=n;i++,len=0)
			for(int j=1;j<=m;j++)
			{
				if(a[i][j])len++;
				else len=0;
				ma=max(ma,len);
			}
		cout<<ma<<endl;
	}
	return 0;
} 

发现没?两份代码只差了 15 行的一个int

看来不能什么时候都一昧地定义long long

2022/3/3 12:48
加载中...