正题

题目链接: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. 客快物流大数据项目(五十四):初始化Spark流式计算程序
  2. 通过API文档查询Math类的方法,打印出近似圆,只要给定不同半径,圆的大小就会随之发生改变...
  3. 【leetcode】力扣刷题(1):两数之和(Go、Python)
  4. Windows Mobile使用Web Service上传和下载二进制数据流
  5. 安装erlang没有bin文件夹_Centos7安装RabbitMQ(Centos6 此方案同样可行)
  6. golang []byte 和 string相互转换
  7. mysql 存储过程中limit
  8. leetcode No.141 环形链表
  9. linux中的文件权限drm解释,DRM内核源码分析之三
  10. Leetcode113.路径和II
  11. 此数据库处于单用户模式,当前某个用户已与其连接。 ALTER DATABASE 语句失败。 (Microsoft SQL Server,错误: 5064)...
  12. *理解JavaWeb目录结构
  13. css3 模拟fadein,CSS3 transition fadein with display:none
  14. Java函数式编程与Lambda表达式
  15. 工业相机镜头如何选择
  16. 计算机科学家安内尔,历届诺贝尔生理学或医学奖获奖者简介
  17. P17安全领袖圆桌:安全市场迎来千亿发展机遇,腾讯携手产业链伙伴共建安全生态
  18. 物联网标准和协议概述(postscapes)
  19. 深度剖析E680G应用三.目录结构
  20. 向U盘拷贝文件,总是提示对于目标系统,文件过大??

热门文章

  1. 网页表格线框html,关于Dreamweaver中怎么让html网页中的table边框细线显示?
  2. redis 公网ip访问_Redis很重要,怎么只允许指定IP访问?
  3. activity 防止多次打开_Android开发Activity任务和返回栈
  4. linux误删ssh不上,误删openssh-server删除,复原操作
  5. java 毕向东 内部类_java基础内部类(毕向东老师)
  6. oracle 查看函数被哪些触发器引用_oracle如何查看存储过程,存储函数,触发器的具体内容...
  7. java实用教程——组件及事件处理——对话框(dialog)
  8. matlab常用函数辨析
  9. html语言对齐是什么意思,html – 对齐RTL语言的元素
  10. [JS-BOM]BOM_Location地址栏对象