目录

2020/08/01——2020/08/07周报

团队训练

2020.8.1 2020牛客暑假多校训练营(第七场) prob:5/5/10 rank:46/1090

2020.8.3 2020牛客暑假多校训练营(第八场) prob:5/5/11 rank:16/684

2020.8.6 2020-2021 BUAA ICPC Team Supplementary Training 02 pro: 3/3/11

林星涵

专题

本周无

比赛

2020.8.2 Atcoder Beginner Contest 174 prob:6/6/6 rank:433

题目

本周无

陶吟翔

专题

本周无

比赛

2020.8.2 Atcoder Beginner Contest 174 prob:6/6/6 rank:281

题目

本周无

郭衍培

专题

本周无

比赛

2020.8.2 Atcoder Beginner Contest 174 prob:6/6/6 rank:103

题目

本周无

本周推荐

林星涵:

题目大意: 在树上,支持以下三种操作:

1、选定一个点 $i$,别的点 $j$ 的价值都加上 $w[i]-dis(i,j)$。

2、选定一个点,它的价值值为 $min(价值,0)$。

3、询问某点的价值。

数据范围:$1 \le n(点数)、m(询问数) \le 5e4$

解题思路:经过分析后我们可以发现,一次$1$操作,对于任何一个点来说,权值的变化都是 $w-dep[x]-dep[p]+2*dep[k]$ (k是对于任何一个点来说从选定点 $x$ 到根的路径上最近的祖先).对于 $w-dep[x]$ 来说,所有点都是一样的,用一个全局的 $sum$ 来记录就可以。对于 $dep[p]$ 这部分同理记录次数,$2*dep[k]$ 这部分则需要利用树链剖分每次从 $x$ 到根每个点都$+1$,最后查询点时查询到根路径上的和来得到,对于二操作,我们单开一个新数组来记录操作对原值的影响就可以了。

推荐理由:树链剖分一类比较经典的有关深度的操作。

陶吟翔:

题目大意:有$n$个球员和$m$个粉丝,每个粉丝有可能是多个球员的粉丝,如果一个粉丝是某个球员$i$的粉丝或者他粉的球员的粉丝中有球员$i$的粉丝,那么他就回去看球员$i$的比赛,现在要选择若干个球员使得所有粉丝都来看比赛,问最少选几个,并且有$q$次询问,每次更改一个粉丝和球员的关系

数据范围:$1 \le n,m,q \le 2 \times 10^5$,粉丝和球员的粉丝关系$\le 5 \times 10^5$

解题思路:单独一个状态的问题可以通过并查集解决,然后题目还有$q$次询问,是比较经典的动态图连通块个数判断,只需要把所有的边按照出现时间挂在时间线段树上,然后从根往叶子走,经过的边加入即可,为了可以回溯,需要用可以撤销的并查集,并查集部分需要像一般的按秩合并并查集一样维护点个数,还需要维护粉丝的个数来方便答案的统计。对于边出现在哪些区间上,我们可以用map来记录每一个粉丝和球员的对应关系上一次从哪里开始,因为修改每次只会影响一对关系,所以每次只会有一对关系出现或消失,最后我们再把所有的关系遍历然后插入到线段树即可,由于题目保证了所有关系的和不会超过$5 \times 10^5$,修改不会超过$2 \times 10^5$,所以总体的复杂度不会有问题

推荐理由:题目本身较为复杂,做题者需要进行模型的对应和转换将其看出其本质的动态图连通性问题,考察了做题者的模型观察能力,除此之外,时间线段树+可撤销并查集/动态树是处理动态图连通性的基本方法,本题考查这种方法也是考察了做题者的知识广度

郭衍培:

题目大意:给定d。求满足以下要求的序列a的个数:序列恒正且递增,前缀异或和递增,最大项小于等于d。

数据范围:$1\le d\le 10^9$

解题思路:设$h(x)$为二进制下x的最高位1的位数。设前i项异或和为$b_i$。由于a序列递增,显然有$h(a_i)\ge h(b_{i-1})$。若$h(a_i)=h(b_{i-1})$,则$h(b_i)<h(b_{i-1})$,不成立。因此$h(a_i)>h(b_{i-1}),h(a_i)=h(b_i)>h(b_{i-1})$。因此有$h(a_i)>h(a_{i-1})$。显然,这是充要条件。设c[k]为$h(x)=k,x\le d$的个数。然后dp一下即可

推荐理由:初看此题感觉不好想,但发现结论后就不难了