做题记录 26.2.26
\(\textcolor{purple}\odot\) P15375 Soso 的模法矩阵 / modmat
考虑变进制,第 \(i\) 位满 \(b_i\) 进 \(1\),每次乘以 \(a_i\),容易在此过程中统计答案
时间复杂度 \(O(nm)\)
\(\textcolor{purple}\odot\) P15381 雨き声残響 / ame
令 \(f_{i,0}\) 表示从 \((1,1)\) 到 \((i,1)\) 并填满 \((1\sim i,1\sim 3)\) 的方案数,\(f_{i,1}\) 表示从 \((1,1)\) 到 \((i,3)\) 并填满 \((1\sim i,1\sim 3)\) 的方案数,易得 \(f_{0,0}=f_{1,1}=1\),\(f_{i,0/1}=2^{i-2}\;(i>1)\)
令 \(g_i\) 表示 \(3\times i\) 的矩阵从左上角进入左下角出去的方案数,易得 \(g_i=[2\nmid i]2^{\frac{i-1}2}\)
对于一组询问 \((n,x,y)\),特判 \(n<3\) 的情况
若 \(x=2\),则枚举 \(0\le l\le y-1\) 表示先用 \(f\) 填充 \(1\sim l,1\sim 3\),走到 \((l,\ast)\),然后走到 \((y,\ast)\),用 \(g\) 填充 \((y+1\sim n,3)\) 部分,再绕回来填充剩余部分,方案数为 \(g_{n-y}\sum_{l=0}^{y-1} (f_{l,0}+f_{l,1})\)
若 \(x=1\) 或 \(x=3\),特判 \(y=n\),显然答案为 \(f_{n,[x=1]}\),否则答案为 \(f_{y-1,[x=1]}g_{n-y1}+[y>1]g_{n-y-1}\sum_{l=0}^{y-2} f_{l,[x=1]}\)
容易做到 \(O(n+T)\)
\(\textcolor{purple}\odot\) P15391 最小生成树 / sosomst
每个集合建立一棵线段树,每个子树维护区间内 \(a\) 的最大值,\(b\) 的最大值,最优答案,空子树用 \(\text{ST}\) 表维护区间 \(b\) 最大值
时间复杂度 \(O(n\log n)\)
\(\textcolor{purple}\odot\) P11731 [集训队互测 2015] 最大异或和
转化为维护差分数组,显然总修改次数为 \(O(n+q)\) 的,每个修改存在于一个区间,前缀线性基即可
时间复杂度 \(O(\frac{(n+q)nm}\omega)\)
\(\textcolor{black}\odot\) AT_agc072_a [AGC072A] Rhythm Game
可以转化为有 \(n\) 个区间 \([t_i-x_i,t_i+x_i+d]\),要从中选出长度为 \(2x_i\) 的子区间,要求所有选出的子区间不交
若没有左端点的限制,显然按右端点从小到大排序后贪心选择最优
先按此方式排序,加入左端点限制后可能轮到一个任务时还没有开始
定理:若 \(i<j\) 则任务 \(j\) 结束后任务 \(i\) 一定已经开始
证明:\(t_j-x_j+2x_j=t_j+x_j\ge t_i+x_i\ge t_i-x_i\)
因此最优方案为将排序后的序列划分为若干段,每段先执行最后一个,然后依次执行前面的
令 \(f_i\) 表示 \([1,i]\) 划分为若干段结束时间的最小值,\(f_0=0\),有解当且仅当 \(f_n\) 有限
要从 \(f_j\) 转移到 \(f_i\),令 \(T=\max (f_j,t_i-x_i)+2x_i\) 表示任务 \(i\) 的结束时间,则转移为
要求为
直接实现为 \(O(n^3)\) 的,枚举 \(j\) 贡献到 \(i\) 容易优化到 \(O(n^2)\)

浙公网安备 33010602011771号