ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

联合省选 2022 解题报告

2022-04-27 21:03:55  阅读:141  来源: 互联网

标签:省选 质数 mn 节点 最小值 解题 2022 考虑 我们


D1T1 preprocessor

直接模拟。

D1T2 tree

极差不超过 \(K\),考虑计算树上路径选值中最小值为 \(v\) 的方案:

将所有 \([l_i,r_i]\) 对 \([v,v+k]\) 取交后的答案减去 对 \([v+1,v+k]\) 取交的答案即可。

容易编一个树形 dp 做到 \(O(nr)\),拿到 40pts。

考虑值域很大的情况进行离散化

求得所有 \([v,v+k]\) 的答案可以考虑离散化端点:\(r_i,l_i-1,r_i+k,l_i+k\)

对于相邻的端点内满足 \([l_i,r_i]\) 对其取交的结果的长度关于 \(v\) 的取值呈一次函数

容易分析出 \([v,v+k]\) 的答案在区间内为关于 \(v\) 的一个 \(n\) 或者 \(n+1\) 次函数

拉插即可,时间复杂度 \(O(n^3)\)

D1T3 community

D2T1 card

首先将所有卡牌丢进 \([1,2000]\) 的桶里。

由于一个不超过 2000 的数 \(v\) 小于 \(\sqrt v\) 的质数很少,我们考虑将一个数按其所含的大质数分类。

定义“大质数”为数 \(v\) 中所含的唯一一个不小于 43 的质数(43 也算是因为 \(43\times 47>2000\)),

特别的,不存在则定义为 1。

分类后在一类中我们仅考虑 41 即以内的共 13 个小质数,考虑状压,dp 出一类中得到 \(2^{13}\) 种质因子集合的方案数,复杂度 \(O(\pi(s)2^{13})\)。

对于一次询问,我们将所有出现的大质数拿出来,在这些类中我们都至少选一个,其他类随便选。

我们考虑这实际上是所有类做或卷积,出现的大质数的集合幂级数需要稍加改动,容易发现有逆。

时间复杂度 \(O(\sum c\times2^{13})\)。

D2T2 bracket

先建出括号树,考虑操作在树上的表现:

  1. 将树上相邻的兄弟 \(a,b\) 进行修改,将 \(b\) 的所有儿子挂到 \(a\) 上,再将 \(b\) 也挂到 \(a\) 上,代价为 \(xv_a+yv_b\)。
  2. 任意交换两个相邻的子树,代价为 \(0\)。

我们希望求得将树变成一条链的最小代价。

我们考虑从浅到深的将节点往下移动,显然答案不劣。

那么问题变为我们将前若干层操作为链后,当前层形如一个菊花,我们需要决策留下一个节点,并将当前层其他节点下放至所留节点下。

记当前层的权值总和为 \(S\),极值分别为 \(mn,mx\),个数为 \(k\)

分 \(x,y\) 的取值讨论:

  1. \(x=0,y=0\),答案为 \(0\)。

  2. \(x=0,y=1\),一次移动需要将往下层走的节点记一次贡献,那么每层留下权值最大的点即可

    容易用 multiset 维护。

  3. \(x=1,y=1\),一次移动还将对其选择的父亲记一次贡献,我们希望贪心的利用当前层的最小值作为父亲。

    考虑当我们选择留下的点不是最小值时,我们现将其他所有点移到最小值下,再将最小值移到所选点下即可。

    当我们选择的点就为最小值时不需要最后的一步移动,但容易算出贡献均为 \(S+(k-2)mn\)。

    我们直接贪心的留下最大值即可,既使下一层的 \(S\) 最小,又尽可能的保证 \(mn\) 不增大。

    仍然直接使用 multiset 维护即可。

  4. \(x=1,y=0\),一次移动仅记父亲一次贡献,我们还是利用当前层的最小值作为父亲。

    移动的构造与 Case 3 相同,若留下的节点权值为 \(w\),贡献改成 \(w+(k-2)mn\)。

    仍然贪心,考虑仅有链的第 \(n\) 个点不需要因 \(w\) 贡献权值,我们希望这个位置为全局最大值;

    而由于 \(k_i\) 是固定的,我们希望每层的 \(mn\) 都尽量小。

    那么我们尽量让每层的 \(mx,mn\) 都传下去——这在 \(k_i>2\) 的层容易实现。

    我们考虑 \(n\) 层每一层决策时的个数 \(k_i\),

    其应当呈现一段 1,一段 2,一段 >2,直到原树中该层不存在节点,剩一段每次下降 1 的序列。

    对于第一段 1,我们不需要处理,它们没有贡献。

    第一段 2 实际上的贡献为其间所有权值和去掉一个往下传的节点,记其为 \(x\)。

    我们容易计算后面的 \(mx\) 的贡献,考虑计算 \((k-2)mn\) 的贡献。

    由于有一个 \(x\) 往下传,其可能对应一个层数区间其为最小值,带来一定的贡献,而其不为最小值的后缀区间我们容易预处理。

    那么我们从小到大枚举可能的 \(x\),进行双指针即可,时间复杂度为排序的 \(O(n\log n)\)

总复杂度 \(O(n\log n)\)

D2T3

标签:省选,质数,mn,节点,最小值,解题,2022,考虑,我们
来源: https://www.cnblogs.com/juju527/p/16200526.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有