多维矩形嵌套,和二维的一模一样。判断能否嵌套时需要先排序。

AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=30+5;
int G[maxn][maxn],dp[maxn];
struct node{
    int pos[15];
};
node a[maxn];
int n,k;
int solve(int i){
    if(dp[i]>0) return dp[i];
    int ans=1;
    for(int j=0;j<n;++j){
        if(G[i][j]) ans=max(ans,solve(j)+1);
    }
    return dp[i]=ans;
}

vector<int>way;
void print(int i){
    way.push_back(i+1);
    for(int j=0;j<n;++j){
        if(G[i][j]&&dp[j]+1==dp[i]){
            print(j);
            break;
        }
    }
}
int main(){
    while(scanf("%d%d",&n,&k)==2){
        for(int i=0;i<n;++i){
            for(int j=0;j<k;++j){
                scanf("%d",&a[i].pos[j]);
            }
            sort(a[i].pos,a[i].pos+k);
        }
        memset(dp,0,sizeof(dp));
        memset(G,0,sizeof(G));
        for(int i=0;i<n;++i)
        for(int j=0;j<n;++j){
            node &u=a[i],&v=a[j];
            int flag=1;
            for(int c=0;c<k;++c){
                if(u.pos[c]>=v.pos[c]){
                    flag=0;
                    break;
                }
            }
            if(flag) G[i][j]=1;
        }
        int ans=1;
        for(int i=0;i<n;++i){
            ans=max(ans,solve(i));
        }
        printf("%d\n",ans);
        //print
        for(int i=0;i<n;++i)
            if(dp[i]==ans){
                print(i);
                break;
            }
        for(int i=0;i<way.size();++i){
            if(i==0) printf("%d",way[i]);
            else printf(" %d",way[i]);
        }
        printf("\n");
        way.clear();
        }

    return 0;
}

如有不当之处欢迎指出!

uva103 动态规划的更多相关文章

  1. 增强学习(三)----- MDP的动态规划解法

    上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...

  2. 简单动态规划-LeetCode198

    题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...

  3. 动态规划 Dynamic Programming

    March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...

  4. 动态规划之最长公共子序列(LCS)

    转自:http://segmentfault.com/blog/exploring/ LCS 问题描述 定义: 一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 ...

  5. C#动态规划查找两个字符串最大子串

     //动态规划查找两个字符串最大子串         public static string lcs(string word1, string word2)         {            ...

  6. C#递归、动态规划计算斐波那契数列

    //递归         public static long recurFib(int num)         {             if (num < 2)              ...

  7. 动态规划求最长公共子序列(Longest Common Subsequence, LCS)

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...

  8. 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划

    [BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...

  9. UVA103 dp基础题,DAG模型

    1.UVA103 嵌套n维空间 DAG模型记忆化搜索,或者 最长上升子序列. 2.dp[i]=max( dp[j]+1),(第i个小于第j个) (1) //DAG模型记忆化搜索 #include< ...

随机推荐

  1. grails项目数据源配置

    grails项目数据源配置 mysql: driverClassName : com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/mysql ...

  2. 在vue中优雅地实现简单页面逆传值

    [需求] 要实现的需求很简单,页面从A -> B,用户在B触发操作,将一些数据带回到A页面,在网上找了好久也只看到有人问,但总找不到很好答案.要实现的效果图如下: [联想] 在 ios 开发中, ...

  3. [JLOI2011]基因补全

    1973: [JLOI2011]基因补全 Time Limit: 1 Sec  Memory Limit: 256 MB Description 在生物课中我们学过,碱基组成了DNA(脱氧核糖核酸), ...

  4. js事件绑定函数

    js中事件绑定方法大致有三种: 1.在DOM元素中绑定 <input onclick="alert('在DOM中绑定')" type="button" v ...

  5. MySQL之SELECT用法

    主要是为了搞定一个select语句,因为语法比较奇怪,没看懂,百度了一些结果 select的东西相当于一个临时表,as就给这临时表取个名字. SELECT语句的完整语法SELECT语句的完整语法为: ...

  6. 几次面试后才弄懂的HashMap

    本人大四,以前也开发过几个项目,Map相关集合也总用.但是从来没有研究过底层的实现,只知道杂用.结果在最开始的几次面试中一脸懵逼.认识到不足后,浅显的学习了一下,总结成一下几点.(如果写错了还望指正) ...

  7. CSS继承、层叠和特殊性

    1.继承 (1)样式应用于某个特定的HTML标签元素,而且应用于其后代. (2)但某些标签不适用,如border: (3)例子:p{color:red;}设置了颜色 <p class=" ...

  8. 【PHP】学习中遇到的php方法

    [1]range()快速创建一个范围内数组 <?php range(0,20); 创建一个包含从 "0" 到 "20" 之间的元素范围的数组: range ...

  9. 关于Linux的常忘命令积累

    1.在vim中显示行号  在/etc/vimrc里加上一行   set nu! 2./etc/sysconfig/network-scripts/ifcfg-eth0  (DNS1=192.168.1 ...

  10. Web安全之CSP

    内容安全策略(Content-Security-Policy,简称CSP) 概念: 内容安全策略(CSP)是一种web应用技术用于帮助缓解大部分类型的内容注入攻击,包括XSS攻击和数据注入等,这些攻击 ...