博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

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

  只有满足这个条件, 机器人才能从前面那条副对角线, 通过他的主对角线走到当前点的主对角线上

  然后就变成了导弹拦截系统的问题, 贪心的取最小的一个恰好能清掉自己的机器人, 让他把自己清掉

  如果找不到, 那么肯定得多加一条路径

posted @ 2021-11-26 23:14  gllonkxc  阅读(33)  评论(0编辑  收藏  举报