• 省选题乱做


    好久没更博了。

    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 imes) 最小生成树。

    复杂度 (O(m + n^2log 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 的每个节点上开个 ( ext{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),任意调整都会出现减掉的东西更少。

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

    code

    「十二省联考 2019」希望

    绝 望

    [六省联考2017]期末考试

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

    code

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

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

    md 我个垃圾还想了好久。

    code

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

    暴力 80 就离谱。

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

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

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

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

    code

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

  • 相关阅读:
    集合的整体
    StringBuffer类中的东西
    ChickHouse安装介绍
    Flink集群搭建
    hadoop-MapReduce总结
    hadoop-hdfs
    linux命令总结
    linux
    shall 2-13
    String 类的其他功能
  • 原文地址:https://www.cnblogs.com/dmoransky/p/14497351.html
Copyright © 2020-2023  润新知