省选题乱做
好久没更博了。
2020 省选联考
「联合省选 2020 A | B」冰火战士]
找单调增、降的最小值这样的函数的最大值。
先二分一次找到临界点,然后最优答案一定存在于左右两边,然后再二分一次找到最右侧能取到的位置。
用树状数组常数小 \(O(n \log n)\)
「联合省选 2020 A」组合数问题
下降幂和组合数结合:
如果把 \(f\) 转为下降幂多项式 \(b\),交换求和顺序后,第二层可以化为一个二项式定理的形式。
「联合省选 2020 A」魔法商店
论文题。
保序回归问题:给定数组 \(w, y, p\),同时给一个 DAG,赋值 \(f\),要求赋值后任何一条 DAG 上路径 \(f\) 递增,最小化 \(\sum_i w_i|f_i-y_i|^p\)
做法:整体二分,转化为只选 \(mid, mid+\epsilon\) 的问题(确保这之中不会有最优解),这个是最大权闭合图模型。选的这个东西类似于求导。
此题:把可以代替 \(A\) 里的一个元素 \(u\) 的点 \(v\),连 \((u, v)\) 的边。\(B\) 类似。
「联合省选 2020 B」幸运数字
差分
「联合省选 2020 A | B」信号传递
卡空间的屑状压DP
「联合省选 2020 A」树
按位考虑每个点对祖先的贡献。
对于第 \(k\) 位,是一个 \(2^{k+1}\) 的循环节(可以理解为模这个意义下加法),并且每 \(2^{k}\) 个切换一个状态。那么切换状态的深度满足模 \(2^k\) 同余,用一个桶记录一下差分的地方,用天天爱跑步的方法把子树的贡献拿出来即可。
「联合省选 2020 A」作业题
枚举 \(gcd\),算出对应的和。考虑算是 \(k\) 的倍数的生成树边权和,然后简单容斥。
经典用矩阵树定理,把值搞成 \(1 + wx\) 的形式,最后一次项就是答案。
「联合省选 2020 B」卡牌游戏
若干前缀和最大值
「联合省选 2020 B」消息传递
简单点分治。\(O(n \log n)\)
「联合省选 2020 B」丁香之路
考虑走过的边形成的图,起点和终点度数是奇数,剩下都是偶数,给起点终点手动加一个度后,问题变为了再给这个图加一些边使得所有点都是偶数,并且联通。
两两奇数度点连边(注意,这之中的点也都加入联通块,可以理解为这之间都连 \(1\) 的边),这样一定花费最小,如果不相邻就会出现交叉,显然不优。
然后解决联通问题,考虑联通整个图最小代价是最小生成树,还得保持偶度数,答案贡献加 \(2\times\) 最小生成树。
复杂度 \(O(m + n^2\log n)\)
2019 十二省联考
「十二省联考 2019」异或粽子
前缀和后即两两异或前 \(k\) 大值。先转成有序,然后人为固定一个顺序。这里就 \(t_{u,k}\) 表示和 \(u\) 异或第 \(k\) 大的,一开始把 \(t_{i,1}\) 放进去,之后每次拿出 \(t_{u,k}\) 就插入 \(t_{u,k+1}\),找第 \(k\) 大可以建立 Trie 树 \(O(\log)\) 做到。
复杂度 \(O(k \log n)\)
「十二省联考 2019」字符串问题
把支配关系放在图上,然后再用每个 \(B\) 串 \(u\) 和每个 \(A\) 串 \(v\) 满足 \(u\) 是 \(v\) 前缀,连一条 \((u,v)\) 的边,边权是 \(v\) 的长度,可再建一个起始点,向每个 \(A\) 串连边权长度的边。答案就是起始点开始图上最长路。
考虑如何快速连边。
- 建 SA,按长度最小到大顺序,每次插入一个 \(B\) 串时,SA 上的一段区间的 \(A\) 串(可以二分找)向 \(B\) 串连边,主席树优化建图即可。
- 把串都反转,前缀关系变为后缀,建 SAM,SAM 的 Link 树上 \(u\) 是 \(v\) 的后缀等价于 \(u\) 是 \(v\) 的祖先,因此 \(u\) 向子树连边即可。但需要注意的是,由于 SAM 高度压缩,但长串不能向短串连边,因此就要在 SAM 上拆点。我是在 SAM 的每个节点上开个 \(\text{map}\),对应长度统计编号,最后统一建父亲向儿子的边。
复杂度都是 \(O(n \log n)\) 的,不过 SA 的空间大一点。
「十二省联考 2019」骗分过样例
告辞
「十二省联考 2019」皮配
关键是我们并不需要决定具体选择哪个导师。限制也是阵营、派系的。并且这两个确定,就能唯一确定一个导师。
所以问题就是给每个学校分配两个属性,城市里学校选择阵营要一样,因此得一起选,分部 DP,最后合并时枚举一个维度,剩下一维是一个矩阵和,用二维前缀和 \(O(1)\):
- 无限制的城市、学校:直接 DP,互不影响最后乘起来 :\(O(nms)\)
- 有限制的城市、学校:绑在一起 DP:\(O(km^2)\)(或 \(O(k^2s^2m)\))
谢谢,已经写吐了。
「十二省联考 2019」春节十二响
在子树结构中,考虑递归的先把儿子的最优解找到,然后考虑合并。
这里最优解定义为一个多重集,每个元素集选的一段的最大值。
考虑 \(u\) 的最优解用到的合并一定是儿子的若干最优解,因为不同子树不存在祖先关系所以互不影响,可以随意合并。
这样问题就变成了,有两个集合,你要将他们合并,一次操作可以是:
- 各选择一个集合中的元素,删除,加入一个元素,值是这俩的 \(\max\)。
若合并 \(k\) 次,两组集合各选择最大的 \(k\) 个即可。
这样每次合并,可以使总数减掉一个最大值的 \(\min\),任意调整都会出现减掉的东西更少。
用 \(\text{set}\) 维护最优解,任意的 \(\text{swap}\) 是 \(O(1)\) 的,合并一个就少一个,复杂度 \(O(n \log n)\)。
「十二省联考 2019」希望
绝 望
[六省联考2017]期末考试
枚举最晚完成时间,贪心匹配。复杂度线性。
[六省联考2017]组合数问题
化为组合意义:从 \(nk\) 个物品选 \(i\) 个物品满足 \(i\mod k = r\) ,\(k\) 很小,矩阵快速幂即可。
md 我个垃圾还想了好久。
[六省联考 2017] 相逢是问候
暴力 80 就离谱。
用扩展欧拉定理把指数降下来,考虑 \(k\) 次迭代,每次模的数是原来的一个 \(\phi\),考虑每两次 \(\phi\) 至少下降 \(2\) 倍(有一个 \(2\) 质因子,奇数变偶)。
设迭代到 \(1\) 次数是 \(s\)。
那么迭代次数 \(> s\) 答案都是一样的,所以可以暴力改,每个元素最多改 \(\log\) 次,每次改,倒着递推即可,记得处理边界即需要加的情况。
这样是 3 只 \(\log\),考虑同底光速幂,这样就做到了两只 log。
md 只有这种联考难度能让我想出三题正解。。