做题记录

$5.22:$

  $AGC014E:$ 每次操作会把点集分为两部分,因此最后一次操作需满足两个点之间两种边都直接相连。所以倒过来考虑,一开始每个点为单独集合,每次把两个有两种边直接相连的集合合并,启发式合并信息。最后判断是否为一个集合。

$5.25:$

  $CF773D:$ 每条边减去最小值,观察可知一定包含权值为$0$的边,且根到$0$边的上上条边是单调递减的链,很好证明。然后令每个点的初始距离为与其相邻的边中最小权值$*2$,跑多源最短路。

  $CF794D:$ 如果两个点相邻的点集相同,那么两个点的$leb$值可以相同。按$leb$值相同缩点后,判断是否为链。

$5.26:$

  $ARC073F:$ 发现第$i$次操作结束后,必有一个棋子在$x[i]$,所以可以只记录另一个棋子的位置,这样就可以$n^{2}dp$。然后用线段树优化。

  $ARC073E:$ 考虑全部数的最大最小值,如果不在一个集合,只要让每组贪心选择。如果在相同集合,则只要最小化另一个集合的$max-min$,考虑先令每组$x_{i}<y_{i}$,然后按$x_{i}$排序,可以发现另一个集合在某个位置$i$选择了$x$的话,那么所有大于$i$的位置都选$x$不会更劣(最小值不会减小,最大值可能减小),所以只要让后面连续一段选$x$即可。

$5.27:$

  $ARC066D:$ 直接求$(u,v)$比较难,所以我们考虑求不重复的$(a,b)$对数。对于一对$(a,b)$,如果我们把两个数的某一位调换,可以发现异或和跟和是不变的,所以我们就要保证$a$的每一位都比$b$的大。然后$a+b<=n$的话$a$ $xor$ $b<=n$一定成立,同时很容易证明这样不会有重复。所以直接数位$dp$,或者考虑最低位是几的分治。

posted @ 2017-05-25 17:00  Awner  阅读(153)  评论(0编辑  收藏  举报