【BZOJ3997】[TJOI2015]组合数学 最长反链
【BZOJ3997】[TJOI2015]组合数学
Description
给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走。问至少走多少次才能将财宝捡完。此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完。
Input
第一行为正整数T,代表数据组数。
Output
输出一个整数,表示至少要走多少次。
Sample Input
3 3
0 1 5
5 0 0
1 0 0
Sample Output
HINT
N<=1000,M<=1000.每个格子中财宝数不超过10^6
题解:丧病结论题,拓扑图的最小链覆盖=最长反链。
于是n^2DP求出最长反链就行了。
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int n,m;
int v[1010][1010],f[1010][1010]; inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
return ret*f;
}
void work()
{
n=rd(),m=rd();
int i,j;
for(i=1;i<=n;i++) for(j=1;j<=m;j++) v[i][j]=rd();
memset(f,0,sizeof(f));
for(j=m;j>=1;j--)
{
for(i=1;i<=n;i++)
{
f[i][j]=max(max(f[i-1][j],f[i][j+1]),f[i-1][j+1]+v[i][j]);
}
}
printf("%d\n",f[n][1]);
}
int main()
{
int T=rd();
while(T--) work();
return 0;
}
【BZOJ3997】[TJOI2015]组合数学 最长反链的更多相关文章
- bzoj3997[TJOI2015]组合数学(求最长反链的dp)
组合数学 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走 ...
- [BZOJ3997][TJOI2015]组合数学(Dilworth定理+DP)
题目名字是什么就不能往那方面想. 每个点拆成a[i][j]个,问题变为DAG最小路径覆盖,由Dilworth定理转成最长反链. 使用Dilworth定理的时候要注意那些点之间有边,这里任意一个点和其右 ...
- BZOJ3997: [TJOI2015]组合数学(网络流)
3997: [TJOI2015]组合数学 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 405 Solved: 284[Submit][Status ...
- bzoj千题计划298:bzoj3997: [TJOI2015]组合数学
http://www.lydsy.com/JudgeOnline/problem.php?id=3997 最小链覆盖=最长反链长度 所以题目等价于寻找一条从右上角到左下角的最长路 #include&l ...
- BZOJ3997:[TJOI2015]组合数学(DP,Dilworth定理)
Description 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一 ...
- BZOJ3997 [TJOI2015]组合数学 【Dilworth定理】
题目 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走多少 ...
- bzoj3997[TJOI2015]组合数学
http://www.lydsy.com/JudgeOnline/problem.php?id=3997 偏序集,看上一篇随笔. 我们要求最少路径覆盖,可以等价于求最大独立集. 我们要找到一个权值和最 ...
- BZOJ3997 TJOI2015组合数学(动态规划)
copy: Dilworth定理:DAG的最小链覆盖=最大点独立集 最小链覆盖指选出最少的链(可以重复)使得每个点都在至少一条链中 最大点独立集指最大的集合使集合中任意两点不可达 此题中独立的定义即是 ...
- bzoj3997组合数学(求最长反链的dp)
组合数学 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走 ...
随机推荐
- es6 解构写法:给变量取别名
在变量后面加一个: var {f: foo} = {f: 5}; foo == 5 // true
- codevs——1220 数字三角形(棋盘DP)
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或 ...
- 转:GEF 英文全称Graphical Editor Framework
http://blog.csdn.net/chancein007/article/category/2713827
- 使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话
使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话 因为公司有多台服务器,所以session要保存在sql server上,因此要在数据库中建立存放se ...
- servlet源码查看
1,下载源码,点击此处可下载 2,创建web项目 我这里以jdbc这个web项目为例讲解 在javaee libraries中有个javaee.jar包,选中它-->右击-->Proper ...
- 关于 OGRE 与 OSG 的简单比较 (转)
关于 OGRE 与 OSG 的简单比较 1 前言 我曾经细致阅读过 OGRE 和 OSG 官方提供的文档,有<Pro OGRE 3D Programming>.OGRE自带手册(man ...
- Jboss7类载入器
1. 类载入器理论知识介绍 类载入器基于Jboss Module,代替了层次类载入环境,避免了当类存在多个版本号时,导致类载入错误. 类载入是基于模块的.必须显示的定义模块依赖.部署也是模块化的,假设 ...
- SparkStreaming和Drools结合的HelloWord版
关于sparkStreaming的测试Drools框架结合版 package com.dinpay.bdp.rcp.service; import java.math.BigDecimal; impo ...
- Confluence JIRA快速入门
Confluence JIRA快速入门 http://www.confluence.cn/pages/viewpage.action?pageId=2916470
- Java内存泄漏及分析
对于内存泄漏,首先想到的是C语言,其实不然,java中也有各种的内存泄漏.对于java程序员,在虚拟即中,不需要为每一个新建对象去delete/free内存,不容易出现内存泄漏.但是,正 是由于这种机 ...