CTT 2018

link

Day 1

A \(\color{red}\bigstar\)

计算几何,还不会,有空学一下。

B \(\color{green}\bigstar\)

简单题,只需要看 \(\frac{\prod b_i}{\prod d_i^2}\) 即可。

那么对于一个确定的 \(b_i\),对这个东西的贡献是对称的。

也就是 \((b_i,x)\)\((b_i,b_i/x)\) 这两个方案互为倒数。

也就是只要算出等于一的方案,加上后除以二就行。

算出相等的,相当于每一个质因数都要相同,跑个暴力 dp 就行。

C \(\color{green}\bigstar\)

点分治方案数,考虑给点标号,标的号小的在点分树上深度小。

那么两个标号相同的中间必须有一个标号小的点。

那么一个子树填完后,给外面还有贡献的有一些点,两个子树合并的时候,相当于当前点去作为一个前缀的父亲(点分树上),然后对于剩下的点,两个子树合并需要满足标号不交,那么就是一个简单的组合数。

\[f_{u,i+j}=f_{u,i}s_{v,j}\binom{i-1+j}{j} \]

\(s\)\(f\) 的后缀和。

也可以理解为是两个点分树合并,本质就是两条链进行合并,第二维记录的是 \(u\) 所在链的长度。

Day 2

A \(\color{Gold}\bigstar\)

首先考虑没有修改,只能离线下来长剖做,然后发现有修改很难做了。

强制离线,每 \(\sqrt{Q}\) 个操作分个块,然后过一个块重构,然后块内修改暴力即可,复杂度 \(O(n\sqrt{Q})\)

回顾了一下长剖写法,这种需要算前缀和的长剖的常见套路是记录后缀和。

代码写完就过了,很爽。

B \(\color{Gold}\bigstar\)

类似与同余最短路,因为 \(1\times 1\) 的方格是 \(4S-C\) 最小的,而且一定有的放,因此考虑对于每个 \(4S-C\) 计算凑出这个的最小的 \(S\)

因为放置的矩形的宽 \(a\le \sqrt{S}\),因此枚举 \(a\),然后接下来先放置一个 \(a\times a\) 的,然后后面可以接 \(1\times a\),直接完全背包一下就行。

C \(\color{green}\bigstar\)

欧拉数板子题,懒了。

Day 3

A

skip。

B \(\color{red}\bigstar\)

后缀平衡树,有时间学。

C \(\color{blue}\bigstar\)

\(nk\) 不大,可以暴力 dp,关键是如何计算区间的答案。

扫描线一下,注意到区间所需时间就是每个点到根路径的并的大小,因此对于一个点,如果它子树里有一个在区间中的点,那么对答案就有贡献,把贡献放在最右边的那个点上。

考虑加入一个点树上那些点会属于这个,相当于就是它到根的路径,因此 LCT Access 一下,维护一下颜色就做完了。

复杂度 \(O(nk\log n)\),遥遥领先,也不知道别人写的啥。

Day 4

A \(\color{Gold}\bigstar\)

构造好题。

用 SPFA 的序列去模拟 dij,注意到一个点如果最后一次出现一定是它已经成为了最短路,把这些位置标出来。

而在两个最优点中间这一段东西,就是前面一个最优点以及它前面那些普通点更新的东西,注意到最优点一定是由前面的最优点来更新的,所以可以直接把最优点拉成一条链。

中间这一段东西,我也直接强制让前面的那个最优点来更新就好了,只需要记录一个当前最短路,减一就行。

还需要保证前面的普通点当前无法更新其他点,那么说明其连出去的点权需要 \(\ge 2^{60}-dis_x\),记录一下就行,在后面连的时候注意一下。

B \(\color{blue}\bigstar\)

题解也没有,代码也没有,以下内容口胡。

首先发现,第一问的答案是最大匹配。

考虑下界,最大匹配肯定是一种合法方案,因为只要把孤立点挂上去就行。

上界的话,每个连通块至少需要包含左右的点,因此不可能有更大的方案。

\(k\) 的限制的话,连通块个数最多说明边数最少,一个不满足连通块数最多的方案可以断边调整成最多的。

可以发现这样每个连通块都是一个菊花图,不过没什么用。

第二问已知总边数,直接每个点流量 \([1,k]\) 的上下界网络流就行了。

还没学,先咕。

C

skip。

posted @ 2023-09-21 11:42  houzhiyuan  阅读(45)  评论(0编辑  收藏  举报