Codeforces Round #756 (Div. 3)
solved: 4/8
D:
根据$dis[p[i]]\leq dis[p[i+1]]$和$dis[fa[x]]\leq dis[x]$
构造$dis[p[i]]=i$, 然后判断一下是否满足上面的式子即可
E1:
对每个点维护, 到最近的friend的距离, 到根节点的距离, 然后如果firend比I更快到的话, 那么这个点是不能走的
然后看一下, 有没有一条通往叶子的路径即可
E2:
跟上一题一样, 不一样的是, 对于一条路径上的点, 我们只需要封掉最上面的那个点, 对于一个点, 我们只需要离他最近的那个friend来封掉他
那么用ans[x]表示让x没路径需要多少个friend, $ans[x]=\sum ans[son[x]]$
对于封掉的点, 答案为1
如果上一题有路径, 那么就是-1, 否则就看一下ans[1]是多少
F:
双指针板子
补题: 4/4
A:
答案只有0 1 2, 原本就是偶数是0, 开头是偶数是1, 然后判断一下数字中有没有偶数, 有就是2, 没有就是-1
B:
答案是$min{a, b, \frac{a+b}{4}}$
假设a<b, 那么我们可以这么分组n(2, 2)+m(1, 3)
可以发现怎么分组是没有影响的, 实际上就是+1-1的区别a多派1人, b少派一人
所以理想中的情况肯定可以分出$\frac{a+b}{4}$
但是组别又受限于a, 因为最多a(1, 3)
C:
观察游戏规则可以发现, 最大的肯定在头或者尾
所以反着来, 把除了最大的一段翻转一下, 那一段肯定是从头到尾取的
G:
我们沿着副对角线从左往右扫, 他们所在的主对角线是j-i, 从上到下是递减的
考虑两条副对角线的关系, 一个点(x, y)能被之前的机器人(a, b)清掉, 当且仅当y-x<=b-a
只有满足这个条件, 机器人才能从前面那条副对角线, 通过他的主对角线走到当前点的主对角线上
然后就变成了导弹拦截系统的问题, 贪心的取最小的一个恰好能清掉自己的机器人, 让他把自己清掉
如果找不到, 那么肯定得多加一条路径