【BZOJ3997】组合数学,总之是DP就对了
传送门
写在前面:同脑补了好久的题目,感觉……
思路:一开始也是在胡思乱想,感觉发现了一些性质,然后就是半弃疗状态,看题解发现如果纯粹看代码理解,感觉好像还挺科学的,看了看DAG路径覆盖相关的东西,woc……
个人理解是说,对于点(i,j)来说,点(i-1,j+1)不和它联通,对于任一个f[i][j],它存储的都是以(i,j)为左下端点一直到往上的方格图中需要走的次数
所以大体就是说f[i][j]可以是f[i-1][j+1]+a[i][j]
(不和(i-1,j+1)联通,所以f[i][j]一定大于等于(i-1,j+1)的方案数+自己的权值数)
f[i-1][j]与f[i][j+1]在这里可以看作是矩阵间的合并求最大……
总之就是YY……也不知道这种理解是否正确
注意:f数组要初始化,答案用LL存储
#include<cstdio>
#include<iostream>
#define LL long long
using namespace std;
int T,n,m;
int a[1002][1002];
LL f[1002][1002];
main()
{scanf("%d",&T);while (T--){scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)for (int j=1;j<=m;j++) scanf("%d",&a[i][j]);for (int i=1;i<=n;i++)for (int j=m;j;j--) f[i][j]=max(max(f[i-1][j],f[i][j+1]),f[i-1][j+1]+a[i][j]);printf("%lld\n",f[n][1]);for (int i=1;i<=n;i++)for (int j=1;j<=m;j++) f[i][j]=0;}
}
感觉DP并没有进步多少啊……
【BZOJ3997】组合数学,总之是DP就对了相关推荐
- BZOJ 3997 [TJOI2015]组合数学(单调DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3997 [题目大意] 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右 ...
- ybt 神(bian)奇(tai)题目总结合集(下)
ybt 题目总结&吐槽 合集(下) 第五章 动态规划 树形DP T24 权值统计 T25 树的合并 状压DP T26 涂抹果酱 T27 炮兵阵地 T28 最短路径 T29 图的计数 单调队列 ...
- ACM基础算法入门及题目列表
对于刚进入大学的计算机类同学来说,算法与程序设计竞赛算是不错的选择,因为我们每天都在解决问题,锻炼着解决问题的能力. 这里以TZOJ题目为例,如果为其他平台题目我会标注出来,同时我的主页也欢迎大家去访 ...
- 【BZOJ3997】[TJOI2015]组合数学 最长反链
[BZOJ3997][TJOI2015]组合数学 Description 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格 ...
- CodeForces - 560E Gerald and Giant Chess(组合数学+dp)
题目链接:点击查看 题目大意:给出一个 n∗mn*mn∗m 的矩阵,其中有 kkk 个坏点,每次只能向右走或向下走,问从点 (1,1)(1,1)(1,1) 到点 (n,m)(n,m)(n,m) 共有多 ...
- CodeForces - 336D Vasily the Bear and Beautiful Strings(dp+组合数学)
题目链接:点击查看 题目大意:给出一个 01 字符串,规定求值的过程如下: 每次选择末尾的两个数字: 如果为 0 0 ,那么替换成一个 1 否则替换成一个 0 循环往复,直至只剩一个数字位置,剩下的数 ...
- ZOJ - 4114 Flipping Game(dp+组合数学)
题目链接:点击查看 题目大意:给出一个长度为 n 的 01 字符串表示 n 个灯泡的状态,1 为点亮,0 为熄灭,现在需要进行 k 轮操作,每轮操作可以选择恰好 m 个位置,将灯泡的状态置反,现在给出 ...
- 【BZOJ 3294】 3294: [Cqoi2011]放棋子 (DP+组合数学+容斥原理)
3294: [Cqoi2011]放棋子 Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数 ...
- ARC 128D - Neq Neq(dp+组合数学+思维)
链接 题意: 给出你一个长度为n的序列,你可以对其操作使得这个序列发生变化,问一共有多少种? 对于连续的i-1,i,i+1,这三个数如果满足 ai−1!=aia_{i-1}!=a_{i}ai−1!= ...
最新文章
- 一个查看全部用户的磁盘空间使用情况的脚本
- rails安装与卸载
- vc判断文件夹是否存在
- Day 29:编写你的第一个 Google Chrome 扩展程序
- 理解typedef(转)
- JSP技术之JavaBean
- 水晶报表基础入门——6.交叉报表设计技术
- python requests json_python:解析requests返回的response(json格式)
- php 五子棋源联机版_PHP五子棋服务器代码
- Python规范神器(PEP8 ),Pylint是代码检查工具
- android 罗盘陀螺仪,电子罗盘和陀螺仪的区别以及工作原理介绍
- 对一段Oracle GoldenGate (OGG) 传输进程日志(.rpt文件)的解释
- 工作日时间差/考勤计算(SQL 自定义函数)
- System Development Life Cycle(SDLC)系统生命周期
- php a链接跳转下载,PHP实现点击a标签的href做链接时,直接保存文件(任何类型),而不是通过浏览器直接打开下载的文件...
- NHibernate学习之旅1——什么是NHibernate
- 白手起家成就亿万富翁梦想的企业家和普通人的10点不同之处
- C盘临时文件怎么删除?
- Mybatis-plus分页查询不生效之问题排查
- 一些非常激励人心的电子类同行成长经历