又给自己菜自闭了
AGC043C Giant Graph
\(\color{grey}{\tiny{\text{某个我很久以前就知道的套路,现在才知道来源(}}}\)
题意
给你三个简单无向图 \((V_1,E_1)\), \((V_2,E_2)\), \((V_3,E_3)\),构造一个新图 \((V,E)\),其点集 \(V\) 为:
其边集 \(E\) 为:
- 若 \(u_1,u_2\in V_1\) 且 \((u_1,u_2)\in E_1\),则对于任意 \(v\in V_2, w\in V_3\) 都有 \(((u_1,v,w),(u_2,v,w))\in E\);
- 若 \(v_1,v_2\in V_2\) 且 \((v_1,v_2)\in E_2\),则对于任意 \(u\in V_1, w\in V_3\) 都有 \(((u,v_1,w),(u,v_2,w))\in E\);
- 若 \(w_1,w_2\in V_3\) 且 \((w_1,w_2)\in E_3\),则对于任意 \(u\in V_1, v\in V_2\) 都有 \(((u,v,w_1),(u,v,w_2))\in E\)。
在这个图中,定义 \((i,j,k)\) 的点权为 \(10^{18(i+j+k)}\),求最大权独立集的权值和,对 \(998244353\) 取模。
\(|V_i|,|E_i| \leq 10^5\)。
题解
这个最大权独立集看起来没什么卵用,因为贪心从大往小选一定对,而权值一样的点是互不干涉的。
具体而言,把边定向成从小点连向大点,这就成了个 DAG。我会先选上所有没有出度的点,然后拓扑序逆序枚举,如果 \(x\) 的出度中有一个点被选了,\(x\) 就不选,否则选上。
DAG 上选一个独立集 \(S\),使得 \(S\) 外任意一点,都能走一条边到达某个 \(\in S\) 的点:看成博弈树,\(S\) 是必败。
所以游戏即为每人轮流将棋子移动一条边,我需要统计 DAG 上所有必败的点的点权和。
一个点 \((u,v,w)\) 显然是三个图上的独立游戏!于是乎我们要求的变成了:
FWT 解决。其实 SG 函数是 \(O(\sqrt m)\) 级别的,所以暴力也对。
ABC257Ex Dice Sum 2
题意
有 \(n\) 个色子,第 \(i\) 个色子有 \(6\) 面,分别为 \(a_{i,1} \sim a_{i,6}\),购买之需要花费 \(c_i\)。
你可以选择 \(k\) 个色子购买,然后把每个你买到的色子抛一次,你会获得正面朝上的点数之和的平方的收益。
问期望收益的最大值,对 \(998244353\) 取模。
\(n,k \leq 1000\), \(0\leq a_{i,j},c_i\leq 10^5\)。
题解
假设将买的色子重新标号为 \(1\sim k\),收益为:
记录 \(x_i=\dfrac{\sum a_{i,x}}6\),\(y_i=\dfrac{\sum a_{i,x}^2}{6}-c_i-x_i^2\),则我们要最大化 \((\sum x_i)^2+(\sum y_i)\)。
我们把 \(\dbinom {n}{k}\) 种决策画成二维平面上若干个 \(\left(\sum x,\sum y\right)\) 的点。首先对于固定的 \(y\),\(x\) 只可能取最小或者最大的一个;而对于固定的 \(x\),\(y\) 越大越好。所以答案存在于上凸包上,我们考虑找出凸包上的所有点。
枚举所有实数斜率 \(k\) 去切这个凸包,实际意义则是找出 \(kx+y\) 最大的点,此时将每个色子按照 \(kx_i+y_i\) 排序,取最大 \(k\) 个相加即可。而在这个过程中色子的大小关系最多改变 \(O(n^2)\) 次,于是同时维护前 \(k\) 大就做到了 \(O(n^2\log n)\)。