BZOJ4675】的更多相关文章

[BZOJ4675]点对游戏 Description 桑尼.露娜和斯塔在玩点对游戏,这个游戏在一棵节点数为n的树上进行. 桑尼.露娜和斯塔三人轮流从树上所有未被占有的节点中选取一点,归为己有,轮流顺序为桑尼.露娜.斯塔.桑尼.露娜…….该选取过程直到树上所有点都被选取后结束. 选完点后便可计算每人的得分.点对游戏中有m个幸运数,在某人占据的节点中,每有一对点的距离为某个幸运数,就得到一分.(树上两点之间的距离定义为两点之间的简单路径的边数) 你的任务是,假设桑尼.露娜和斯塔每次选取时,都是从未被…
题解: 考虑这么一件事情,n个人买彩票,在不断抽走卡片的时候,他们的中奖概率是不变的 所以在这道题中,由于每个人的操作次数是确定的,所以选每k个点的概率是相同的(因为如果我们逐一考虑每一次操作这个问题就很复杂了) 显然的是我们可以通过点分治计算出距离为k的点的数目ans(好像可以用长链剖分优化到O(n)) 显然取到某k个点的概率是C(n,k) 其中有C(n-2,k-2)个k个点的状态包含了当前这个状态 显然点对之间是互相不影响的,所以我们计算每个点对贡献的概率 所以一个人一种距离的答案就是ans…
传送门 考虑每一对幸运点对的贡献,假设有 \(v\) 对 一共可以选择 \(x\) 个点,总共 \(n\) 个点 那么答案就是 \[v\times\frac{A_{n-2}^{x-2}x(x-1)}{A_{n}^{x}}=\frac{v\times x(x-1)}{n(n-1)}\] 统计点对个数就好了 Q: 一道点分治入门题目为什么要写长链剖分 A: 因为太久没有写过了有点忘了... # include <bits/stdc++.h> using namespace std; typedef…