zoukankan      html  css  js  c++  java
  • hdu 5151 Sit sit sit

    http://acm.hdu.edu.cn/showproblem.php?pid=5151

    题意:一共有N个椅子,然后有N个学生依次去坐,满足下面三个条件不能坐上去,1:这个椅子旁边有左椅子也有右椅子,2:椅子旁边都有人坐了,3:椅子旁边的椅子颜色不一样。

    问如果所有人都坐上去有多少情况。

    dp[i][j] 表示区间[i,j]满足的情况数。 这道题是一道区间dp。把一个很大的区间化成多个很小的区间处理。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define mod 1000000007
     5 #define ll long long
     6 using namespace std;
     7 
     8 int n;
     9 int a[200];
    10 ll c[200][200];
    11 ll dp[200][200];
    12 
    13 void inti()
    14 {
    15     for(int i=0; i<=101; i++)
    16     {
    17         c[i][0]=1;
    18         for(int j=1; j<=i; j++)
    19         {
    20             c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
    21         }
    22     }
    23 }
    24 
    25 ll get_num(int x,int y)
    26 {
    27     if(x>y) return 0;
    28     if(dp[x][y]) return dp[x][y];
    29     if(x==y) return dp[x][y]=1;
    30     ll ans=0;
    31     for(int i=x+1; i<y; i++)
    32     {
    33         if(a[i-1]!=a[i+1]) continue;
    34         ans+=get_num(x,i-1)*get_num(i+1,y)%mod*c[y-x][i-x]%mod;
    35         ans%=mod;
    36     }
    37     ans+=get_num(x+1,y);
    38     ans%=mod;
    39     ans+=get_num(x,y-1);
    40     ans%=mod;
    41     dp[x][y]=ans;
    42     return dp[x][y];
    43 }
    44 
    45 int main()
    46 {
    47     inti();
    48     while(scanf("%d",&n)!=EOF)
    49     {
    50         memset(dp,0,sizeof(dp));
    51         for(int i=1; i<=n; i++)
    52         {
    53             scanf("%d",&a[i]);
    54         }
    55         printf("%lld
    ",get_num(1,n));
    56     }
    57     return 0;
    58 }
    View Code
  • 相关阅读:
    Flutter DraggableScrollableSheet 可滚动对象的容器
    Flutter 避免阻塞ui线程
    Android Kotlin 数据驱动模板
    ng mock服务器数据
    rxjs 常用的subject
    Flutter 在同一页面显示List和Grid
    dart2native 使用Dart 在macOS,Windows或Linux上创建命令行工具
    Flutter 创建透明的路由页面
    ng 发布组件库
    js实现单张或多张图片持续无缝滚动
  • 原文地址:https://www.cnblogs.com/fanminghui/p/4197397.html
Copyright © 2011-2022 走看看