正题

题目链接: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】相关推荐

  1. bzoj 3111: [Zjoi2013]蚂蚁寻路(DP)

    3111: [Zjoi2013]蚂蚁寻路 题目描述 Description 在一个 n*m 的棋盘上,每个格子有一个权值,初始时,在某个格子的顶点 处一只面朝北的蚂蚁,我们只知道它的行走路线是如何转弯 ...

  2. 【BZOJ3213】抛硬币(ZJOI2013)-期望DP+KMP+高精度

    测试地址:抛硬币 做法:本题需要用到期望DP+KMP+高精度. 很容易想到,先用KMP求出信息,然后从一个点 i i i,要么成功匹配第i+1" role="presentatio ...

  3. [BZOJ3110~3115]ZJOI2013

    本人未参与过ZJOI2013,前两场学校里的模拟赛用了day1day2试题,day2很开心地被初三神犇学弟虐了-- DAY1 T1 [BZOJ3110]K大数查询 直接树套树,或分治. #includ ...

  4. 启发式算法在最优化问题求解中的应用与实践

    最优化问题广泛的存在于社会生产活动当中,我们一直努力寻求更高效.更准确的解决方式来应对这类问题.通常,最优化问题可以表述为一种数学规划的形式,对于变量在可行域中的不同组合进行搜索,以得到目标函数的最优 ...

  5. 计算机视觉室内定位的原理,基于计算机视觉的室内定位与导航系统

    摘要: 室内定位与导航技术是当前热门研究技术,随着大型建筑物的日益增多,此项技术愈发重要.室内定位与导航与如今人们常用的通过GPS或北斗卫星导航的室外导航技术不同,由于墙壁的阻挡与折射,室外卫星信号会 ...

  6. 轻松解读仿生学最优化算法(二)——蚁群算法

    蚁群算法简单解读 1.仿生学背景 蚂蚁在寻找食物的过程中,会在经过的道路上留下信息素. 起初蚂蚁不知道食物在哪儿,于是在经过的道路上留下浓度一致的信息素.在同样的时间内,绕远路的蚂蚁和走近路的蚂蚁消耗 ...

  7. 生命的计算和计算的生命

    目录 一.生命的计算 背景:生物信息学和计算生物学的发展 生命的运转符合计算特征: 应用:生物信息学--数据->知识(->医疗) 二.计算的生命 计算机构造的仿生原理 计算算法的仿生原理 ...

  8. [BZOJ3214][ZJOI2013]丽洁体(Hash+DP)

    3214: [Zjoi2013]丽洁体 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 906  Solved: 335 [Submit][Statu ...

  9. bzoj3214 [Zjoi2013]丽洁体 dp

    把单词全hash出来,比ac自动机匹配方便多了.. 首先A和C直接贪心就可以了 然后可以可以根据特殊数据:每个词出现次数上限500: 每个相同的词可以对应不一样的位置,所以只需要记录在哪些位置出现过, ...

最新文章

  1. NSUserDefaults的用法
  2. 乾坤合一~Linux设备驱动之终端设备驱动
  3. 深入理解BN、合并conv+BN公式推导
  4. upload file more than 4MB
  5. 再说千遍万遍,都不如这四句话管用,不服不行!
  6. 918国际导航网V4.2版整站源码
  7. windows安装使用jaeger链路追踪
  8. win7 java is unavailable,win7系统出现“The RPC server is unavailable”的解决方法
  9. ARM上的Bootloader的具体实现1071098736
  10. UVA10946 You want what filled?【DFS】
  11. 编写有效用例_阅读笔记03
  12. 如何使用Tomcat
  13. html5二维动画教程,Flash二维动画制作案例教程
  14. 全英文文献翻译 | 遥感技术在绘制中国与东南亚地区岩溶地质的系列地图中的应用
  15. 2.4G频段的无线收发芯片 SI24R1 问题汇总解答
  16. U盘启动CDLinux制作方法
  17. 市面上主流RTC竞品对比分析
  18. F5 LTM fullnat模式测试记录及配置
  19. “Win10 无法使用内置管理员账户打开(应用程序)“怎么办
  20. mac 下安装Microsoft Remote Desktop远程桌面客户端

热门文章

  1. java中注解的解析_全面解析Java中的注解与注释
  2. pythonjson数据提取_python爬虫学习笔记(十)-数据提取之JsonPath的使用
  3. [JavaWeb-HTML]HTML标签(大部分常用标签介绍)
  4. 高等数学下-赵立军-北京大学出版社-题解-练习8.2
  5. 《C++ Primer》7.3.4节练习
  6. sqrt()函数的注意事项
  7. 2011年计算机基础知识试卷,2011年计算机一级考试理论试题:第六部分多选题
  8. 数据结构与算法--复杂链表的复制
  9. word List 41
  10. ubuntu 文件管理器死机