求助WA50tps
查看原帖
求助WA50tps
1017266
youhao楼主2024/11/9 09:24
#include<bits/stdc++.h>
using namespace std;

const int N = 1e4 + 10;
char g[N][N];
int cnt[N][N], sum[N][N];
int dx[] = {0, 1}, dy[] = {1, 0};
int n, m, p;

void clear()
{
	for(int i = 1; i <= n; i ++)
		for(int j = 1; j <= m; j ++)
			cnt[i][j] = sum[i][j] = 0;
}
void bfs()
{
	for(int x = 1; x <= n; x ++)
		for(int y = 1; y <= m; y ++)
		{
			if(g[x][y] == '1') sum[x][y] ++;
			else if(g[x][y] == '?' && cnt[x][y] < p)
				sum[x][y] ++, cnt[x][y] ++;
			for(int i = 0; i < 2; i ++)
			{
				int a = x + dx[i], b = y + dy[i];
				if(a > n || b > m) continue;
				if(sum[a][b] < sum[x][y] && cnt[x][y] <= p)
					sum[a][b] = sum[x][y], cnt[a][b] = cnt[x][y];
				else if(sum[a][b] == sum[x][y] && cnt[a][b] > cnt[x][y])
					cnt[a][b] = cnt[x][y];
			}
		}
}
int main()
{
	int t;
	cin >> t;
	while(t --)
	{
		cin >> n >> m >> p;
		clear();
		for(int i = 1; i <= n; i ++)
			for(int j = 1; j <= m; j ++)
				cin >> g[i][j];
		bfs();
		cout << sum[n][m] << endl;
	}
	
    return 0;
}

GESP的时候20分,现在只有50分了。

别问我为什么叫bfs,随便取的

2024/11/9 09:24
加载中...