157 条题解
-
0飓风音速 LV 10 @ 2007-08-20 22:14:40
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
首先求出FBI树,在用递归输出后序遍历 -
02007-08-03 09:29:00@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms分治分治!
-
02007-07-16 23:12:33@
一开始竟然把pos函数忘记了...
-
02007-06-03 23:15:28@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms递归………………
-
02007-04-05 17:24:27@
简单树型题
-
02007-03-10 22:17:21@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|- -
02006-11-14 09:33:17@
好象不能用ansistring将得出的后缀串存下来,会超时
还是一边递归一边输出好 -
02006-10-29 09:47:38@
竞赛时没写出来……
竞赛后用了二维数组存二叉树罗罗嗦嗦的AC……
现在才发现程序这么短…… -
02006-10-29 00:40:55@
swgr大牛的代码够简洁~~!!
不像我,很罗嗦地用二叉链表建出了整棵树,再来遍历/.... -
02006-10-02 09:07:18@
用ansistring读入字符串,分别按要求将字符串分成2部分,加入左右子树,(直到s=1)最后对树内字符串稍微转换下输出。OVER
-
02006-09-28 21:16:12@
编译通过...
├ 测试数据 01:答案错误... ├ 标准行输出
├ 错误行输出
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案错误... ├ 标准行输出
├ 错误行输出晕死啦
~~~~~ 我发现教室里有星星 -
02006-09-13 10:15:08@
花了10多分钟 写完
一交发现忘了处理 N=0
一改 全对`\
-
02006-08-26 23:02:43@
这题的n好像可以省略,我没用上……
-
02006-08-18 20:20:17@
根据题意递归构造就可以了
构造时先判这个串是FBI的哪一种,然后劈成两半分别构造,回溯时输出这个串的类型 -
02006-07-23 15:49:01@
啥叫winner tree
-
02006-07-15 00:19:24@
大家尽情bs我
我是用winner tree过的= = -
-12017-05-08 08:01:04@
/* 一道经典的递归树形结构,运气不错一遍过了,没有犯一些低级的错误 对于一个2^n的串,用到2^(n+1)的数组,输入数据在(2^n)到(2^(n+1)-1), 相当于在二叉树结构数组后部输入的 然后开始递归,注意: 我们在手算数据的时候,应该会想到从上向下构造树,即一层一层写下去 但是在写程序的时候,更方便的应该是从下向上建树* 因为可以看出这个二分结构的树状递归的性质是 一个结点的值和其左右子结点的值有关,所以从下向上建立肯定更优 (不然从上向下每次要扫描?ORZ反正很麻烦) 嗯QAQ就这样吧心好累继续水题了 Powder */ #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn=(1<<11)+1; struct node { char c; int lc,rc; node(int x=-1,int y=-1):lc(x),rc(y){}; }tree[maxn]; int n; char check(int x,int y) { if(tree[x].c=='B'&&tree[y].c=='B') return 'B'; if(tree[x].c=='I'&&tree[y].c=='I') return 'I'; return 'F'; } void print(int root) { if(root!=-1) { print(tree[root].lc); print(tree[root].rc); cout<<tree[root].c; } } int main() { char ch; cin>>n; for(int i=(1<<n);i<(1<<(n+1));i++) { cin>>ch; if(ch=='0') tree[i].c='B'; else tree[i].c='I'; } int temp=n-1; while(temp>=0) { for(int i=(1<<temp);i<(1<<(temp+1));i++) { tree[i].lc=2*i; tree[i].rc=2*i+1; tree[i].c=check(2*i,2*i+1); } temp--; } print(1); return 0; }