省选题乱做

好久没更博了。

2020 省选联考

「联合省选 2020 A | B」冰火战士]

找单调增、降的最小值这样的函数的最大值。

先二分一次找到临界点,然后最优答案一定存在于左右两边,然后再二分一次找到最右侧能取到的位置。

用树状数组常数小 \(O(n \log n)\)

code

「联合省选 2020 A」组合数问题

下降幂和组合数结合:

\[{n \choose k} k^{\underline{m}} = {n - k \choose m - k} n^{\underline{m}} \]

如果把 \(f\) 转为下降幂多项式 \(b\),交换求和顺序后,第二层可以化为一个二项式定理的形式。

code

「联合省选 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\) 类似。

code

「联合省选 2020 B」幸运数字

差分

code

「联合省选 2020 A | B」信号传递

卡空间的屑状压DP

code

「联合省选 2020 A」树

按位考虑每个点对祖先的贡献。

对于第 \(k\) 位,是一个 \(2^{k+1}\) 的循环节(可以理解为模这个意义下加法),并且每 \(2^{k}\) 个切换一个状态。那么切换状态的深度满足模 \(2^k\) 同余,用一个桶记录一下差分的地方,用天天爱跑步的方法把子树的贡献拿出来即可。

code

「联合省选 2020 A」作业题

枚举 \(gcd\),算出对应的和。考虑算是 \(k\) 的倍数的生成树边权和,然后简单容斥。

经典用矩阵树定理,把值搞成 \(1 + wx\) 的形式,最后一次项就是答案。

code

「联合省选 2020 B」卡牌游戏

若干前缀和最大值

code

「联合省选 2020 B」消息传递

简单点分治。\(O(n \log n)\)

code

「联合省选 2020 B」丁香之路

考虑走过的边形成的图,起点和终点度数是奇数,剩下都是偶数,给起点终点手动加一个度后,问题变为了再给这个图加一些边使得所有点都是偶数,并且联通。

两两奇数度点连边(注意,这之中的点也都加入联通块,可以理解为这之间都连 \(1\) 的边),这样一定花费最小,如果不相邻就会出现交叉,显然不优。

然后解决联通问题,考虑联通整个图最小代价是最小生成树,还得保持偶度数,答案贡献加 \(2\times\) 最小生成树。

复杂度 \(O(m + n^2\log n)\)

code

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)\)

code

「十二省联考 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 的空间大一点。

code

「十二省联考 2019」骗分过样例

告辞

「十二省联考 2019」皮配

关键是我们并不需要决定具体选择哪个导师。限制也是阵营、派系的。并且这两个确定,就能唯一确定一个导师。

所以问题就是给每个学校分配两个属性,城市里学校选择阵营要一样,因此得一起选,分部 DP,最后合并时枚举一个维度,剩下一维是一个矩阵和,用二维前缀和 \(O(1)\)

  • 无限制的城市、学校:直接 DP,互不影响最后乘起来 :\(O(nms)\)
  • 有限制的城市、学校:绑在一起 DP:\(O(km^2)\)(或 \(O(k^2s^2m)\)

谢谢,已经写吐了。

code

「十二省联考 2019」春节十二响

在子树结构中,考虑递归的先把儿子的最优解找到,然后考虑合并。

这里最优解定义为一个多重集,每个元素集选的一段的最大值。

考虑 \(u\) 的最优解用到的合并一定是儿子的若干最优解,因为不同子树不存在祖先关系所以互不影响,可以随意合并。

这样问题就变成了,有两个集合,你要将他们合并,一次操作可以是:

  • 各选择一个集合中的元素,删除,加入一个元素,值是这俩的 \(\max\)

若合并 \(k\) 次,两组集合各选择最大的 \(k\) 个即可。

这样每次合并,可以使总数减掉一个最大值的 \(\min\),任意调整都会出现减掉的东西更少。

\(\text{set}\) 维护最优解,任意的 \(\text{swap}\)\(O(1)\) 的,合并一个就少一个,复杂度 \(O(n \log n)\)

code

「十二省联考 2019」希望

绝 望

[六省联考2017]期末考试

枚举最晚完成时间,贪心匹配。复杂度线性。

code

[六省联考2017]组合数问题

化为组合意义:从 \(nk\) 个物品选 \(i\) 个物品满足 \(i\mod k = r\)\(k\) 很小,矩阵快速幂即可。

md 我个垃圾还想了好久。

code

[六省联考 2017] 相逢是问候

暴力 80 就离谱。

用扩展欧拉定理把指数降下来,考虑 \(k\) 次迭代,每次模的数是原来的一个 \(\phi\),考虑每两次 \(\phi\) 至少下降 \(2\) 倍(有一个 \(2\) 质因子,奇数变偶)。

设迭代到 \(1\) 次数是 \(s\)

那么迭代次数 \(> s\) 答案都是一样的,所以可以暴力改,每个元素最多改 \(\log\) 次,每次改,倒着递推即可,记得处理边界即需要加的情况。

这样是 3 只 \(\log\),考虑同底光速幂,这样就做到了两只 log。

code

md 只有这种联考难度能让我想出三题正解。。

posted @ 2021-03-07 23:25  DMoRanSky  阅读(451)  评论(1编辑  收藏  举报