Loading

2024.1.14 周总结

就把题解放上来吧。全在联考,感觉总结不出来啥厉害的东西。

2024.1.8

三道抽象题,暂时搁置。

2024.1.9

T1 - forthe

记录 \(l_x\) 表示 \(x\) 上一次获胜时间。若 \(i\) 时刻产生一场决斗则连边 \(l_x \to i,l_y \to i\),边的颜色分别为 \(x,y\)。若 \(l_x,l_y\) 中存在为 \(0\) 的则忽略。然后更新 \(l_x\)\(x\)\(l_y\)\(0\)

最后枚举每个 \(x\),若 \(l_x\) 不为 \(0\),则连边 \(l_x \to m+1\),颜色为 \(x\)

不难发现形成了一个树结构,定义 \(x \to y\) 的边权为 \(y-x\),则第 \(i\) 块奖牌的归属应当是 \(i\) 到根路径上所有边当中,边权和最大的那种颜色对应的选手。DFS 即可。

T2 - genshin

Hanghang 非常厉害,使用了手玩法,效果拔群!

首先使用一个 L 字形路径判断掉在第一列或者最后一行的情况。接下来使用以下策略:先走到第一列底下,然后拐到第二列底下,然后走到第二列顶上,然后往左,往上,往右,然后一路往下,然后再向右。如果当前在最后一列,就省掉一路往下再往右的操作。

不难发现如果当前列没有障碍,那么走到顶上,往左往上往右一路往下再向右就会到达下一列底下,如果有障碍,那么它就会到达这一列底下,之后一直都在这一列。因此到了最后一列之后如果省掉一路往下再往右的操作,那么最后波特会停到障碍左边。

T3 - impact

\(a_{i,j} = w - c_{i,j}\),然后保留 \(a_{i,j}\) 最小生成树,\(b_{i,j}\) 最大生成树就行了,证明感觉随便玩一下,可能做过好几遍了。

2023.1.10

T1 - record

平衡树学的不好,场上没想到转化,转为求前驱后继的期望。后面就是把链造出来,然后分类讨论一下就好了。

T2 - paint

点可以分成三类,\(2w \geq d\)\(2w< d\) 但有连边的,\(2w < d\) 且没有连边的。

没有连边的就是孤立点,怎么取颜色都没关系。\(2w \geq d\) 的构成团(A 类),\(2w< d\) 的内部不连边(B 类),只连向团里面点权足够大的一部分(前缀)。

那么现在就按照类似北京集训 D1T3 的方法 DP 了,设 \(f_{i,j}\) 表示前 \(i\) 个 A 类点有 \(j\) 个白点时最多能让多少条边颜色不同(只考虑前 \(i\) 个 A 点),再记一个 \(g_{i,j}\) 表示方案数。那么我们给 A,B 类点分配一个合适的加入顺序,使得每个点被加入的时候都会向前面的 A 类点连边,而后面的 A 类点不向这个点连边。

T3 - treasure

前面推式子的部分非常平凡,后面大概看出来 \(k\) 很小有性质可以直接做。

但是感觉不如小常数 \(O(T n \log n)\)。核心科技如下:考虑一个类似秦九韶算法的东西,如果我要计算 \((\sum \limits _{i = 1}^{k} iA_i) \bmod p\) 之类,显然直接计算常数非常大。考虑倒序枚举 \(A_i\),记录 \(s_k = \sum \limits_{k \leq i \leq n} A_i\),那么 \(\sum \limits s_k\) 就是答案。后者只有加法,可以使用 if + 减法来替代取模,而乘法的取模几乎是不可避免的。

2023.1.11

这场没打,随便写点东西。

T1 - kth

傻逼题,直接做。

T2 - color

考虑树和偶环二分图的时候都可以采用间隔染色,最后需要对调黑白点。令白点为 \(-1\),黑点为 \(1\),那么树的情况就是子树绝对值和,偶环的情况推一下是一堆点到某个动点的距离和最小值。

奇环的情况就比较厉害了,注意到操作那条相同颜色的环边只会增加一对白点或者增加一对黑点。于是这条环边的操作次数是固定的。不妨看作这条环边的两侧多出了 \(x\) 个黑点 or 白点,然后跑树的做法即可。

P.S.:怎么能够证明这些操作次数是最小的呢。目前只会感性理解所有要做的操作可以通过合理的方式安排进去。

T3 - function

神秘 TC 题。

\(f(a)+C=f(2f(a) - a+1)\),迭代一手,令 \(b = 2f(a) - a+1\),那么 \(f(b) + C = f(2f(b) - b+1)\)。因此 \(2f(b) - b + 1 = 2(f(a) + C) - b + 1 = 2(f(a) + C) - (2f(a) - a + 1) + 1 = a+2C\),于是 \(f(a) + 2C = f(a+2C)\)

于是 \(a \in [0,2C)\)\(f(a)\) 的取值决定了整个函数。那么 \(f(a)\) 可以随意取值吗?答案是否定的,因为有 \(f(a) + C = f(2f(a) - a + 1)\),于是 \(a\) 的取值会影响到 \(b\) 的取值,从而影响到 \(b' = b \bmod 2C\) 的取值。

因为 \(a+b = 2f(a) - 1\)\(a+b' = 2f(a) - 2kC - 1\),于是 \([0,2C)\) 中的 \(f(a)\) 可以分为 \(C\) 组,每组内是一个奇数和一个偶数进行配对。不难发现 \(b'\)\(k\) 确定后 \(f(a)\) 的取值就固定了,从而 \(f(b)\) 的取值也固定了。

稍加计算就可以算出 \(k\)\(f(a),f(b')\) 的影响。现在考虑计算 \(a\)\(b'\) 匹配对答案的影响,若某个 \(x_i\)\(a\) 同组或者 \(x_i\)\(b\) 同组的时候可以算出贡献形如某个 \(|W_i+kC|\) 的形式,最终 \(a\)\(b'\) 匹配的代价就是所有的 \(|W_i + kC|\) 之和,此时 \(kC\) 需要尽可能接近 \(-W_i\) 的中位数,这是不难计算的。

剩下的部分带权二分图最大匹配即可。

2023.1.12

T1 - war

被 T2 迷惑了心智!!!没好好玩 T1。

看到最值考虑在笛卡尔树上 DP,设 \(f(i,j,k)\) 表示 \(i,j\) 内只能选不超过 \(k\) 的的最大收益,然后 \(O(n^3 \sum K_i)\) 过不去。

然后这里有个经典技巧:有支配性的 DP 允许 DP 出不合法的方案,只要它不优就行了。于是变成 \(f(i,j)\)

还是写出转移方程:\(f(i,j) = \sum \limits_{i \leq k \leq j} f(i,k-1) + f(k+1,j) + V\times \sum \limits_{l \in [i,k],r \in [k,j]}Q_{l,r} - C\),其中 \(V\)\(k\) 处某个物品的武力值,\(C\) 是代价。考虑枚举顺序改为先枚举 \(i,k\)\(\sum Q\) 只和 \(r\) 有关且单调递增。不妨将 \(Vx - C\) 看作一条直线,那么对于所有直线构成的图形来讲,从 \(y = +\infty\) 处往下看,碰到的第一个点构成一个下凸壳,可以使用半平面交求出。因为 \(\sum Q\) 单调递增于是拿个指针往右指就好了。

T2 - tree

\(b_i = \sum \limits_{j \leq i} a_j\)。每个节点的期望深度是好求的,根据期望的线性性我们只需要额外求出 \(E[dep(lca(u,v))]\) 即可,显然可以枚举 \(x\) 改为求 \(P(x = lca(u,v))\)

接下来考虑仙术。\(u = v\) 是平凡的,接下来不妨设 \(u<v\),则显然 \(x \leq u\)

考虑 \(x<u\) 时,\((x,u)\) 中的点可能在 \(x \to u\)\(x \to v\) 路径上,\((u,v)\) 中的点只可能在 \(x \to v\) 的路径上。

\(u \to v\) 的路径恰为 \((u,x,v)\),那么概率为 \(\frac{a_x}{b_{u-1}}\frac{a_x}{b_{v-1}}\)。接下来考虑在 \(x \to u\) 的路径上插入一个点 \(i\),概率变为 \(\frac{a_x}{b_{i-1}}\frac{a_i}{b_{u-1}}\frac{a_x}{b_{v-1}}\),整理得 \(\frac{a_x}{b_{u-1}}\frac{a_x}{b_{v-1}}\frac{a_i}{b_{i-1}}\)

于是我们发现插入点对于概率的影响可以独立出来,不难列出式子

\[P(x) =\frac{a_x}{b_{u-1}}\frac{a_x}{b_{v-1}} \prod \limits_{i = x+1}^{u-1} (\frac{2a_i+b_{i-1}}{b_{i-1}}) \prod \limits_{i = u+1}^{v-1} (\frac{a_i+b_{i-1}}{b_{i-1}}) \]

注意到后面 \(a_i + b_{i-1} = b_i\),于是后面那堆就没了,最后算出来一个只和 \(u\) 相关的式子,然后就可以递推求解了。

posted @ 2024-01-14 20:01  Meatherm  阅读(16)  评论(0)    收藏  举报