Prob_Solve 板


LINE

http://ace.delos.com/usacoprob2?a=4e4SWaoiBTO&S=nocows 這題我自己我解到一半碰到了一些問題 希望各位可以指點一二 以下是過程 我的解題的關鍵在 任何一個節點的分支度不是0就是2 在填二維DP表中 我把第一維設成節點數 第二維數的高度 但是跑回圈的時候 是先跑第二維才跑第一維 ( 節點改變的速度 比 高度變的速度 快 ) 像這樣 int table[200][200]; int i,k; for(k=2;k<=b;k++) for(i=3;i<=a;i++) { } 其中 a和b分別是目標的節點數及高度 這時 回到解題關鍵 任何一個節點的分支度不是0就是2 所以 我就把兩顆樹 分別裝到一個單獨節點的左邊及右邊 形成一顆新的 符合限制的樹 =>反過來說 除了[1][1]之外 所有符合限制的樹[i][k] 都可以由 兩顆總節點樹為i-1 並至少有一顆的高度=k 넠所推得 我的做法是 確定左邊的高度為k-1 然後用一個迴圈跑左邊樹的節點數 這時我們已經可以確定右邊樹的節點數了 所以在用另一個變數去跑右邊樹的高度 再把很多組(左邊樹的個數*右邊樹的個數) 加起來(排列組合) for(k=2;k<=b;k++) { temp=k-1; for(i=3;i<=a;i++) { table[i][k]=0; for(j=1;j<i;j++) for(l=1;l<=temp;l++) { table[i][k]+=table[i-j-1][temp]*table[j][l]; table[i][k]%=9901; } } } 然後 左邊有的 右邊也該有 所以乘二 又因為如果接上的左子樹=接上的右子樹 在上面的乘二會造成重複 所以 利用他用他們高度都=k-1 以及他們的總結點數=i-1 得到要扣掉的數目是 table[(i-1)/2][k-1] 加上一些判斷條件 table[i][k]*=2; if((i-1)%2==0) { table[i][k]-=table[(i-1)/2][k-1]; table[i][k]+=9901; table[i][k]%=9901; } 把這些玩意而再加入剛剛的迴圈中 就得到幾乎完整的運算過程 for(k=2;k<=b;k++) { temp=k-1; for(i=3;i<=a;i++) { table[i][k]=0; for(j=1;j<i;j++) for(l=1;l<=temp;l++) { table[i][k]+=table[i-j-1][temp]*table[j][l]; table[i][k]%=9901; } table[i][k]*=2; if((i-1)%2==0) { table[i][k]-=table[(i-1)/2][k-1]; table[i][k]+=9901; table[i][k]%=9901; } } } 再加上雜務 /* ID: s2138951 PROG: nocows LANG: C++ */ #include<stdio.h> int table[200][200]; int main() { int a,b; int i,k,j,l; int temp; int temp2; FILE *in; FILE *out; for(k=0;k<=3;k++) for(i=0;i<200;i++) table[i][k]=0; table[0][0]=1; table[1][1]=1; in=fopen("nocows.in","r"); fscanf(in,"%d %d",&a,&b); fclose(in); for(k=2;k<=b;k++) { temp=k-1; for(i=3;i<=a;i++) { table[i][k]=0; for(j=1;j<i;j++) for(l=1;l<=temp;l++) { table[i][k]+=table[i-j-1][temp]*table[j][l]; table[i][k]%=9901; } table[i][k]*=2; if((i-1)%2==0) { table[i][k]-=table[(i-1)/2][k-1]; table[i][k]+=9901; table[i][k]%=9901; } } } out=fopen("nocows.out","w"); fprintf(out,"%d\n",table[a][b]); fclose(out); return 0; 拿去跑一開始給的測資是對的 系統給的一號 二號測資也是對的 但是在三號測資wrong answer ----- our output --------- 5024 ---- your output --------- 1208 -------------------------- ------ Data for Run 3 ------ 35 7 ---------------------------- 乎 好長 剩下的另po一篇 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.111.105







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP