bzoj 3111: [Zjoi2013]蚂蚁寻路
来源:互联网 发布:星星知我心演员表 编辑:程序博客网 时间:2024/06/03 09:54
题面:
题解:
DP。很明显蚂蚁爬的路径就是类似城墙一样的锯齿型,上面一上一下,下面一条直线。整个图形可以分成2k+1个矩形,DP就好了。具体式子看zigzag大佬的博客
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m,K,ans,a[110][110],s[110][110],f[110][110][110],inf=1<<30;int mx[110][110][110][2];int main(){ scanf("%d%d%d",&n,&m,&K); 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]; } K=K<<1|1; for(int i=1;i<=n;i++) for(int j=1;j<=K;j++) f[0][j][i]=mx[0][j][i][0]=mx[0][j][i][1]=-inf; ans=-inf; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { for(int k=1;k<=K;k++) { for(int l=i;l;l--) f[j][k][l]=max(f[j-1][k][l],mx[j-1][k-1][l][k&1])+s[i][j]-s[l-1][j]; mx[j][k][1][0]=-inf; for(int l=2;l<=i;l++) mx[j][k][l][0]=max(mx[j][k][l-1][0],f[j][k][l-1]); mx[j][k][i][1]=-inf; for(int l=i-1;l>0;l--) mx[j][k][l][1]=max(mx[j][k][l+1][1],f[j][k][l+1]); } ans=max(ans,max(f[j][K][i],mx[j][K][i][0])); } } printf("%d",ans);}
阅读全文
0 0
- BZOJ 3111 [Zjoi2013]蚂蚁寻路
- [DP] BZOJ 3111 [Zjoi2013]蚂蚁寻路
- bzoj 3111: [Zjoi2013]蚂蚁寻路
- bzoj 3111: [Zjoi2013]蚂蚁寻路 动态规划
- bzoj 3111: [Zjoi2013]蚂蚁寻路(DP)
- 【洛谷3335】【ZJOI2013】蚂蚁寻路
- [BZOJ 3111] ZJOI 2013 蚂蚁寻路 · 动态规划
- BZOJ 3112 [Zjoi2013]防守战线
- [BZOJ]1033 杀蚂蚁
- BZOJ 3110 ZJOI2013 K大数查询 树套树
- BZOJ 3112 Zjoi2013 防守战线 单纯形
- BZOJ-3110-K大数查询-ZJOI2013-暴力
- BZOJ 3112 [Zjoi2013]防守战线 线性规划
- bzoj 3110 [Zjoi2013]K大数查询
- BZOJ 3110 [Zjoi2013]K大数查询
- 【bzoj 3110】[Zjoi2013]K大数查询|树套树
- bzoj 3214: [Zjoi2013]丽洁体 贪心&动态规划
- bzoj 3112: [Zjoi2013]防守战线 单纯形
- 小数取整 四舍五入
- HDU-6206 计算几何+大数
- 润乾v5行式填报 数据校验---小计校验
- HDU1094
- PopupWindow
- bzoj 3111: [Zjoi2013]蚂蚁寻路
- 678. Valid Parenthesis String
- GDB 7.0 中文手册 —— 2. 进入和退出GDB
- makefile和shell脚本
- springmvc基础一
- 使用七牛的sdk上传报错:incorrect region
- 【js初学】whlie语句
- 分页+frament+PullToRefresh+轮播
- python精简笔记(五)——函数式编程