IOI2020国家集训队作业 Part 1

别我为啥2021的都出来了才写2020的

口胡进度:(11/50)

代码进度:(10/50)

CF504E Misha and LCP on Tree

一棵树,每个点一个字母,求两条路径的LCP, n ≤ 3 × 1 0 5 , q ≤ 1 × 1 0 6 n\le 3\times 10^5,q\le 1\times 10^6 n3×105,q1×106

哈希记正串反串即可,代码咕了

CF505E Mr. Kitayuta vs. Bamboos

题面

好像写了个比较优的做法。

首先显然考虑二分答案,对于一个最后的值,一个点要被砍的次数是确定的,以及可以浪费多少(即可以不大于p时就砍)也可以确定,如果砍一次不会使它接下来要砍的次数-1,那么可以不砍。 于是直接扫一遍,拿vector记录第 i i i 次操作时有哪些新增的可以砍的以及一个队列维护当前能被砍的集合即可,另外注意有时候你砍完可以立刻砍下一刀,特判一下即可。时间复杂度 O ( ( n + m k ) log ⁡ V ) O((n+mk)\log V) O((n+mk)logV)

CF512D Fox And Travelling

给定一张 n n n 个点 m m m 条边的无向图,一个点只有当与它直接相连的点中最多只有一个点未被遍历过时才可被遍历。
询问对于每个 k ∈ [ 0 , n ] k∈[0,n] k[0,n],遍历 k k k 个点的方案数。

n ≤ 100 n\le 100 n100

盯了好久才发现只需要考虑树的情况。。。DP也策不清。。。

而树分成 2 2 2 种,与环有边相连的有根树和无边相连的无根树。

对于有根树,显然直接DP删叶子即可,只有所有子树都被删掉时才能删当前节点。

对于无根树,我们枚举最后一个删掉的点,不难发现一个联通块在所有以块外节点为根的情况时都会被算进去,所以每次要除去 s i z − k siz-k sizk 的贡献,当然整棵子树不用除。

最后背包合并即可。

CF516D Drazil and Morning Exercise

给出一棵有边权的树,令 f ( x ) = max ⁡ { d i s ( x , i ) } f(x)=\max\{ dis(x,i)\} f(x)=max{dis(x,i)},每次给出 l l l,求最大的联通块满足块内 max ⁡ f ( x ) − min ⁡ f ( x ) ≤ l \max_{f(x)}-\min_{f(x)}\le l maxf(x)minf(x)l 1 ≤ n ≤ 1 0 5 , 1 ≤ q ≤ 50 1\le n\le 10^5,1\le q \le 50 1n105,1q50

首先通过树上直径的两个端点 O ( n ) O(n) O(n) 求一手 f ( x ) f(x) f(x)。然后发现以直径上带权中点为根时整棵树是一个小根堆,于是就可以尺取法了。

然而如何尺取还卡了我一会,具体就是枚举min,用并查集维护联通块的连通性及大小,而将r减小时由于子树肯定被删光了,所以直接将所在联通块的siz-1即可。

CF516E Drazil and His Happy Friends

题面

不看题解是8可能的

思路懂了,但是不太会实现,差不多是对着粉兔代码抄了一遍,要再花时间。

d = gcd ⁡ ( n , m ) d=\gcd(n,m) d=gcd(n,m) ,则一起玩的男生女生编号肯定对 d d d 同余,所以就变成了 d d d 个子问题。此时 n d , m d \frac{n}{d},\frac{m}{d} dn,dm 互质,每个子问题只要有一个人一开始就高兴就显然可以扩散到所有人,否则显然无解。

然后我们对每个子问题分开考虑,对于最后一个高兴的男生和最后一个高兴的女生的时间分别取max就是这个子问题的答案,接下来只考虑女生。

如果第 i i i 个男生让第 j j j 个女生高兴,那么 n n n 次之后就会让第 ( j + n ) ( m o d m ) (j+n)\pmod m (j+n)(modm) 个女生高兴, c n cn cn 次之后就会让第 ( j + c n ) ( m o d m ) (j+cn)\pmod m (j+cn)(modm) 个女生高兴。

于是可以求一手最短路,第 i i i 个女生向第 ( i + n ) ( m o d m ) (i+n)\pmod m (i+n)(modm) 个连边,初始高兴的男生/女生 i i i 向第 i ( m o d m ) i\pmod m i(modm) 个女生连边权为 i i i 的边(因为你发现都是在第 i i i 次之后每 n n n 次向后贡献),求最短路即可。

但是点集1e9,GG。

发现这其实在一个环上,特殊点之和只有 O ( n ) O(n) O(n) 个,把环拉直之后 O ( n ) O(n) O(n) 转移即可。拉直需要用一次exgcd。

CF521D Shop

题面

从同学口中获得提示后做出。。

首先一个基本结论是先赋值再加再乘且赋值每个数只操作一次且相同类型互不影响。

由于题目要求最大化乘积,所以我们考虑将所有操作都转化成乘法。

p zk \color{black}\text{p}\color{red}\text{zk} pzk提示:全都是加很好做。

仔细一想好像确实,每个数的加操作显然按从大到小顺序进行,我们加完后再次计算与乘等效的系数即可。

然后发现赋值操作也可以当成加,当然每个数只能保留最大的赋值。

然后用个堆取m次即可。

CF521E Cycling City

一个无向简单图(不保证联通),求是否能找到2个点满足这2个点之间有至少3条不重复的路径。 n , m ≤ 2 × 1 0 5 n,m\le 2\times 10^5 n,m2×105

又是一道看了题解的题。。发现题目要求等价与一棵生成树上有一条边被至少2条非树边覆盖。

由于找到一个合法的边就能停止,所以所有操作都可以直接暴力。一条边被哪条路径覆盖可以直接记录(因为只会有1条,第2条出现的时候就可以算答案了)

然后我们考虑找到2条边之后怎么办。不难发现用暴力找LCA的方法覆盖树上路径时,我们发现的第一条被2条路径覆盖的边是两条路径两个端点之一的LCA。

同时,这时候千万不要想复杂,无向图生成树的非树边都是返祖边。

令两条路径分别为 ( a , b ) , ( c , d ) (a,b),(c,d) (a,b),(c,d),且 g = LCA(a,c) ⁡ g=\operatorname{LCA(a,c)} g=LCA(a,c),且 d e p b ≥ d e p d dep_b\ge dep_d depbdepd 。这样的话就能构造出3条 g->b 的了:

1.树上g->b
2.g->a,a->b
3.g->c,c->d,d->b

搞定,时间复杂度 O ( n ) O(n) O(n)

CF526F Pudding Monsters

一个 n × n n\times n n×n 的棋盘,每行每列都有 1 1 1 个棋子,求有多少个 k × k k\times k k×k 的子棋盘中恰好有 k k k 个格子 ( k ∈ [ 1 , n ] ) (k\in[1,n]) (k[1,n]) 1 ≤ n ≤ 3 × 1 0 5 1\le n \le 3\times 10^5 1n3×105

这题一开始并不会。

看了题解之后发现可以直接令 a x = y a_x=y ax=y ,转化为 1 1 1 维的问题,现在变成了求 max ⁡ { a l … a r } − min ⁡ { a l … a r } = r − l \max\{a_l\dots a_r\}-\min\{a_l\dots a_r\}=r-l max{alar}min{alar}=rl 的计数。

不妨枚举 r r r ,将无关项移到左边

max ⁡ { a l … a r } − min ⁡ { a l … a r } + l = r \max\{a_l\dots a_r\}-\min\{a_l\dots a_r\}+l=r max{alar}min{alar}+l=r

不难发现左边两项只需维护后缀 max ⁡ \max max 和后缀 min ⁡ \min min 即可,可以用单调栈实现。而由于 max ⁡ { a l … a r } − min ⁡ { a l … a r } + l ≥ r \max\{a_l\dots a_r\}-\min\{a_l\dots a_r\}+l\ge r max{alar}min{alar}+lr,且 l = r l=r l=r 时必能取到最小值,所以我们直接用线段树维护最小值的数量即可。

CF526G Spiders Evil Plan

一棵树,有边权,每次询问给出 x , y x,y x,y ,求由 y y y 个路径组成的、经过 x x x 的边权最大的联通块。

又是一道不会做的神题……首先路径显然是一个叶子到另一个叶子,而每个叶子的贡献实际上是它到它所在长链的顶端的父亲的距离,这个感性理解非常对,然而我之前就是想不到。。。

于是我们有了个每次长剖的 O ( n q ) O(nq) O(nq) 做法,显然不够。我们又发现 x x x
所在最长链肯定在直径的两个端点之一取到,于是只需要对这两个点分别做一次长剖即可。

然后这样的方案可能不包括 x x x ,我们有两种处理方法:

  • 把最短链去掉,加入 x x x 所在长链。
  • 将最靠近 x x x 的长链下半部分改成 x x x 的长链

两者都要找到 x x x 最浅的没有被选的祖先,倍增即可。

CF605E Intergalaxy Trips

给出一个有向图,每条边每天出现的概率都是 p i , j p_{i,j} pi,j,你也可以选择停留一天,求从 1 1 1 走到 n n n 的最小期望天数。

这个好像还算简单,直接Dijkstra转移即可,还是比较直观的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IOI国家集训队2019论文集,目录: 钟子谦 - 《两类递推数列的性质和应用》 王修涵 - 《浅谈图模型上的随机游走问题》 杨骏昭 - 《“小水题”命题报告》 高嘉煊 - 《浅谈图的点着色问题》 戴 言 - 《浅谈格路计数相关问题》 李佳衡 - 《算法竞赛中一些数论问题的推广与高斯整数初探》 范致远 - 《“基础圆方树练习题”命题报告》 徐翊轩 - 《“整点计数”命题报告以及对高斯整数的若干研究》 张哲宇 - 《浅谈树上分治算法》 吴思扬 - 《“组合数求和”命题报告》 王思齐 - 《浅谈一类简洁数据结构》 陈孙立 - 《子串周期查询问题的相关算法及其应用》 吴作同 两关递推数列的性质和应用 福州第中学钟了谦 两类递推数列的性厉和应用 福州第三中学钟子谦 摘要 线性递推数列和整式递搾数列是数学中常见的两类递推数列,本文介绍了这两类递推 数列的定义、性质和有关算法,并展示了它们在信息学竞赛中的一些应用。 前言 线性递推数列被引入算法竞赛界凵经有至少互年,但是直没有得到特别广泛的普及 整式递推数列是线性递推数列的一个自然的拓展,近两年才被引入信息学竞赛。本文希望 能够系统介绍这两类数列的性质和在信息学竞赛中的用途,使读者在思考有关问题时有迹 可循 本文首先在第1节介绍了线性递推数列,接下来在第2节介绍了整式递推数列。对于 这两类数列,本文介绍了它们的定义、性质、有关算法和实际例题,对于线性递推数列本文 还介绍了些与线性代数相关的应用。 1线性递推数列 1.1定义 定义1.1.我们称长度有限的数列为有限数列,长度无限的数列为无限数列。 定义1.2.我们称形式幂级教F最高次项的次数为形式幂级数F的次数,记为deg(F) (可能为α)。特别地,我们定义零多项式的次数为负无穷大(-0)。 定义13.对于有限数列{a0,a1,a2…an-1},我们定义它的生成函数为多项式A(x) ∑=ax。对于无限数列{ao,a1,a2…},我们类似地定义它的生成函数为形式幂级数A(x) 定义1.4.对于无限效列{0,a1,u2…}和有限非空数列{ro,r1,r2…rm-n},若对于任意 卩≥m-1,有∑ank=0,则称数列r为数列a的线性递归式。若ro=1,我们称数 列r为数列a的线性递推式。我们称存在线性递推式的无限数列为线性递推数列 两关递推数列的性质和应用 福州第中学钟了谦 对于有限数列{a0,a1,a2…an-l和有限非空教列{ro,r1,r2…rm-1},类似地,若对于任 意m-1≤卩≤n-1,有∑四=an-k-0,则称数列r为数列a的线性递归式。若10-1 我们称数列r为数列a的线性递推式。 我们称这个线性递推式的阶数为它的长度减一,称数列a阶数最小的线性递推式为数 列a的最短线性递推式。 12基本性质和判定方法 在生成函数的观点下看线性递归式,我们有如下结论 定理11.对于无限数列{a,a1,a2…}和有限非空数列{ro,n1,r2…rm-1},设数列a和数列 r所对应的生成函数为A和R,数列r为数列a的线性递归式等价于存在次数不超过m-2 的多项式S满足AR+S=0。 对于有限数列{a0,a1,a2…an-1}和有限数列{r,r1,r2…Fm-1},设数列a和数列r所对 应的生成函数为A和R,数列厂为数列a的线性递归式等价于存在次数不超过m-2的多 项式S满足AR+S≡0(modx)。 证明.下面证明无限数列的情况,有限数列的情况也是类似的 对于k≥m-1,考察两侧x次项的系数,我们有[x(x)R(x)=∑mbra-=0。只 需要取适当的S使得低次项系数为0即可 接下来我们介绍儿种常见的判定线性递推数列的方法。 推论1.1.对于无限数列{a,a1,a2∵},设数列a所对应的生成函数为A,a为线性递推 数列当且仅当存在常敖项为1的多项式R和多项式S满足A=是。数列a的最短线性递 推式阶数就是对于这样的R和S,max(deg(R),deg(S)+1)的最小可能值。 证明.由定理1.1移项即得 定理1.2.对于一个nXn的矩阵M,无限数列{,M,M2,M3…)是一个线性递推数列,它 的最短线性递推式阶数不超过n 证明.考虑矩阵M的特征多项式p,它满足deg(p)=n,xlp(x)=1。 I Cayley-Hamilton 定理,我们有p(M)=0。该定理的证明可参见参考文献2],由于和本文主题关系不大,这 里略厶。 设p(x)=∑=0Cnx,P(M)=0即∑:0Cm-M=0,两边乘M得∑=0CnM+!=0 即∑0c;M件+=0。所以{c,C1…cn}即为

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值