题目链接:Codeforces 463C Gargari and Bishops
题目大意:在一个n∗n的国际象棋的棋盘上放两个主教,要求不能有位置同时被两个主教攻击到,然后被一个主教攻击到的位置上获得得分。求得分的最大值。
解题思路:黑白格分开考虑最大值,注意全0的时候。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define add(a,b) ((a)+(b))
#define del(a,b) ((a)-(b)+2000)
const int maxn = 2005;
typedef long long ll;
int n;
ll g[maxn][maxn], l[maxn*2], r[maxn*2];
int main () {
scanf("%d", &n);
memset(l, 0, sizeof(l));
memset(r, 0, sizeof(r));
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++) {
scanf("%lld\n", &g[i][j]);
l[add(i, j)] += g[i][j];
r[del(i, j)] += g[i][j];
}
int odd_x, odd_y, even_x, even_y;
ll max_odd = -1, max_even = -1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if ((i+j)&1) {
if (max_odd < l[add(i, j)] + r[del(i, j)] - g[i][j]) {
max_odd = l[add(i, j)] + r[del(i, j)] - g[i][j];
odd_x = i;
odd_y = j;
}
} else {
if (max_even < l[add(i, j)] + r[del(i, j)] - g[i][j]) {
max_even = l[add(i, j)] + r[del(i, j)] - g[i][j];
even_x = i;
even_y = j;
}
}
}
}
printf("%lld\n%d %d %d %d\n", max_even + max_odd, odd_x, odd_y, even_x, even_y);
return 0;
}
分享到:
相关推荐
暴枚最长桌脚的长度$l$,然后长度比$l$长的桌脚全部都要砍掉长度比$l$短的桌脚选择代价前$k$小的砍掉用线段树维护;示例程序 :typedef long l
Codeforces - 1131C. Birthday(贪心)题目链接题目给你n和n个数,要你重新排列n个数,使得这些数的相邻差值中最大的那个值最小。stat
Codeforces 题库 101-200 共~500题 codeforces.com版权所有。 程序可提交至该网站评测。
codeforces编程网站预测分数插件
Codeforces 题库 001-100 共~500题 codeforces.com版权所有。 程序可提交至该网站评测。
Codeforces 1105B - Zuhair and Strings 测试点37个(全)
使用于Google Chrome的Codeforces Enhancer 1.1.2插件安装包。 版本:codeforces enhancer 1.1.2 使用浏览器:Google Chrome
Codeforces - 1107B. Digital root & 1107C. Brutality(规律 & 贪心)Codeforces - 1107B.
题目大意:给出 n 个数字组成的序列,现在可以对数列进行多次操作,每次操作可以选择其中一段连续的数列,用其平均数替换原位置,换句话说,若原连续数列为 1 2 3,则可以替换为 2 2 2,问如何操作可以使得最后答案...
Codeforces 185A - Plant 全测试点49个
codeforces 19 E Fairy 一道比较难的题目的解题报告 推荐阅读
Codeforces Round #632 (Div. 2) C. Eugene and an array 题意: 求出一个数列中子区间满足 此区间的任意子区间之和 不为0的区间个数。 思路: 考虑用dp[x]dp[x]dp[x]记录前缀和为xxx的区间右端点。 那么这道题其实...
Codeforces global round 10 codes
Codeforces round 678 division 2 codes
Some of the Codeforces problems codes
贪心正确性显然:R大的至少可以选则R做为点来用。所以按R升序遍历,每次优先选左边的,能让后边的可选的更多。 用set维护可选的数即可。 这题加了个输出2个方案。 我们考虑最简单的情况:即确定一个序列后,是否有2...
codeforces每日一题。 题意: 给出一个数组,让你挑选出能组成任意pair差值为2的幂的序列,并且使这个序列长度尽可能大。 思路: 针对于挑选出来的序列,任意pair对的差值为2的幂数。 假设有多个pair对,设dis(a,b)=2...
一个Codeforces、牛客竞赛、AtCoder平台的编程竞赛查询插件,ACMer必备.zip
Codeforces round 678 D2_Codeforces_源码
打codeforces的神器