USACO TRAINING 奶牛家譜

2021-07-26 07:51:36 字數 1049 閱讀 7004

時間限制: 1 sec  

記憶體限制: 64 mb

提交: 53  

解決: 24 [

提交][

狀態][

我的提交]

農民約翰準備購買一群新奶牛。 在這個新的奶牛群中, 每乙個母親奶牛都生兩小奶牛。這些奶牛間的關係可以用二叉樹來表示。這些二叉樹總共有n個節點(3 <= n < 200)。這些二叉樹有如下性質:

有多少不同的家譜結構? 如果乙個家譜的樹結構不同於另乙個的, 那麼這兩個家譜就是不同的。

輸出可能的家譜樹的個數除以9901的餘數。

第1行:2個空格分開的整數, n和k。

第1行:1個整數,表示可能的家譜樹的個數除以9901的餘數。

copy

(如果複製到控制台無換行,可以先貼上到文字編輯器,再複製)

5 3 

2

說明:有5個節點,高為3的兩個不同的家譜:

分析:開始還想暴力搜尋,後來越寫越不對。。。。。233333333,,,然後後來發現是dp,qnq但當時思維莫名固化在遞迴上,,,233333就寫成計畫搜尋了qwq。。。。。dp思路還是挺好想的,dp[k][n]表示到k層為止用了n個節點(第k層可能沒有節點),然後列舉上一層為止用了的節點個數更新233333,,,,

dp[k][n]+=dp[k-1][lst]*dp[k-1][n-lst-1];

qnq:然而ac後看前面跑得快的程式,直接乙個三層迴圈,還比我短一半(壓行強迫症患者的重點),,23333333,,qnq,,莫名小絕望,,我的計畫搜尋已經醜到這種境界了嗎233333333333,,,qnq

#include#include#include#include#include#include#include#includeusing namespace std;

const int mod=9901;

int n,k,dp[210][210];

int dfs(int k,int n)

int main()

usaco training 1 3奶牛回文

據說如果你給無限只母牛和無限臺巨型可攜式電腦 有非常大的鍵盤 那麼母牛們會製造出世上最棒的回文。你的工作就是去尋找這些牛製造的奇觀 最棒的回文 在尋找回文時不用理睬那些標點符號 空格 但應該保留下來以便做為答案輸出 只用考慮字母 a z 和 a z 要你尋找的最長的回文的文章是乙個不超過 20,00...

USACO TRAINING 子集的和

時間限制 1 sec 記憶體限制 64 mb 對於從1到n 1 n 39 的連續整數集合,能劃分成兩個子集合,且保證每個集合的數字之和是相等的。舉個例子,如果n 3,對於能劃分成兩個子集合,他們每個的所有數字和是相等的 and 這是唯一一種分法 交換集合位置被認為是同一種劃分方案,因此不會增加劃分方...

USACO training 做題記錄

字串處理,把飛碟和組名的編號記下來,比一下就行了 c code includeusing namespace std int main for int o 0 o k money num int give 給每個人的錢數 if num 0 else while num for int i 0 i真 ...