Description

你难以想象贝茜看到一只妖精在牧场出现时是多么的惊讶.她不是傻瓜,立即猛扑过去,用她那灵活的牛蹄抓住了那只妖精.
    “你可以许一个愿望,傻大个儿!”妖精说.
    “财富,”贝茜用梦游般的声音回答道,  “我要获得财富的机会.”
    妖精从来没有碰到过这么简单的愿望.他在地方划出一大块N×N(1≤N≤200)的方格,每个格子上写上_1,000,000到1,000,000之间的数字.他说:  “在方格上朝一个方向行走,可以是行的方向,列的方向,斜对角的方向,一步只能走一格,所有你踩过的数字的和就是你的财富.”
    贝茜请你来帮忙,找到一行、一列或一条对角线上找一段连续的数字,它们的和最大.由于妖精方格的神奇特性,沿着一个方向走,走到了边际,再一步跨过去可以“绕”到方格的对边出现.一行两端的格子是相邻的,一列两端的格子也是相邻的,甚至相邻两行的分别两端的格子也是相邻的(斜对角方向).
    对于下图左边的方格,所有标记过的数字都在一条对角线上.
  
 
对于这个方格,能踩出来的最大的和是24,踩过的数字在右图中标记出来了

Input

    第1行输入N,之后输入N行N列的矩阵.

Output

 
    输出最大的和.

Sample Input

4
8 6 6 1
-3 4 0 5
4 2 1 9
1 -9 9 -2

Sample Output

24
 
 
 
这么差的代码居然#1了……233
暴力枚举不解释,维护前缀和就好了,当然记得要找出最大区间的同时可以找一下最小区间,用总和减最小区间也可以是一种答案
然后注意至少要踩一个格子(被卡了3发……)
 
#include<cstdio>
#include<algorithm>
using namespace std; int n,h[][],l[][],g[][],f[][],m,i,j;
int main(){
scanf("%d",&n);
for (i=;i<n;i++)
for (j=;j<n;j++){
scanf("%d",&m);
h[i][j]=h[i][j-]+m;l[j][i]=l[j][i-]+m;g[(i-j+*n)%n][i]=g[(i-j+*n)%n][i-]+m;f[(i+j)%n][i]=f[(i+j)%n][i-]+m;
}
for (i=;i<n;i++)
for (j=;j<n;j++){
if (m<h[i][j]-h[i][n]) m=h[i][j]-h[i][n];
if (m<l[i][j]-l[i][n]) m=l[i][j]-l[i][n];
if (m<g[i][j]-g[i][n]) m=g[i][j]-g[i][n];
if (m<f[i][j]-f[i][n]) m=f[i][j]-f[i][n];
if (m<h[i][n-]-(h[i][j-]-h[i][n+])) m=h[i][n-]-(h[i][j-]-h[i][n+]);
if (m<l[i][n-]-(l[i][j-]-l[i][n+])) m=l[i][n-]-(l[i][j-]-l[i][n+]);
if (m<g[i][n-]-(g[i][j-]-g[i][n+])) m=g[i][n-]-(g[i][j-]-g[i][n+]);
if (m<f[i][n-]-(f[i][j-]-f[i][n+])) m=f[i][n-]-(f[i][j-]-f[i][n+]);
if (h[i][n]>h[i][j]) h[i][n]=h[i][j];
if (l[i][n]>l[i][j]) l[i][n]=l[i][j];
if (g[i][n]>g[i][j]) g[i][n]=g[i][j];
if (f[i][n]>f[i][j]) f[i][n]=f[i][j];
if (h[i][n+]<h[i][j]) h[i][n+]=h[i][j];
if (l[i][n+]<l[i][j]) l[i][n+]=l[i][j];
if (g[i][n+]<g[i][j]) g[i][n+]=g[i][j];
if (f[i][n+]<f[i][j]) f[i][n+]=f[i][j];
}
printf("%d\n",m);
}

这代码略优美……

bzoj:1723: [Usaco2009 Feb]The Leprechaun 寻宝的更多相关文章

  1. Bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级 dijkstra,堆,分层图

    1579: [Usaco2009 Feb]Revamping Trails 道路升级 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1573  Solv ...

  2. BZOJ 1579: [Usaco2009 Feb]Revamping Trails 道路升级( 最短路 )

    最短路...多加一维表示更新了多少条路 -------------------------------------------------------------------------------- ...

  3. BZOJ 1578: [Usaco2009 Feb]Stock Market 股票市场( 背包dp )

    我们假设每天买完第二天就卖掉( 不卖出也可以看作是卖出后再买入 ), 这样就是变成了一个完全背包问题了, 股票价格为体积, 第二天的股票价格 - 今天股票价格为价值.... 然后就一天一天dp... ...

  4. BZOJ 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛( dp )

    水题...忘了取模就没1A了.... --------------------------------------------------------------------------- #incl ...

  5. bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级 -- 分层图最短路

    1579: [Usaco2009 Feb]Revamping Trails 道路升级 Time Limit: 10 Sec  Memory Limit: 64 MB Description 每天,农夫 ...

  6. bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级 优先队列+dij

    1579: [Usaco2009 Feb]Revamping Trails 道路升级 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1768  Solv ...

  7. bzoj:3397 [Usaco2009 Feb]Surround the Islands 环岛篱笆

    Description     约翰在加勒比海买下地产,准备在这里的若干个岛屿上养奶牛.所以,他要给所有岛屿围上篱笆.每个岛屿都是多边形.他沿着岛屿的一条边界朝一个方向走,有时候坐船到另一个岛去.他可 ...

  8. bzoj:3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛

    Description     约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡 ...

  9. bzoj 1577: [Usaco2009 Feb]庙会捷运Fair Shuttle——小根堆+大根堆+贪心

    Description 公交车一共经过N(1<=N<=20000)个站点,从站点1一直驶到站点N.K(1<=K<=50000)群奶牛希望搭乘这辆公交车.第i群牛一共有Mi(1& ...

随机推荐

  1. Linux文件系统概述

    Unix文件是以字节序列组成的信息载体(container),内核不解释文件的内容. Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有系统的结构,所有Linux用户和程序 ...

  2. Hibernate学习---用Session实现CURD

    我们使用Hibernate的目的是什么?对数据库进行操作,所有接下来我们就用Hibernate来进行CURD. 前边我们已经分析过了Configuration,SessionFactory和Sessi ...

  3. discuz管理员登录进入后台管理马上跳转到登录界面

    昨天尝试了一下这个discuz论坛,感觉还可以.今天刚刚用管理员账户进入后台管理,准备改一改界面熟悉一下,过不了10秒钟.老是马上就退出来了.我想起来了,昨天是在阿里云服务器上面直接登录这个管理员账号 ...

  4. Xamarin Android Fragment的两种加载方式

    android Fragment的重点: 3.0版本后引入,即minSdk要大于11 Fragment需要嵌套在Activity中使用,当然也可以嵌套到另外一个Fragment中,但这个被嵌套的Fra ...

  5. bzoj 4198: [Noi2015]荷马史诗

    Description 追逐影子的人,自己就是影子. --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由& ...

  6. linux下制作镜像文件

    第一:制作iso镜像的方法: 把/dev/cdrom目录制作为镜像,名字为/root/rh1.iso 方法1:dd if=/dev/cdrom of=/root/rh1.iso 方法2:#cat /d ...

  7. jquery获取焦点和失去焦点事件代码

    input失去焦点和获得焦点 鼠标在搜索框中点击的时候里面的文字就消失了. 我们在做网站的时候经常会用到搜索框的获得焦点和失去焦点的事件,因为懒,每次都去写非常的烦,于是就一劳永逸,遇到类似情况就来调 ...

  8. windows 命令行打开浏览器

    在命令行打开百度 start chrome www.baidu.com

  9. .net 委托的使用方法以及使用委托的好处

    使用方法: //无返回值无参数委托的定义方法 public delegate void NoReturnPara(); 给委托赋值的几种方式 //实例化委托,并传入方法 NoReturbNoPara ...

  10. JavaScript的DOM编程--03--读写属性节点

    读写属性节点: 1)可以直接通过 cityNode.id 这样的方式来获取和设置属性节点的值 2)通过元素节点的 getAttributeNode 方法来获取属性节点, 然后在通过 nodeValue ...