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灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP