目录

2020/07/11——2020/07/17周报

团队训练

2020.7.12 2020牛客暑假多校训练营(第一场) prob:4/7/10 rank:56/1115

2020.7.13 2020牛客暑假多校训练营(第二场) prob:4/9/11 rank:162/1158

林星涵

专题

比赛

2020.07.11 AIsing Programming Contest 2020 prob:4/5/6 rank:590

题目

陶吟翔

专题

LCA问题

比赛

2020.07.11 AIsing Programming Contest 2020 prob:4/5/6 rank:933

题目

郭衍培

专题

矩阵树定理

比赛

2020.07.11 AIsing Programming Contest 2020 prob:4/5/6 rank:826

题目

本周推荐

林星涵:

题目链接

题目大意:给一个 $N \le 200000$ 位的二进制数,定义 $f(x)$ 为这个数除以其二进制中 1 的个数的余数。问依次将其每位的0、1互换,得到的数需要经过几次 $f(x)$变为0.

解题方法:我们不难发现这种变的方式 1的个数只会进行正负1的变化,这样的话我们只用对两个模数进行预处理。第一次取模之后数据范围变小便可以进行暴力处理。

推荐理由:这种表面上范围很大的题目,很多时候可以考虑第一步的特殊情况进行处理,达到从第二步开始范围就缩小的效果。这种思想极其重要,运用也较为广泛(像是区间取根号)。

陶吟翔:传送门

题目大意:有一个区间$[1,n]$,现在可以进行操作把区间$[l,r]$变成$[l-1,r],[l,r-1],[l+1,r]$或$[l,r+1]$,但是一旦区间变成$[l,l]$就不能再变,现在有$m$个选择,你可以花费$c$把某一个区间$[l,r]$向$[l-1,r]$或$[l,r-1]$的操作禁止,问能不能完全避免把区间变成$[l,l]$,如果能,最小花费

数据范围:$2 \le n \le 500$,$0 \le m \le n(n-1)$,$1 \le c \le 10^6$

解题思路:可以把整个过程看作在一个$n \times n$的网格上从$(1,n)$走向对角线,我们可以断开其中某些地方使得不能从起点走到对角线上,这显然是一个最小割模型,考虑到这道题数据规模较大而图又比较规则,所以我们可以采取建对偶图的方式求解

推荐理由:这道题看似是一道区间题,但是可以通过转化将其与最小割模型建立联系,考察了做题者对模型进行转化和理解的能力,并且本题建立对偶图虽然有多种方式,但是都必须要保证从起点到终点所经过的一条路径能够组成一组割,考察了做题者对对偶图的理解。

郭衍培:

题目链接

题目大意:n行m列的方格,每行被划分为连续的若干块。在每块中选一个地方填1。设第i列有$q_i$个1,使得$\sum^n_1q_i^2$最大。求这个最大值

数据范围:$1\le m,n\le 100$

解题思路:大致的思路是区间dp。dp[i][j]表示所有完整包含在[i,j]列的块所能做出的贡献,最终答案即为dp[1][m]。首先证明,在最优策略中,对于[i,j]区间,一定存在一列k,满足所有完整包含在[i,j]列且覆盖k的块都在k填了1。因为我们显然希望1尽量地聚集,我们选择1最多的一列,将其他列的1移到这一列,一定使结果变优。所以$dp[i][j]=max\{dp[i][k-1]+dp[k+1][j]+num[i][j][k]^2\}$

推荐理由:这道题其实不难想要采用区间dp,但在dp过程中,状态和转移都不太好想,尤其是转移。转移需要一个结论,而这个结论我一开始没有想到。事实上,这刚看到题解的时候(题解无证明),我甚至还感到惊讶。但仔细一想,其实并不是很难,这需要对这个模型有一定的理解,发现取到最优情况时的一个性质。