11.11练习赛

11.11练习赛

三道Atcoder原题,一道OJ原题

T1 ABC:贪心

统计前缀A个数。做完了。十分钟打完,调了3分钟。

T2 Complete Compress :大法师+贪心

做了个错解跑路,拿了35.

正解:

由于\(n\)非常小,只有2000,我们便可以放心枚举根节点。

首先发现一个非常显然的性质:如果每个点到根节点的距离之和为奇数,则不可能把所有点移动到同一个地方。

然后考虑如何把所有点都移动到根节点上:

  • 首先思考这个东西能不能分治——很明显是可以的,把所有能合在一起的点尽量先合在一个点上。,
  • 再考虑这移动的顺序:首先肯定使用最深的点来与其他较浅的点进行配对,让其它较浅的点先跑到根节点。
  • 此时根据原最深点的深度可以分两种情况:1.使用最深点转移其他所有点后最深点仍未到达根节点。2.最深点无法转移完其它点。
  • 对于第一种,我们直接认为这颗子树的所有棋子都集中在子树的根上,并在最深点转移完的位置上有一个棋子。
  • 对于第二种,我们还可以使用剩余的点互相进行转移。由于距离和不是奇数就是偶数,可以认为最后最多有一个点与根节点的距离为1,且此时距离和为奇数。
  • 由于我们用的是分治,确保了子树中合并了的棋子集中在根节点旁边,所以上面的思路是正确的。

T3 邮票拉力赛 : 整体二分/克鲁斯卡尔重构树

写的整体二分,不小心写成了\(n^2log(n)\)的复杂度,调了一个小时。

解决方法:主要问题在于并查集。如果并查集每个区间都重置会导致复杂度上升\(n\),但是我们又很懒,不想写可回退的并查集。此时我们注意到每层二分区间(可参考线段树的图像化)都是连续的,所以我们可以给每层区间都开一个并查集,然后根据当前区间的\(mid\)依次合并边。

不会克鲁斯卡尔重构树。

T4 Median Pyramid Hard : 二分答案

30分的暴力跑路。当时没看出来性质。

性质非常奇怪,但是很神奇。

[无法描述.gif]

posted @ 2020-11-11 18:47  国土战略局特工  阅读(79)  评论(0)    收藏  举报