摘要:
给出一棵树,找出两条不相交即没有公共点的路径,使得两个路径的长度的乘积最大。思路:枚举树中的边,将该边去掉,分成两棵树,分别求出这两棵树的直径,乘起来维护一个最大值即可。 1 #include 2 #include 3 #include 4 #include 5 using namespac... 阅读全文
摘要:
这题的解法有点神啊。。参考题解 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 typedef long long LL; 8 const LL INF = (1LL G[maxn];14 15... 阅读全文
摘要:
官方题解:可以用求概率的思想来解决这个问题。令以i号节点为根的子树为第i棵子树,设这颗子树恰好有sz[i]个点。那么第i个点是第i棵子树最大值的概率为1/sz[i],不是最大值的概率为(sz[i]-1)/sz[i]。现在可以求解恰好有k个最大值的概率。令dp[i][j]表示考虑编号从1到i的点,其中... 阅读全文
摘要:
任意一棵子树上节点的编号连续,每个节点的所有二字节点连续,求编号方案的总数。稍微分析一下可知每个节点的非叶子节点个数不能多于两个,否则这个子树无解,从而整棵树都无解。每棵子树将所有节点按照编号从小到大排序,根节点要么在最左端,要么在最右端,而且这两种情况相等。(后面会有具体分析)设size(u)表示... 阅读全文