bzoj1149】的更多相关文章

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1149 水题..... 直接BFS. #include<cstdio> #include<cstdlib> #include<iostream> #include<fstream> #include<algorithm> #include<cstring> #include<string> #include<cma…
Description Input Output 输出仅包含一个整数.表示最少需要多少次交换能使风铃满足Ike的条件.如果不可能满足,输出-1. Sample Input 6 2 3 -1 4 5 6 -1 -1 -1 -1 -1 -1 Sample Output 2 题解: 直接一次DFS即可. 若两棵子树中玩具深度差>1,输出-1. 若两颗子数内部玩具深度差都>0,输出-1. 若左子树中存在比右子树深度小的玩具,inc(ans). 我竟然WA了一发,可悲. 代码: uses math; v…
Description Input Output 输出仅包含一个整数.表示最少需要多少次交换能使风铃满足Ike的条件.如果不可能满足,输出-1. Sample Input 6 2 3 -1 4 5 6 -1 -1 -1 -1 -1 -1 Sample Output 2 题解 首先,算出每个结点的maxdep和mindep,即这个子树里叶结点的最大.最小深度. 如果maxdep[1]-mindep[1]>1,无解. 看某个结点,如果它的叶结点深度统一,直接忽略:如果它的两个子结点的子树里深度都不是…
https://www.lydsy.com/JudgeOnline/problem.php?id=1149 https://www.luogu.org/problemnew/show/P3621 sb贪心,然而跪了两次才A……一次还是我自己出的样例都没过结果就交了…… dep[i]表示i子树最深深度,up[i]表示i子树是否有不同层的风铃. 那么深搜一下就行了,判断方法看我代码吧……懒得讲了. #include<cmath> #include<queue> #include<…
题目意为:给一颗二叉树,每一次操作可以交换该子树的左右两颗子树,要将该树变为完全二叉树,求最小操作次数.从根开始进行一遍DFS.记录每棵子树的大小size,如果左子树的size小于右子树的size那么答案+1.实际上并不需要真的将两颗子树交换.接下来就是处理无解的情况了.我们进行分类讨论. 1. 由题意得树的最大深度max_deep-min_deep<=1.我们可以在DFS的过程中记录deep来实现. 2. 判断两颗子树交换后左子树的右儿子size小于右子树左儿子size的情况.通过观察我们发现…