P3335-[ZJOI2013]蚂蚁寻路【dp】
正题
题目链接:https://www.luogu.com.cn/problem/P3335
题目大意
给出n×mn\times mn×m的网格,每个格子有权值。一个回路在格子的边上,要求有2×k2\times k2×k次左转,其他都是右转,且最后222次一定得是右转。
求包含的格子权值和最大。
1≤n,m≤100,0≤k≤101\leq n,m\leq 100,0\leq k\leq 101≤n,m≤100,0≤k≤10
解题思路
看起来很像插头dpdpdp对吧,但是因为最后两下得是右转所以不是插头dpdpdp。
画一下不难发现包围出来的图形的底部一定是平的,然后上面是一个凹凸的形状。且会有k+1k+1k+1个凸,kkk个凹。也就是将固定的底部划分成2×k+12\times k+12×k+1个凹凸相间的矩形。
先枚举一个底部,然后考虑dpdpdp。设fj,p,hf_{j,p,h}fj,p,h表示现在到第jjj列,第ppp个正方形,高度为hhh时的最大权值。
转移的时候根据ppp的奇偶性决定是在上还是在下,当然也可以直接延长这个矩形。
做个前缀和优化就是O(n2mk)O(n^2mk)O(n2mk)的了
code
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=110;
int n,m,k,a[N][N],s[N][N],f[N][30][N],g[N][30][N][2],ans;
int main()
{scanf("%d%d%d",&n,&m,&k);k=k*2+1; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);s[i][j]=s[i-1][j]+a[i][j];}for(int p=1;p<=k;p++)for(int h=1;h<=n;h++)f[0][p][h]=g[0][p][h][0]=g[0][p][h][1]=-1e9;ans=-1e9; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){for(int p=1;p<=k;p++){for(int h=1;h<=i;h++)f[j][p][h]=max(f[j-1][p][h],g[j-1][p-1][h][p&1])+s[i][j]-s[i-h][j];g[j][p][1][1]=g[j][p][i][0]=-1e9;for(int h=i-1;h>=1;h--)g[j][p][h][0]=max(g[j][p][h+1][0],f[j][p][h+1]);for(int h=2;h<=i;h++)g[j][p][h][1]=max(g[j][p][h-1][1],f[j][p][h-1]);}for(int h=1;h<=i;h++)ans=max(ans,f[j][k][h]);}printf("%d\n",ans); return 0;
}
P3335-[ZJOI2013]蚂蚁寻路【dp】相关推荐
- bzoj 3111: [Zjoi2013]蚂蚁寻路(DP)
3111: [Zjoi2013]蚂蚁寻路 题目描述 Description 在一个 n*m 的棋盘上,每个格子有一个权值,初始时,在某个格子的顶点 处一只面朝北的蚂蚁,我们只知道它的行走路线是如何转弯 ...
- 【BZOJ3213】抛硬币(ZJOI2013)-期望DP+KMP+高精度
测试地址:抛硬币 做法:本题需要用到期望DP+KMP+高精度. 很容易想到,先用KMP求出信息,然后从一个点 i i i,要么成功匹配第i+1" role="presentatio ...
- [BZOJ3110~3115]ZJOI2013
本人未参与过ZJOI2013,前两场学校里的模拟赛用了day1day2试题,day2很开心地被初三神犇学弟虐了-- DAY1 T1 [BZOJ3110]K大数查询 直接树套树,或分治. #includ ...
- 启发式算法在最优化问题求解中的应用与实践
最优化问题广泛的存在于社会生产活动当中,我们一直努力寻求更高效.更准确的解决方式来应对这类问题.通常,最优化问题可以表述为一种数学规划的形式,对于变量在可行域中的不同组合进行搜索,以得到目标函数的最优 ...
- 计算机视觉室内定位的原理,基于计算机视觉的室内定位与导航系统
摘要: 室内定位与导航技术是当前热门研究技术,随着大型建筑物的日益增多,此项技术愈发重要.室内定位与导航与如今人们常用的通过GPS或北斗卫星导航的室外导航技术不同,由于墙壁的阻挡与折射,室外卫星信号会 ...
- 轻松解读仿生学最优化算法(二)——蚁群算法
蚁群算法简单解读 1.仿生学背景 蚂蚁在寻找食物的过程中,会在经过的道路上留下信息素. 起初蚂蚁不知道食物在哪儿,于是在经过的道路上留下浓度一致的信息素.在同样的时间内,绕远路的蚂蚁和走近路的蚂蚁消耗 ...
- 生命的计算和计算的生命
目录 一.生命的计算 背景:生物信息学和计算生物学的发展 生命的运转符合计算特征: 应用:生物信息学--数据->知识(->医疗) 二.计算的生命 计算机构造的仿生原理 计算算法的仿生原理 ...
- [BZOJ3214][ZJOI2013]丽洁体(Hash+DP)
3214: [Zjoi2013]丽洁体 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 906 Solved: 335 [Submit][Statu ...
- bzoj3214 [Zjoi2013]丽洁体 dp
把单词全hash出来,比ac自动机匹配方便多了.. 首先A和C直接贪心就可以了 然后可以可以根据特殊数据:每个词出现次数上限500: 每个相同的词可以对应不一样的位置,所以只需要记录在哪些位置出现过, ...
最新文章
- NSUserDefaults的用法
- 乾坤合一~Linux设备驱动之终端设备驱动
- 深入理解BN、合并conv+BN公式推导
- upload file more than 4MB
- 再说千遍万遍,都不如这四句话管用,不服不行!
- 918国际导航网V4.2版整站源码
- windows安装使用jaeger链路追踪
- win7 java is unavailable,win7系统出现“The RPC server is unavailable”的解决方法
- ARM上的Bootloader的具体实现1071098736
- UVA10946 You want what filled?【DFS】
- 编写有效用例_阅读笔记03
- 如何使用Tomcat
- html5二维动画教程,Flash二维动画制作案例教程
- 全英文文献翻译 | 遥感技术在绘制中国与东南亚地区岩溶地质的系列地图中的应用
- 2.4G频段的无线收发芯片 SI24R1 问题汇总解答
- U盘启动CDLinux制作方法
- 市面上主流RTC竞品对比分析
- F5 LTM fullnat模式测试记录及配置
- “Win10 无法使用内置管理员账户打开(应用程序)“怎么办
- mac 下安装Microsoft Remote Desktop远程桌面客户端
热门文章
- java中注解的解析_全面解析Java中的注解与注释
- pythonjson数据提取_python爬虫学习笔记(十)-数据提取之JsonPath的使用
- [JavaWeb-HTML]HTML标签(大部分常用标签介绍)
- 高等数学下-赵立军-北京大学出版社-题解-练习8.2
- 《C++ Primer》7.3.4节练习
- sqrt()函数的注意事项
- 2011年计算机基础知识试卷,2011年计算机一级考试理论试题:第六部分多选题
- 数据结构与算法--复杂链表的复制
- word List 41
- ubuntu 文件管理器死机