zoukankan      html  css  js  c++  java
  • 【luogu1472】 奶牛家谱 Cow Pedigrees [动态规划]

    一时暴搜一时爽 一直暴搜一直爽  cxl居然和我写的同款dfs,天呢

    菜鸡开始对这题并没有什么想法 状态方程死活想不出来 还是暴搜好

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 #define rg register
     5 const int N=200,K=100,P=9901;
     6 int n,k,f[K+5][N+5],ans=0;
     7 template <class t>void rd(t &x)
     8 {
     9     x=0;int w=0;char ch=0;
    10     while(!isdigit(ch)) w|=ch=='-',ch=getchar();
    11     while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    12     x=w?-x:x;
    13 }
    14 
    15 void dfs(int deep,int l,int r)
    16 {
    17     if(deep==k&&(l+r+1)==n) {++ans;ans%=P;return;}
    18     if((l+r+1>=(1<<deep))||deep>k) return;
    19     dfs(deep+1,l,r+2);dfs(deep+1,l+2,r);
    20     dfs(deep,l+2,r);dfs(deep,l,r+2);
    21 }
    22 
    23 int main()
    24 {
    25     freopen("nocows.in","r",stdin);
    26     freopen("nocows.out","w",stdout);
    27     rd(n),rd(k);
    28     if(n==(1<<k)-1) {printf("1");exit(0);}
    29     dfs(2,1,1);
    30     printf("%d",ans);
    31     return 0;
    32 }
    16昏 搜索

    然后考完一讲 dp[i][j]表示j个点不超过i层的方案数 不超过?! 怎么可以这么机智啊啊啊啊 我怎么就想不到

    然后最后答案用dp[k][n]-dp[k-1][n]  因为中途%了有可能减出来为负 最后要+P然后% 别问我为什么知道

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 #define rg register
     5 const int N=200,K=100,P=9901;
     6 int n,k,f[K+5][N+5],ans=0;
     7 template <class t>void rd(t &x)
     8 {
     9     x=0;int w=0;char ch=0;
    10     while(!isdigit(ch)) w|=ch=='-',ch=getchar();
    11     while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    12     x=w?-x:x;
    13 }
    14 
    15 int main()
    16 {
    17     //freopen("nocows.in","r",stdin);
    18     //freopen("nocows.out","w",stdout);
    19     rd(n),rd(k);
    20     for(rg int i=1;i<=k;++i) f[i][1]=1;
    21     for(rg int dep=1;dep<=k;++dep)
    22     for(rg int i=3;i<=n;i+=2)
    23     for(rg int j=1;j<i;j+=2)
    24     f[dep][i]=(f[dep][i]+f[dep-1][j]*f[dep-1][i-j-1])%P;
    25     printf("%d",(f[k][n]-f[k-1][n]+P)%P);
    26     return 0;
    27 }
  • 相关阅读:
    Element 更新以及全局设置属性
    第二次作业
    软件工程---自我介绍
    git lfs
    SUID
    G1 log 解析
    CMS jvm flags详解
    java不安全证书报证书路径找不到问题
    记一次CMS unloading class 耗时长调查
    springboot jsp 在Linux中报404问题
  • 原文地址:https://www.cnblogs.com/lxyyyy/p/10809013.html
Copyright © 2011-2022 走看看