警示后人,如果你最后一个点WA
  • 板块P2004 领地选择
  • 楼主卷王慢即快
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/12/6 21:22
  • 上次更新2023/10/27 00:15:48
查看原帖
警示后人,如果你最后一个点WA
494699
卷王慢即快楼主2022/12/6 21:22
//85分代码
#include <bits/stdc++.h>
using namespace std;
int n, m, c, x, y, ans = 0;
int a[1005][1005];
int sum[1005][1005];
int main()
{
	cin >> n >> m >> c;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			cin >> a[i][j];
			sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + a[i][j];
		}
	for(int i = 1; i <= n - c + 1; i++) //枚举左上角 
		for(int j = 1; j <= m - c + 1; j++)
		{
			int k = i + c - 1, l = j + c - 1; //右下角 
			int s = sum[k][l] - sum[i - 1][l] - sum[k][j - 1] + sum[i - 1][j - 1];
			if(ans < s)
			{
				ans = s;
				x = i;
				y = j;
			}
		}
	cout << x << " " << y;
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, c, x, y, ans = 0;
int a[1005][1005]; //可以不加这个
ll sum[1005][1005];
int main()
{
	cin >> n >> m >> c;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			cin >> a[i][j];
			sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + a[i][j];
		}
	for(int i = 1; i <= n - c + 1; i++) //枚举左上角 
		for(int j = 1; j <= m - c + 1; j++)
		{
			int k = i + c - 1, l = j + c - 1; //右下角 
			ll s = sum[k][l] - sum[i - 1][l] - sum[k][j - 1] + sum[i - 1][j - 1]; //这里的long long 别丢!!!
			if(ans < s)
			{
				ans = s;
				x = i;
				y = j;
			}
		}
	cout << x << " " << y;
	return 0;
}

不开long long见祖宗

2022/12/6 21:22
加载中...