codeforces Gargari and Bishops(很好的暴力)

简介:
 1 /*
 2     题意:给你一个n*n的格子,每一个格子都有一个数值!将两只bishops放在某一个格子上,
 3     每一个bishop可以攻击对角线上的格子(主对角线和者斜对角线),然后会获得格子上的
 4     数值(只能获取一次)。要求输出两个bishops获取的最大值以及它们所在的位置!
 5     
 6     
 7     思路:直接暴力!....不错的暴力题目! 
 8     首先我们都知道每一条主对角线上的横纵坐标的和相同,每一条副对角线上的横纵坐标的差相同!
 9     那么我们在输入的时候就可以将所有对角线上的数值之和求出来了! 
10     
11     最后我们发现如果要获得最大值,那么还有一条就是两个bishops所在的对角线不能相交在
12     同一个格子上!只要满足两个bishops的哼纵坐标之和互为奇偶就可以了! 
13     
14     在所有格子中找到横纵坐标之和为奇数并且获得对角线上数值最大的格子和横纵坐标之
15     和为偶数并且获得对角线上数值最大的格子! 
16     二者最大获得值相加就是最终的答案了! 
17 */
18 #include<iostream>
19 #include<cstring>
20 #include<cstdio>
21 #include<algorithm>
22 #define N 2005
23 using namespace std;
24 typedef long long LL; 
25 int num[N][N];
26 LL sumN[N*2], sumM[N*2];
27 
28 int n;
29 
30 int main(){
31     while(scanf("%d", &n)!=EOF){
32         memset(sumN, 0, sizeof(sumN));
33         memset(sumM, 0, sizeof(sumM));
34         for(int i=1; i<=n; ++i)
35               for(int j=1; j<=n; ++j){ 
36                 scanf("%d", &num[i][j]);
37                 sumN[i+j]+=num[i][j];//横纵坐标之和为i+j的对角线的数值和 
38                 sumM[i-j+n]+=num[i][j];//横纵坐标之差为i-j的对角线的数值和 
39             }
40     
41         LL maxOdd=-1, maxEvent=-1, s;
42         int x1, x2, y1, y2;
43         for(int i=1; i<=n; ++i)
44              for(int j=1; j<=n; ++j){
45                  if((i+j)&1){ 
46                      if(maxOdd<(s=sumN[i+j]+sumM[i-j+n]-num[i][j])){
47                          maxOdd=s;//横纵坐标之和为奇数并且获得对角线上数值最大的格子
48                          x1=i;
49                          y1=j;
50                      }
51                 }
52                 else{
53                      if(maxEvent<(s=sumN[i+j]+sumM[i-j+n]-num[i][j])){
54                          maxEvent=s;//横纵坐标之和为偶数并且获得对角线上数值最大的格子
55                          x2=i;
56                          y2=j;
57                      }
58                 }
59             }
60 
61         printf("%lld\n",maxOdd+maxEvent);     
62         printf("%d %d %d %d\n", x1, y1, x2, y2);
63     }
64      return 0;
65 }









本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/3946876.html,如需转载请自行联系原作者
目录
相关文章
|
数据采集 自然语言处理 搜索推荐
图文详解 DFS 和 BFS | 算法必看系列知识二十四
深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath First Search)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等,也频繁出现在高频面试题中。
36894 6
图文详解 DFS 和 BFS | 算法必看系列知识二十四
Qt实现一个抽奖游戏
Qt实现一个抽奖游戏
291 0
|
存储 分布式计算 算法
面试题:海量数据去重、Top-k、BitMap问题整理
首先直接进入正题,40亿QQ号如何设计算法去重,相同的QQ号码仅保留一个,内存限制为1个G。 (腾讯的QQ号都是4字节正整数,所以QQ号码的个数是43亿左右,理论值2^32-1个,又因为是无符号的,翻倍了一下,所以43亿左右)
面试题:海量数据去重、Top-k、BitMap问题整理
|
人工智能 移动开发 机器人
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
343 0
codeforces319——B. Psychos in a Line(思维+单调栈)
codeforces319——B. Psychos in a Line(思维+单调栈)
191 0
codeforces319——B. Psychos in a Line(思维+单调栈)
|
算法
【AcWing&&牛客】打表找规律
【AcWing&&牛客】打表找规律
211 0
|
算法 前端开发 JavaScript
保姆级教程,如何发现 GitHub 上的优质项目?
保姆级教程,如何发现 GitHub 上的优质项目?
2293 0
保姆级教程,如何发现 GitHub 上的优质项目?
CodeForces 377A-Maze(DFS找连通块)
CodeForces 377A-Maze(DFS找连通块)
CodeForces 377A-Maze(DFS找连通块)
|
开发者
膜拜(离散化差分模板题)
题目描述 小鱼有 n 名优秀的粉丝。 粉丝们得知小鱼将会在一条直线上出现,打算去膜他。为了方便,粉丝们在这条直线上建立数轴。 第 i 名粉丝有一个侦查区间[li,ri] 。如果小鱼在 j(li≤j≤ri) 处出现,这名粉丝将立刻发现并膜他。 小鱼希望膜他的人越多越好,但是他不能分身,因此只能选择一个位置出现。 小鱼想知道自己最多能被多少个人膜。
331 0
膜拜(离散化差分模板题)
Codeforces 1263D.Secret Passwords(并查集 思维)
Codeforces 1263D.Secret Passwords(并查集 思维)
206 0