zoukankan      html  css  js  c++  java
  • 动态规划:DAG-嵌套矩形

    据说DAG是动态规划的基础,想一想还真的是这样的,动态规划的所有状态和转移都可以归约成DAG

    DAG有两个典型模型,一个是嵌套矩形问题一个是硬币问题,这里仅介绍一个嵌套矩形问题

    等二轮复习的时候再补上

    NYOJ16,南阳OJ很不错的样子嘛

    如果矩形X可以嵌套到矩形Y中,连有向边X->Y

    求DAG的最长路径

    这里起点和终点不用刻意给出,因为任意一个矩形都可以作为起点和终点

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 const int maxn=1005;
     6 int n;
     7 int a[maxn],b[maxn],d[maxn];
     8 int G[maxn][maxn];
     9 int dfs(int x)
    10 {
    11     if(d[x]>0) return d[x];
    12     d[x]=1;
    13     for(int i=1;i<=n;i++)
    14         if(G[x][i]) d[x]=max(d[x],dfs(i)+1);
    15     return d[x];
    16 }
    17 void print_ans(int x)
    18 {
    19     printf("%d ",x);
    20     for(int i=1;i<=n;i++)
    21         if(G[x][i]&&d[x]==d[i]+1)
    22         {
    23             print_ans(i);
    24             break;
    25         } 
    26 }
    27 int main()
    28 {
    29     int T;
    30     scanf("%d",&T);
    31     while(T--)
    32     {
    33         memset(d,0,sizeof(d));
    34         memset(a,0,sizeof(a));
    35         memset(b,0,sizeof(b));
    36         memset(G,0,sizeof(G));
    37         scanf("%d",&n);
    38         for(int i=1;i<=n;i++)
    39             scanf("%d%d",&a[i],&b[i]);
    40         for(int i=1;i<=n;i++)
    41             for(int j=1;j<=n;j++)
    42             {
    43                 if(a[i]>a[j]&&b[i]>b[j]||a[i]>b[j]&&b[i]>a[j])
    44                     G[i][j]=1;
    45             }
    46         int tmp=0;
    47         for(int i=1;i<=n;i++)
    48             tmp=max(tmp,dfs(i));
    49         printf("%d
    ",tmp);
    50     }
    51 
    52     return 0;
    53 }

    记忆化很舒适

  • 相关阅读:
    ZOJ3513_Human or Pig
    ZOJ2083_Win the Game
    ZOJ2725_Digital Deletions
    ZOJ2686_Cycle Gameu
    UVALive
    ZOJ2290_Game
    ZOJ3067_Nim
    P3159 [CQOI2012]交换棋子(费用流)
    P3153 [CQOI2009]跳舞(最大流多重匹配)
    P3121 [USACO15FEB]审查(黄金)Censoring (Gold)(ac自动机)
  • 原文地址:https://www.cnblogs.com/aininot260/p/9473700.html
Copyright © 2011-2022 走看看