USACO :Cow Pedigrees解题报告
2010-06-24 15:43
337 查看
也是一道dp,思想是:节点数为i,深度为k的树的个数 = 节点数为j,深度为k1的树的个数 乘以 节点数为i-j-1,深度为k2的树的个数, 其中k1,k2可有节点数确定范围。dp的方程式为:dp[i][max(k1,k2)+1] += dp[j][k1]*dp[i-j-1][k2];
/*
ID: xpli1
PROG: nocows
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define IN fin
#define OUT fout
#define max(a,b) (((a) > (b)) ? (a) : (b))
ifstream fin ("nocows.in", ios::in);
ofstream fout("nocows.out",ios::out);
int n,k;
int dp[201][101];
int main(){
IN >> n >> k;
int i,j,k1,k2;
dp[1][1] = 1;
for(i = 3; i <= n; i+=2){
for(j = 1; j < i - 1; j+=2){
for(k1 = 1; k1 <= (j+1)/2; k1++){
for(k2 = 1; k2 <= (i-j)/2; k2++){
dp[i][max(k1,k2)+1] += dp[j][k1]*dp[i-j-1][k2];
dp[i][max(k1,k2)+1] %= 9901;
}
}
}
}
OUT << dp
[k] << endl;
return 0;
}
/*
ID: xpli1
PROG: nocows
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define IN fin
#define OUT fout
#define max(a,b) (((a) > (b)) ? (a) : (b))
ifstream fin ("nocows.in", ios::in);
ofstream fout("nocows.out",ios::out);
int n,k;
int dp[201][101];
int main(){
IN >> n >> k;
int i,j,k1,k2;
dp[1][1] = 1;
for(i = 3; i <= n; i+=2){
for(j = 1; j < i - 1; j+=2){
for(k1 = 1; k1 <= (j+1)/2; k1++){
for(k2 = 1; k2 <= (i-j)/2; k2++){
dp[i][max(k1,k2)+1] += dp[j][k1]*dp[i-j-1][k2];
dp[i][max(k1,k2)+1] %= 9901;
}
}
}
}
OUT << dp
[k] << endl;
return 0;
}
相关文章推荐
- USACO 2.3.2 Cow Pedigrees 解题报告
- USACO Section2.3 Cow Pedigrees 解题报告 【icedream61】
- USACO Stringsobits 解题报告
- USACO Spinning Wheels 解题报告
- USACO Feed Ratios 解题报告
- USACO Camelot 解题报告
- USACO2.4.2 穿越栅栏(简单版本) (重庆一中高2018级信息学竞赛测验2) 解题报告
- USACO历年比赛的数据和解题报告
- USACO Picture 解题报告
- USACO Postal Vans 解题报告
- USACO Betsy's Tour 解题报告
- usaco Transformations 解题报告
- USACO Cowcycles 解题报告
- USACO Fencing the Cows 解题报告
- USACO 3.1解题思路报告
- USACO 3.4解题报告
- USACO 4.3解题报告
- BZOJ 1682 [Usaco2005 Mar] 最小生成树 解题报告
- usaco 1.1 PROB Greedy Gift Givers 解题报告
- USACO Section 1.3 Ski Course Design 解题报告