1095:二分递归。先计算,n个节点的二叉树的个数,count[n]=sum(count[i]*count[n-1-i]), 0<=i<n, 同时保存第一颗总结点数为n左子树节点数为i的二叉树的序号。然后读输入n,递归调用solve(n),n为当前所求二叉树的序号。solve函数分三部分,先计算左子树的序号nLeft,打印(,调用solve(nLeft)打印左子树,打印),然后打印X,最后计算右子树的序号,打印(,递归调用solve(nRight)打印右子树,打印)。很麻烦的一道题,琐碎的计算,踩踩,最怕这类题
1096:模拟。检查每一个方块的每一面,如该面的相邻方块为空,且能够从外界到达,则总数加1。所有可以从外界到达的空方块皆连通,所以在检查前,先调用bfs预处理,沿途标识可以抵达的空方块。贡献了n+1个wa,考虑的太不周到了。注意,预处理不能用递归dfs,会溢出。。。
1097:最短距离。用floyd算法,计算出所有交叉口之间的最短距离。然后每读取一个标志牌描述,检查所有城市,如标志牌所在路的路长加上该路的出口到某一城市的距离和等于该路的入口到该城市的最短距离,则计算余下的路长并标识该城市,所有城市检查完后,排序输出已标识的城市名及剩余路长。
注意!!!C库函数abs()返回整数值!!!
1099:模拟。
