有没有佬帮萌新算算复杂度
查看原帖
有没有佬帮萌新算算复杂度
1086449
ZHY041209楼主2024/1/21 16:31

虽然AC但是算不明白= =

#include <iostream>
#define ll long long
using namespace std;
//二维压缩一维前缀和
ll n, m, c;
ll map[1010][1010];
ll path[1010];
ll sum[1010];
ll now = -1000000;
ll x, y;
int main(void)
{
	ios::sync_with_stdio(false);
	cin >> n >> m >> c;
	for (int i = 1;i <= n;i++)
		for (int j = 1;j <=m;j++)
			cin >> map[i][j];
	for (int i = 1;i <= n - c + 1;i++)
	{
		for (int k = 1;k <= m;k++)
		{
			ll t = 0;
			int row = i;
			int num = c;
			while (num--)
			{
				t += map[row++][k];
			}
			path[k] = t;
		}
		for (int j = 1;j <= m;j++)
			sum[j] = sum[j - 1] + path[j];
		ll real;
		for (int j = 1;j <= m - c + 1;j++)
		{
			real = sum[j + c - 1] - sum[j - 1];
			if (real > now)
			{
				now = real;
				x = i, y = j;
			}
		}
	}
	cout << x << ' ' << y;
}
2024/1/21 16:31
加载中...