THUPC2023(初赛)
大富翁
注意到每个支配的点对恰被计算一次,且同一个人的可以看作"给自己钱"
从式子的角度,记先手所选的集合为\(S\),则答案即
按从小到大排序,先手即取所有下标为奇数的项,时间复杂度为\(O(n\log n)\)
拧螺丝
将过程逆序,维护状态集合\(S\),每轮操作即——
- 将\(S\)中每个数减去非负整数,要求这些非负整数的和不超过\(k\)
- 在\(S\)中加入\(\max_{x\in S}x\)
初始\(S=\{n\}\),最终要求\(\forall x\in S,x=0\)
显然第一步应该尽量平均的减,进而归纳证明\(S\)中的极差\(\le 1\)
此时,\(S\)可以用三元组\((x,y,z)\)描述,即由\(x\)个\(z\)和\(y\)个\(z-1\)构成,则每轮转移为
第一类转移可以快速实现至\(x\le k\),第二类转移次数为\(O(n)\)(\(z\)严格减小)
需要使用高精度,时间复杂度为\(O(\frac{n^{2}}{\omega})\)(其中\(\omega\)为压位)
快速最小公倍数变换
对于素因子\(p\),预处理出\(v_{p}(r_{i})\)的最大值\(\alpha_{p}\)和次大值\(\beta_{p}\),并分类讨论:
-
若\(\alpha_{p}=\beta_{p}\),则操作后\(v_{p}\)的最大值为\(\max\{v_{p}(r_{i}+r_{j}),\alpha_{p}\}\)
-
若\(\alpha_{p}>\beta_{p}\),则操作后\(v_{p}\)的最大值为\(\begin{cases}\beta_{p}&v_{p}(r_{i})=\alpha_{p}\or v_{p}(r_{j})=\alpha_{p}\\\max\{v_{p}(r_{i}+r_{j}),\alpha_{p}\}&otherwise.\end{cases}\)
关于前者,也即\(\max\{v_{p}(r_{i}+r_{j}),\alpha_{p}\}+(\beta_{p}-\alpha_{p})\),可以看作选\(v_{p}(r_{i})=\alpha_{p}\)有系数\(p^{\beta_{p}-\alpha_{p}}\)
综上,将每个\(r_{i}\)带系数卷积即可,时间复杂度为\(O((n+R)\log R)\)(其中\(R=\max r_{i}\))
种苹果
参考这里
速战速决
结论:若先手有两张点数相同的牌,则答案为\(n\)
时刻保证先手手中有与栈底相同的牌,第一轮即放其中一张
之后每一轮,若与后手下一张牌点数相同的另一张牌不在后手手中,则放与栈底相同的牌
否则,显然先手的手牌数\(\ge\) 后手的手牌数 \(>1\)(后手有两张相同),放其他任意一张即可
若不为此情况,当\(n=1\)时无解,否则放\(\{a_{n},a_{[1,n)},a_{1},a_{1}\}\)即可
时间复杂度为\(O(n)\)
公平合作
记\(A=\max_{i=1}^{n}a_{i}\),并称答案概率的情况为"先手获胜"
问题分为两步:
-
求出当先手结果为\(s\)时获胜的概率,记为\(g_{s}\)(其中\(s\in (L-A,L]\))
定义\(f_{k}\)当前先后手结果分别为\(s,k\)时先手获胜的概率,则\(f_{k}=\begin{cases}1&k>L\\0&s<k\le L\\\frac{1}{n}\sum_{i=1}^{n}f_{k+a_{i}}&k\le s\end{cases}\)
此时\(g_{s}=f_{0}\),将序列翻转,即求\(x^{L}\mod (x^{A}-\frac{1}{n}\sum_{i=1}^{n}x^{A-a_{i}})\),可以类似快速幂实现
在此基础上,即得到\(f_{0}=\sum_{i=L-A+1}^{L}x_{i}f_{i}+C\),顺序枚举\(s\)并对该式递推即可
-
求出答案
定义\(f_{k}\)表示当先手结果为\(k\)时获胜的概率,则\(f_{k}=\begin{cases}0&k>L\\\max(g_{k},\frac{1}{n}\sum_{i=1}^{n}f_{k+a_{i}})&L-A<k\le L\\\frac{1}{n}\sum_{i=1}^{n}f_{k+a_{i}}&k\le L-A\end{cases}\)
最终答案即\(f_{0}\),暴力求出\(k>L-A\)的\(f_{k}\)后,类似前者计算即可
时间复杂度为\(O(n+A^{2}\log L)\)
喵了个喵 II
记\(x_{i,j}\)为\(i\)在\(a\)序列中第\(j\)次出现的位置(其中\(j\in [1,4]\))
设子序列所选位置构成集合\(S\subseteq [1,4n]\),则有以下结论——
结论:若有解,则存在一组解\(S\),满足\(\forall i\in [1,4n],|S\cap [1,i]|\ge \lceil\frac{i}{2}\rceil\)
选择一组解\(S\),并最大化\(S\)中最小的不满足上述条件的\(i\)(若不存在即得证)
根据\(i\)的最小性,有\(2\not\mid i\)且\(|S\cap [1,i)|=\frac{i-1}{2}\),即\([1,i)\)这个前缀被独立的划分
此时,不妨将\(S\cap [i,n]\)取反使\(i\)满足条件,即与最大化矛盾
推论:任取这样的一组解\(S\),则\(\forall i\in [1,n],x_{i,1}\in S\)且\(x_{i,4}\not\in S\)
以前者为例,若\(x_{i,1}\not\in S\),由于\(|S\cap [1,x_{i,1}]|\ge \lceil\frac{x_{i,1}}{2}\rceil\),其必然与\(S\cap [1,x_{i,1})\)内匹配,矛盾
记\(P_{i}=[x_{i,2}\in S]\),仅需保证任意\(i\ne j\)满足\(\begin{cases}[x_{i,1}<x_{j,1}]=[x_{i,P_{i}+2}<x_{j,P_{j}+2}]\\ [x_{i,1}<x_{j,3-P_{j}}]=[x_{i,P_{i}+2}<x_{j,4}]\\ [x_{i,3-P_{i}}<x_{j,1}]=[x_{i,4}<x_{j,P_{j}+2}]\\ [x_{i,3-P_{i}}<x_{j,3-P_{j}}]=[x_{i,4}<x_{j,4}]\end{cases}\)
(即\(\forall p,q\in [1,2]\),两个序列中第\(p\)个\(i\)和第\(q\)个\(j\)位置关系相同)
枚举\(P_{i},P_{j}\)及限制,即对不满足的\((i,j)\)在2-sat中建边(形如\(P_{i}\rightarrow \overline{P_{j}}\)和\(P_{j}\rightarrow \overline{P_{i}}\))
用可持久化线段树优化建图,时间复杂度为\(O(n\log n)\)
背包
设性价比\(\frac{c}{v}\)最高的物品为\(i\),则其余物品数量总和\(\le v_{i}\)
若\(>v_{i}\),任意排列后求前缀和,总存在一个区间\(\mid v_{i}\),则替换为\(i\)一定不劣
同时,由于\(V\ge (\max v_{i})^{2}\),因此仅关心于这些物品模\(v_{i}\)的同余最短路(每次取模额外减去\(c_{i}\))
直接计算即可,时间复杂度为\(O(n \max v_{i}+q)\)
乱西星上的空战
咕咕咕
欺诈游戏
考虑纳什均衡,显然任意两个策略无单调性,因此对方所有决策期望结果相同
-
对于走私者,设其选\(i\)的概率为\(P_{i}\),则\(\forall j\in [0,n],\frac{j}{2}\sum_{i=0}^{j-1}P_{j}+\sum_{i=j+1}^{n}i\cdot P_{i}\)相同
考虑\(j\)和\(j-1\)时的两式,即\(j\cdot P_{j}=\frac{j}{2}P_{j-1}+\frac{1}{2}\sum_{i=0}^{j-2}P_{i}\),任取\(P_{0}\)递推后约至\(\sum_{i=0}^{n}P_{i}=1\)即可
-
对于检查官,设其选\(i\)的概率为\(P_{i}\),则\(\forall j\in [0,n],j\sum_{i=0}^{j-1}P_{i}+\frac{1}{2}\sum_{i=j+1}^{n}i\cdot P_{i}\)相同
类似的,可得\(\frac{j}{2}\cdot P_{j}=j\cdot P_{j-1}+\sum_{i=0}^{j-2}P_{i}\),同理计算即可
时间复杂度为\(O(n)\)
众数
显然可以贪心,设后缀最大值依次为\(b_{1}(=n),b_{2},...,b_{k}\),则答案即\(\sum_{i=1}^{k}i\sum_{j=1}^{n}[1,a_{j}]\cap (a_{b_{i-1}},a_{b_{i}}]\)
简单计算即可,时间复杂度为\(O(n+\max a_{i})\)
最后的活动
记\(f_{s}\)为剩余分数为\(s\)时的答案,考虑如何求——
定义\(g_{i,S}\)表示前\(i\)层分数为\(S\)时的答案,转移即
注意到\(S\)仅有\(2^{n}\)种,直接爆搜即可
另外,可能会转移到\(f_{s}\)自身,可以二分\(f_{s}\)并判定
时间复杂度为\(O(m2^{n}\log \frac{1}{\epsilon})\)