UVA103 dp基础题,DAG模型
1、UVA103 嵌套n维空间 DAG模型记忆化搜索,或者 最长上升子序列。
2、dp[i]=max( dp[j]+1),(第i个小于第j个)
(1)
//DAG模型记忆化搜索
#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
typedef long long ll;
const int N = 1e6+, M=; int n,m;
int box[M][M],dp[M],fa[M],vis[M],G[M][M];
bool jBigi(int a,int b)
{
FF(i,,m) if(box[a][i]>=box[b][i]) return false;
return true;
}
int D(int x)
{
if(vis[x]) return dp[x];
vis[x]=;
int &ans=dp[x]=;
FF(i,,n) if(G[x][i] && ans<D(i)+) {
ans=D(i)+, fa[x]=i;
}
return ans;
}
void print_ans(int mi)
{
printf("%d\n", dp[mi]);
int first=;
while(mi!=-) {
if(!first) printf(" "); first=;
printf("%d", mi);
mi=fa[mi];
}
printf("\n");
}
int main()
{
while(~scanf("%d%d", &n,&m)) {
FF(i,,n) {
FF(j,,m) scanf("%d", &box[i][j]);
sort(box[i]+,box[i]++m);
} mes(G,); mes(vis,); mes(fa,-);
FF(i,,n) FF(j,,n) if(jBigi(i,j)) G[i][j]=;
int maxn=-INF, mi;
FF(i,,n) {
dp[i]=D(i);
if(maxn<dp[i]) maxn=dp[i], mi=i;
}
print_ans(mi);
} return ;
}
(2)
//最长上升子序列
#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
typedef long long ll;
const long long LINF = 1e18+1LL;
const int N = 1e5+, M = ; int dp[M],fa[M],n,m;
struct box
{
int di[M],ord;
void Sort() { sort(di+,di+m+); }
friend bool operator < (const box & a, const box & b) {
FF(i,,m) if(a.di[i]>b.di[i]) return false; //注:这里不能>=,必须>。因为是重载<,要尽可能使a<b
return true;
}
}B[M]; bool jBigi(int a,int b)
{
FF(i,,m) if(B[a].di[i]>=B[b].di[i]) return false;
return true;
}
void print_ans(int mi)
{
printf("%d\n", dp[mi]);
int first=;
while(mi!=-) {
if(!first) printf(" "); first=;
printf("%d", B[mi].ord);
mi=fa[mi];
}
printf("\n");
}
int main()
{
while(~scanf("%d%d", &n,&m))
{
FF(i,,n) {
FF(j,,m) scanf("%d", &B[i].di[j]);
B[i].Sort(); B[i].ord=i;
}
sort(B+,B++n);
mes(fa,-);
int maxn=-INF, mi;
for(int i=n; i>; --i) { dp[i]=;
for(int j=n; j>i; --j) {
if(jBigi(i,j) && dp[i]<dp[j]+) {
dp[i]=dp[j]+, fa[i]=j;
}
if(maxn<dp[i]) maxn=dp[i], mi=i;
}
}
print_ans(mi);
} return ;
}
UVA103 dp基础题,DAG模型的更多相关文章
- hdu 2089 不要62 (数位dp基础题)
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- poj 2955 Brackets (区间dp基础题)
We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...
- poj2642 The Brick Stops Here(DP基础题)
比基础的多一点东西的背包问题. 链接:POJ2642 大意:有N种砖,每种花费p[i],含铜量c[i],现需要用M种不同的砖融成含铜量在Cmin到Cmax之间(可等于)的砖,即这M种砖的含铜量平均值在 ...
- hdu 2845(dp基础题)
题意:容易理解. 分析:以后碰到这种类型的题,就要考虑把矩阵先按行来处理,再按列处理.先算出每行能够能够得到的最大值,然后按列处理即可. 代码实现: #include<stdio.h> # ...
- 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)
1083 矩阵取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下 ...
- HDU3853 LOOPS 期望DP基础题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题目大意(只是大意,名字什么的可能和原题描述不一样~): 爱丽丝与华容道 题目描述 爱丽丝是一个 ...
- POJ Corn Fields 状态压缩DP基础题
题目链接:http://poj.org/problem?id=3254 题目大意(名称什么的可能不一样,不过表达的意思还是一样的): 种玉米 王小二从小学一年级到现在每次考试都是班级倒数第一名,他的爸 ...
- POJ 2342 Anniversary party 树形DP基础题
题目链接:http://poj.org/problem?id=2342 题目大意:在一个公司中,每个职员有一个快乐值ai,现在要开一个party,邀请了一个员工就不可能邀请其直属上司,同理邀请了一个人 ...
- 牛客假日团队赛5 K 金币馅饼 (DP 基础题)
链接:https://ac.nowcoder.com/acm/contest/984/K 来源:牛客网 金币馅饼 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...
随机推荐
- QSS的应用
1.在同一级别的widget中,如果指定widget有设置样式表,则在qss对该样式表的设置无效,对比验证: (StatusWidget未设置widget样式--运行截图) (StatusWidget ...
- SemanticZoom配合GridView组件的使用关键点
1,SemanticZoom 有两个重要属性 默认值ZoomedInView(不设置的话,默认显示,包括分类名和分类成员)和ZoomedOutView(这个是缩小后的目录,只要包括分类名,点击跳到对应 ...
- SQL转换时间的时分
SELECT WorkerNo, DutyTime, DATENAME(weekday, DutyTime) AS WeekDay, CycleType, CycleNumber, YnOnDuty, ...
- [Sass]局部变量和全局变量
[Sass]局部变量和全局变量 Sass 中变量的作用域在过去几年已经发生了一些改变.直到最近,规则集和其他范围内声明变量的作用域才默认为本地.如果已经存在同名的全局变量,从 3.4 版本开始,Sas ...
- 【纯css】响应式图片列表
示例演示 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...
- tomcat启动报错No UserDatabase component found under key UserDatabase
非正常关机,造成了tomcat下conf文件中的tomcat-user.xml文件异常,copy一个新的tomcat-user.xml覆盖就可以了.
- Yii2 事务操作
官网关于Yii2 事务的说明文档 http://www.yiiframework.com/doc-2.0/guide-db-active-record.html Working with Transa ...
- 解决MVC4 时间验证Bug
MVC验证时间控件(my97,时间格式:yyyy-MM-dd HH:mm:ss) 在谷歌浏览器上一切正常.但在火狐和IE 上一直验证不通过 (错误信息:日期格式不对) 猜想是 时间格式的问题..日期 ...
- Codeforces Round #382 Div. 2【数论】
C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...
- Project Euler欧拉计划
1 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. Th ...