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. Lambda 表达式[MSDN]

    Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数.Lambda 表达式对于编写 LINQ 查 ...

  2. Cordova环境搭建 & HelloWorld

    目前的手机APP有三类:原生APP,WebAPP,HybridApp:HybridApp结合了前两类APP各自的优点,越来越流行. Cordova就是一个中间件,让我们把WebAPP打包成Hybrid ...

  3. .NET+IIS+MSSQL配置

    好久没配置.NET+IIS+MSSQL了,跟以前不大一样了.总结下吧. 环境: Windows Server 2012 标准版 x64 SQL Server Express 2014 一.HTTP E ...

  4. PHP生成日历数组,减少分页

    2016年11月14日 20:45:41 星期一 情景, 每个用户设置定投, app的屏幕比较小, 觉得常规的线性分页下拉不是很方便 吧列表改为日历格式的会更方便执行, 每年12个月, 总过12个页面 ...

  5. component

    在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的Java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类 ...

  6. CPrimerPlus第11章第10题

    题目: 编写一个程序,读取输入,直到读入了10个字符串或遇到EOF,由二者中最先被满足的那个终止读取过程.这个程序可以为用户提供一个有5个选项的菜单:输出初始字符串列表.按ASCII顺序输出字符串.按 ...

  7. STL源码学习----lower_bound和upper_bound算法

    转自:http://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html 先贴一下自己的二分代码: #include <cstdio&g ...

  8. STM32F412应用开发笔记之三:SPI总线通讯与AD采集

    本次我们在NUCLEO-F412ZG试验模拟量输入采集.我们的模拟量输入采用ADI公司的AD7705,是一片16位两路差分输入的AD采集芯片.具有SPI接口,我们将采用SPI接口与AD7705通讯.两 ...

  9. HTML 保存图片到本地

    具体方法有两种  一种是 利用canvas的 toDataUrl  和Html5 里面的 <a>标签里面的 Download 属性 虽然 Download 的兼容性不怎么样  但是在文章后 ...

  10. Tomcat7.0+ web.xml问题

    Tomcat7+版本的web.xml都加上 <context-param> <param-name>webAppRootKey</param-name> <p ...