2024.11做题记录
CF1178G The Awesomest Vertex
题目的式子可以拍到序列上做。
把tag加上,再把绝对值拆开,式子就变成了 \(\max\left\{ (a_v + tag) \times b_v,-(a_v + tag) \times b_v \right \}\)。
中间的这两个本质上是直线,可以用李超线段树维护,区间加用分块。
洛谷P3349 [ZJOI2016] 小星星
设 \(p_i\) 表示树上节点 \(i\) 对应的图上节点编号。
考虑 \(O(2^n)\) 枚举集合 \(S\) 表示 \(p_i\) 的取值,算出一个集合方案数后容斥。
单个方案数dp一下就行了。
洛谷P5068 [Ynoi2015] 我回来了
注意到期望其实是假的,求的是一共亵渎了几次。
一个 \(d\) 的答案其实就是把随从分成若干个大小为 \(d\) 的块,找到一个 \(i\) 使得第 \(i\) 个块没有随从。
因为 \(d\) 的范围不大,可以记录每个 \(d\) 的答案,而 \(\sum\limits_{i=1}^n \frac{n}{d}\) 是 \(n \log n\) 级别的,且 \(d\) 的答案肯定递增,所以更新答案时可以暴力询问。
用一个线段树套vector记录一下区间就好了。
洛谷P4254 [JSOI2008] Blue Mary 开公司
比李超线段树板子还板子的题。
注意插入的直线是 \(Px + (S - P)\)。
CF817F MEX Queries
odt依题意模拟即可。
at_dp_j Sushi
设 \(dp_{i,j,k}\) 为有 \(i\) 个 \(1\),\(j\) 个 \(2\),\(k\) 个 \(3\),\(n-i-j-k\) 个 \(0\) 的期望。
洛谷P3545 [POI2012] HUR-Warehouse Store
反悔贪心。
中午时,如果有足够的商品就直接给。
没有的话,看前面给的商品有没有够的,够的话把前面的撤了拿回来。
agc018b [AGC018B] Sports Festival
考虑全选,然后每次把对当前答案贡献最大的删了。
这是对的。
洛谷P5999 [CEOI2016] kangaroo
连续段dp。
\(dp_{i,j}\) 表示,插入了 \(1\) 到 \(i\),分成 \(j\) 段的方案数。
最终答案为 \(dp_{n,1}\)。
当当前的 \(i\) 等于 \(s\) 或 \(t\) 时,只能插到最边边。插入时有插到段里和新建一个段两种方案,也就是
\(dp_{i,j}=dp_{i-1,j-1}+dp_{i-1,j}\)。
否则,插入时有合并旁边两个段和新建一个段两种方案,就是 \(dp_{i,j}=dp_{i-1,j+1} \times j + dp_{i-1,j-1} \times \left ( j - \left [i > s \right ] - \left [ i > t \right ] \right )\)。
at_dp_m Candies
设 \(dp_{i,j}\) 表示前 \(i\) 个人取了 \(j\) 个糖果的方案数,最终答案即为 \(dp_{n,k}\)。
考虑转移:
时间复杂度是 \(O(nk^2)\) 的,肯定过不去,用前缀和优化一下就好了。
洛谷P11289 【MX-S6-T1】「KDOI-11」打印
用一颗线段树维护 \(m\) 个打印机的结束时间,然后线段树二分就行。
洛谷P7242 [COCI2019-2020#4] Klasika
离线建树,把树拍成dfn序。
就变成了单点插入,区间查异或最大。
树状数组套01trie随便写就过了。
洛谷P9236 [蓝桥杯 2023 省 A] 异或和之和
对每一个二进制位计算它对答案的贡献。
贡献就是每一个区间和模 \(2\) 的和乘上位。