bzoj3111: [Zjoi2013]蚂蚁寻路
题目链接
题解
发现走出来的图是一向上的凸起锯齿状
对于每个突出的矩形dp一下就好了
代码
/*
*/
#include<cstdio>
#include<algorithm>
const int maxn = 127;
inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9'){if(c == '-')f = -1;c = getchar();}
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
return x * f;
}
const int INF = 0x3f3f3f3f;
const int rp = 0x7fffffff;
int n,m,k;
int sum[maxn][maxn],a[maxn][maxn];
int g[maxn][25][maxn][2];
int dp[maxn][maxn][maxn];
int main() {
int ans = -0x3f3f3f3f;
n = read(),m = read(),k = read();
k = k << 1 | 1;
for(int i = 1;i <= n;++ i) for(int j = 1;j <= m;++ j) a[i][j] = read(), sum[i][j] = sum[i - 1][j] + a[i][j];
for(int i = 1;i <= k;++ i) for(int j = 1;j <= n;++ j)
g[0][i][j][0] = g[0][i][j][1] = dp[0][i][j] = -INF;
for(int i = 1;i <= n;++ i) for(int j = 1;j <= m;++ j) {
for(int p = 1;p <= k;++ p) {
for(int h = i;h;-- h)
dp[j][p][h] = std::max(dp[j - 1][p][h],g[j - 1][p - 1][h][p % 2]) - sum[h - 1][j] + sum[i][j];
g[j][p][1][0] = -INF;
for(int h = 2;h <= i;++ h)
g[j][p][h][0] = std::max(dp[j][p][h - 1],g[j][p][h - 1][0]);
g[j][p][i][1] = -INF;
for(int h = i - 1;h;-- h)
g[j][p][h][1] = std::max(dp[j][p][h + 1],g[j][p][h + 1][1]);
}
ans = std::max(ans,std::max(dp[j][k][i],g[j][k][i][0]) );
}
printf("%d\n",ans);
return 0;
}
bzoj3111: [Zjoi2013]蚂蚁寻路的更多相关文章
- 3111: [Zjoi2013]蚂蚁寻路 - BZOJ
题目描述 Description在一个 n*m 的棋盘上,每个格子有一个权值,初始时,在某个格子的顶点处一只面朝北的蚂蚁,我们只知道它的行走路线是如何转弯,却不知道每次转弯前走了多长.蚂蚁转弯是有一定 ...
- 洛谷P3335 [ZJOI2013]蚂蚁寻路
题目描述 在一个 n*m 的棋盘上,每个格子有一个权值,初始时,在某个格子的顶点处一只面朝北的蚂蚁,我们只知道它的行走路线是如何转弯,却不知道每次转弯前走了多长. 蚂蚁转弯是有一定特点的,即它的转弯序 ...
- BZOJ 3111: [Zjoi2013]蚂蚁寻路
Sol DP. 首先观察转折,画画图,看看移动路线,可以非常轻易的发现如果走到起点的下方是回不去的.. 然后它就相当于一个底部是平的,顶部凹凹凸凸的形状,每右转两次或左转两次就会形成小矩阵,这样就可以 ...
- 【题解】ZJOI2013蚂蚁寻路
这题强呀……打了10+30暴力之后苦想1h并不会做……于是去看题解.看题解的时候又莫名各种看错,结果看了好久才懂……记录一下血泪史吧. 这题不难发现走出来的图形就是一个高低高低的城堡型图案,命名为高峰 ...
- P3335-[ZJOI2013]蚂蚁寻路【dp】
正题 题目链接:https://www.luogu.com.cn/problem/P3335 题目大意 给出\(n\times m\)的网格,每个格子有权值.一个回路在格子的边上,要求有\(2\tim ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- NOIP2018 填坑记
Oct,22ed,2018 DAY -18 又是颓废的一天呢 我好菜啊,一个圆方树弄了一整天(点双怎么那么毒瘤).(铁人两项怎么那么多点) Oct,23rd,2018 DAY -17 又双叒叕颓了一天 ...
- 基于仿生算法的智能系统I
仿生算法仿生算法是什么? 什么是仿生? 蜜蜂会造房子,人类就学习蜜蜂盖房子的方法,之后便有了航空建造工程的蜂窝结构. 仿生是模仿生物系统的功能和行为,来建造技术系统的一种科学方法.生活仿生作品现代的飞 ...
- PHP树生成迷宫及A*自己主动寻路算法
PHP树生成迷宫及A*自己主动寻路算法 迷宫算法是採用树的深度遍历原理.这样生成的迷宫相当的细,并且死胡同数量相对较少! 随意两点之间都存在唯一的一条通路. 至于A*寻路算法是最大众化的一全自己主动寻 ...
随机推荐
- Python字符串,整型,浮点数相互转化
Python字符串,整型,浮点数相互转化 觉得有用的话,欢迎一起讨论相互学习~Follow Me int(str) 函数将符合整数的规范的字符串转换成int型 float(str) 函数将符合浮点数的 ...
- bzoj千题计划254:bzoj2286: [Sdoi2011]消耗战
http://www.lydsy.com/JudgeOnline/problem.php?id=2286 虚树上树形DP #include<cmath> #include<cstdi ...
- springmvc常用注解标签详解-推荐
1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...
- 让你的HTML5&CSS3网站在老IE中也能正常显示的3种方法
起初,IE其实也是一款非常有进取心的浏览器.但经过一段时间的蛰伏后,它已经成为了我们生活中的一道障碍.微软现在又重新开始向其它浏览器发起挑战,但事实情况是,新版的现代IE浏览器一直滞后于谷歌浏览器和火 ...
- 20155230 2016-2017-2 《Java程序设计》第九周学习总结
20155230 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 statement在不使用时所关联的resultset也会自动关闭. 要让SQL执 ...
- iOS中UITableView和UICollectionView的默认空态页
项目中想实现空态页风格统一控制的效果,就封装了一个默认空态页,使用的技术点有:1 方法替换 ,2 给分类(Category)添加属性. 我们知道,扩展(extension)可以给类添加私有变量和方法. ...
- Python3之外部文件调用Django程序操作model等文件实现
import os import sys import django sys.path.append(r'C:\Users\Administrator\PycharmProjects\your pro ...
- Wordpress页脚
<?php /** * The template for displaying the footer */ ?> <?php if ( apply_filters( 'show_fl ...
- 春夏秋冬又一春之Redis持久化
历史文章推荐: 一只准程序猿的唠叨 可能是最漂亮的Spring事务管理详解 Java多线程学习(八)线程池与Executor 框架 面试中关于Redis的问题看这篇就够了 非常感谢<redis实 ...
- yum安装失败:ublic key for **.rpm is not installed
yum install mysql-server --nogpgcheck package_need_to_install