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模型的更多相关文章

  1. hdu 2089 不要62 (数位dp基础题)

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. poj 2955 Brackets (区间dp基础题)

    We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...

  3. poj2642 The Brick Stops Here(DP基础题)

    比基础的多一点东西的背包问题. 链接:POJ2642 大意:有N种砖,每种花费p[i],含铜量c[i],现需要用M种不同的砖融成含铜量在Cmin到Cmax之间(可等于)的砖,即这M种砖的含铜量平均值在 ...

  4. hdu 2845(dp基础题)

    题意:容易理解. 分析:以后碰到这种类型的题,就要考虑把矩阵先按行来处理,再按列处理.先算出每行能够能够得到的最大值,然后按列处理即可. 代码实现: #include<stdio.h> # ...

  5. 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)

    1083 矩阵取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下 ...

  6. HDU3853 LOOPS 期望DP基础题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题目大意(只是大意,名字什么的可能和原题描述不一样~): 爱丽丝与华容道 题目描述 爱丽丝是一个 ...

  7. POJ Corn Fields 状态压缩DP基础题

    题目链接:http://poj.org/problem?id=3254 题目大意(名称什么的可能不一样,不过表达的意思还是一样的): 种玉米 王小二从小学一年级到现在每次考试都是班级倒数第一名,他的爸 ...

  8. POJ 2342 Anniversary party 树形DP基础题

    题目链接:http://poj.org/problem?id=2342 题目大意:在一个公司中,每个职员有一个快乐值ai,现在要开一个party,邀请了一个员工就不可能邀请其直属上司,同理邀请了一个人 ...

  9. 牛客假日团队赛5 K 金币馅饼 (DP 基础题)

    链接:https://ac.nowcoder.com/acm/contest/984/K 来源:牛客网 金币馅饼 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...

随机推荐

  1. 163邮件出错:不允许使用邮箱名称。 服务器响应为: authentication is required,smtp7,C8CowEDpS0+Uke9VvSmXBg--.546S2 1441763733

    原因:用163邮箱发邮件,需开启smtp服务,开启服务时,要求使用客户端授权码. 在.net中,使用smtp发邮件,在验证中使用的密码,是上面所讲的客户端授权码,而不是注册和web登录时用的邮箱密码. ...

  2. ubuntu 好玩多了

    从一开始的咒骂,到慢慢的喜欢,ubuntu比CentOs可玩多了.

  3. tomcat虚拟路径

    目的:减小项目大小,方便部署和资源共享 tomcat/conf/server.xml host 标签中添加 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: ...

  4. 关于chart.js 设置canvas的宽度为父级元素的宽度的百分百 以及 X轴上面刻度数据太多如何处理

    今天在做一个数据统计的界面的时候,需要做折线统计图,在网上找了一圈发现数据统计的插件还是不少的,本着轻量级的的原则选择了Chart.js,后来在做的过程中便遇到两个问题,以此记录下来,和刚刚接触前端的 ...

  5. SQL多表查询,消除表中的重复的内容

    看到朋友再写一个SQL语句:两个表a1表中有SN.SN2.TN,b1表有SM.SM2.TN2,若a1的SN中的数据和b1的SM中的数据是一致的,那么将a1中对应的数据修改成b1中对应的数据. upda ...

  6. CSS--实现小三角形

    <style> html, body { margin: 0; padding: 0; } /*下面用CSS3分别实现向上.下.左.右的三角形*/ .btn-color{ color: # ...

  7. Jenkins持续集成 & .NET

    最近受累于测试环境每次发布都很麻烦,而且我们有多个测试环境,因此专门抽时间做了Jenkins的配置和研究. 折腾了两天终于绿灯以后,先来个截图,BlueOcean UI还是很nice的. 环境搭建 找 ...

  8. 安装Kafka

    1.默认安装好zookeeper和scala2.下载安装包,解压 tar -zxvf kafka_2.11-0.9.0.1.tgz kafka_2.11-0.9.0.13.配置环境变量 vim /et ...

  9. XE2 IntraWeb尝试

    新建--选择--确定 简单放几个控件在TIWForm1上面,运行,生成一个项目服务器:    复制 URL  http://127.0.0.1:8888/$/start 打开网页.

  10. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...