1. 程式人生 > >【luogu1472】 奶牛家譜 Cow Pedigrees [動態規劃]

【luogu1472】 奶牛家譜 Cow Pedigrees [動態規劃]

ont getc ans dig r+ gis 怎麽 close edi

一時暴搜一時爽 一直暴搜一直爽 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 }

【luogu1472】 奶牛家譜 Cow Pedigrees [動態規劃]