codeforces Gargari and Bishops(很好的暴力)

/*
    题意:给你一个n*n的格子,每一个格子都有一个数值!将两只bishops放在某一个格子上,
    每一个bishop可以攻击对角线上的格子(主对角线和者斜对角线),然后会获得格子上的
    数值(只能获取一次)。要求输出两个bishops获取的最大值以及它们所在的位置!

    思路:直接暴力!....不错的暴力题目!
    首先我们都知道每一条主对角线上的横纵坐标的和相同,每一条副对角线上的横纵坐标的差相同!
    那么我们在输入的时候就可以将所有对角线上的数值之和求出来了! 

    最后我们发现如果要获得最大值,那么还有一条就是两个bishops所在的对角线不能相交在
    同一个格子上!只要满足两个bishops的哼纵坐标之和互为奇偶就可以了! 

    在所有格子中找到横纵坐标之和为奇数并且获得对角线上数值最大的格子和横纵坐标之
    和为偶数并且获得对角线上数值最大的格子!
    二者最大获得值相加就是最终的答案了!
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N 2005
using namespace std;
typedef long long LL;
int num[N][N];
LL sumN[N*2], sumM[N*2];

int n;

int main(){
    while(scanf("%d", &n)!=EOF){
        memset(sumN, 0, sizeof(sumN));
        memset(sumM, 0, sizeof(sumM));
        for(int i=1; i<=n; ++i)
              for(int j=1; j<=n; ++j){
                scanf("%d", &num[i][j]);
                sumN[i+j]+=num[i][j];//横纵坐标之和为i+j的对角线的数值和
                sumM[i-j+n]+=num[i][j];//横纵坐标之差为i-j的对角线的数值和
            }

        LL maxOdd=-1, maxEvent=-1, s;
        int x1, x2, y1, y2;
        for(int i=1; i<=n; ++i)
             for(int j=1; j<=n; ++j){
                 if((i+j)&1){
                     if(maxOdd<(s=sumN[i+j]+sumM[i-j+n]-num[i][j])){
                         maxOdd=s;//横纵坐标之和为奇数并且获得对角线上数值最大的格子
                         x1=i;
                         y1=j;
                     }
                }
                else{
                     if(maxEvent<(s=sumN[i+j]+sumM[i-j+n]-num[i][j])){
                         maxEvent=s;//横纵坐标之和为偶数并且获得对角线上数值最大的格子
                         x2=i;
                         y2=j;
                     }
                }
            }

        printf("%lld\n",maxOdd+maxEvent);
        printf("%d %d %d %d\n", x1, y1, x2, y2);
    }
     return 0;
}
时间: 2024-12-30 09:14:57

codeforces Gargari and Bishops(很好的暴力)的相关文章

codeforces Gargari and Permutations(DAG+BFS)

/* 题意:求出多个全排列的lcs! 思路:因为是全排列,所以每一行的每一个数字都不会重复,所以如果有每一个全排列的数字 i 都在数字 j的前面,那么i, j建立一条有向边! 最后用bfs遍历整个图,求出源点到每一个点的距离,其中最大的距离就是最长的公共子序列的长度! */ #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue&g

Python解决codeforces ---- 2

 第一题 4A A. Watermelon time limit per test 1 second memory limit per test 64 megabytes input standard input output standard output One hot summer day Pete and his friend Billy decided to buy a watermelon. They chose the biggest and the ripest one, in

理解php Hash函数,增强密码安全

1.声明 密码学是一个复杂的话题,我也不是这方面的专家.许多高校和研究机构在这方面都有长期的研究.在这篇文章里,我希望尽量使用简单易懂的方式向你展示一种安全存储Web程序密码的方法. 2."Hash"是做什么的? "Hash将一段数据(小数据或大数据)转换成一段相对短小的数据,如字符串或整数." 这是依靠单向hash函数来完成的.所谓单向是指很难(或者是实际上不可能)将其反转回来.一个常见的hash函数的例子是md5(),它流行于各种计算机语言和系统. 复制代码 代

理解php Hash函数,增强密码安全_php技巧

1.声明 密码学是一个复杂的话题,我也不是这方面的专家.许多高校和研究机构在这方面都有长期的研究.在这篇文章里,我希望尽量使用简单易懂的方式向你展示一种安全存储Web程序密码的方法. 2."Hash"是做什么的? "Hash将一段数据(小数据或大数据)转换成一段相对短小的数据,如字符串或整数." 这是依靠单向hash函数来完成的.所谓单向是指很难(或者是实际上不可能)将其反转回来.一个常见的hash函数的例子是md5(),它流行于各种计算机语言和系统. 复制代码 代

Redis配置文件功能说明详解

0 # include /path/to/local.conf # include /path/to/other.conf 主从配置文件引用. 1 daemonize  no  是否后台运行,默认redis不是在后台运行的,一般启动会改为yes.  2 pidfile  var/lib/redis/6379/run/redis.pid   进程文件及路径设置.当Redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址.当一台serve

小议验证码的安全性及如何绕过

一.什么是验证码? CAPTCHA是(全自动区分计算机和人类的图灵测试)的简称,是用于区分计算机和人类的一种程序算法,这种程序必须能生成并评价人类能很容易通过但计算机却通不过的测试. 像我们平时最常遇到的,就是基于图片的验证码.这类图片验证码通常包含的,都是些易于用户识别简单的验证信息.如下图所示.用户必须准确的识别图像内的字符,并以此作为人机验证的答案,方可通过验证码的人机测试.相反如果验证码填写错误,那么验证码字符将会自动刷新并更换一组新的验证字符,直到用户能够填写正确的验证字符为止. 二.

LDAP服务原理详解(原创)

Directory Services(目录服务) 我们知道,当局域网的规模变的越来越大时,为了方便主机管理,我们使用DHCP来实现IP地址.以太网地址.主机名和拓扑结构等的集中管理和统一分配.同样,如果一个局域网内有许多的其它资源时,如打印机.共享文件夹等等,为了方便的定位及查找它们,一种集中定位管理的方式或许是较好的选择,DNS和NIS都是用来实现类似管理的方法. 对于局域网内的一个用户来讲,工作等其它应用需要,我们必须凭帐号登录主机.用帐号收发E-mail,甚至为了管理需要公司还需要维护一个

刘汝佳uva 字符串专题

第一题   palindrome 点击打开链接uva 401 题目意思:给定一个字符串判断是什么类型 分析: 1 根据输出我们知道这个字符串总共有4种类型 2 首先应该是否是"palindrome ",判断的理由很简单直接对这个字符串进行判断,但是这里有个地方会出错就是'0'和'O',题目明确说明了'0'和'O'看成相同,所以我们应该在输入的时候就把所有的'0'处理成'O',注意这里不能把'O'改成'0'(想想为什么?) 3 接下来判断是否是"mirrored string&

WiFi,那些你不知道的事

下午3点,天气晴,本杰明背着他的黑色背包走进了一家咖啡馆.这家咖啡馆的生意很好,幸运的是他喜欢的那个僻静角落没有被人捷足先登.他点了一杯咖啡和一个三明治,礼貌地向服务员询问了WiFi账号和密码,然后熟练地从背包中取出了电脑和一个烟盒大小的黑色盒子,他的"工作"开始了--   公共WiFi风险大 下午3点10分,玛丽走进了这家咖啡馆,她心情不错,因为今天不用上班.她为自己点了一些甜品,然后掏出手机连上了咖啡馆的免费WiFi.她点开网页,登录网上商城浏览最新的商品,有两双漂亮的鞋子吸引了她