标签:isp dfs 搜索 和我 clu text 动态 sed include
一时暴搜一时爽 一直暴搜一直爽 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 }
然后考完一讲 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 [动态规划]
标签:isp dfs 搜索 和我 clu text 动态 sed include
原文地址:https://www.cnblogs.com/lxyyyy/p/10809013.html