春季训练#1

来源:互联网 发布:淘宝灵符小镇岑一道长 编辑:程序博客网 时间:2024/04/16 22:45

链接https://vjudge.net/contest/162590


A

原题CF805A

大意:给定l,r,写下[l,r]中所有数的所有非1约数,问出现次数最多的约数。


2显然是出现最多的之一(本身数值较小,在区间内可多次出现)

l=r的时候可能l并非偶数,答案为l本身即可

http://paste.ubuntu.com/24622445/


B

原题CF805C

大意:数轴上n个点编号为1~n,从i跳到j的代价是(i + j) mod (n + 1),不限起止点,求遍历完n个点的最小总代价


贪心,从1出发跳到n,代价为0,n跳到2,代价为1,2跳到n - 1,代价为0,......,答案为(n- 1) / 2

http://paste.ubuntu.com/24622482/


C

原题CF805D

大意:一个仅含a,b的字符串中,子串"ab"可以通过一步操作变为"bba",要使字符串中不再有"ab"子串,求最少操作步数


从字符串末尾往前遍历,对每一个a,操作次数是其后面b的数量。

注意在遍历的过程中,每一个a被遍历到后,操作会使得其后面b的数量翻倍

http://paste.ubuntu.com/24622509/


D

原题CF805B

大意:构造一个n位长度的仅由a,b,c三个字符组成的字符串,其中没有长度为3的子串(如"aba")


构造一个aabbaabbaabbaabb......的字符串,取其前n位即可

甚至用不到c(第一发交的是aabbaacc...)

http://paste.ubuntu.com/24622525/


E

原题CF805E

大意:一棵n个结点的树T,有m种冰激凌,每个结点i有一个大小为s[i]的冰激凌种类的集合

对任意1<=i<=m,集合内含有第i种冰激凌的结点都能形成一个连通图

现在构造一个含有m个结点的新图G,G中结点存在边(u,v)当且仅当树T中有结点的集合中含有u,v两种冰激凌

现将G染色,G中相邻两点不能有相同的颜色,求所需颜色的最小值


阅读理解题系列,重要信息:“对任意1<=i<=m,集合内含有第i种冰激凌的结点都能形成一个连通图”。

也就是说,树上冰激凌的分布是连续的

考虑从遍历树T的结点时引入G中所有的边

仅遍历一个结点i时,该结点的冰激凌集合中的每两个互异元素都能形成一条无向边,在空图G中实际形成了一个为完全图的子图

对这个完全图,需s[i]种颜色,因为这个子图中每个结点的颜色都与其他结点不同

考虑其儿子结点,当前结点内集合进行染色后,其儿子结点内集合有已经染完色的,也有未染色的

但多个儿子的未染色的G中结点一定互异,因为这些未染色的G中结点是在父节点没有出现的,也就是出现了间断

这就像一个蜂巢状的结构,每个小格代表一个树上结点,小格内是一个完全图,小格边界是那些由父到子时连续下来的G中结点,小格之间的染色互不影响

因此ans=max(s[i]),染色时,对未染色的集合按照集合内尚未出现的最小编号(从1开始)依次染色

http://paste.ubuntu.com/24622581/


F

原题CF776E

大意:给你一堆奇怪函数让你算..数学语言都看得懂吧

由x + y = n, gcd(x, y) = 1, 有gcd(x, n - x) = gcd(x, n) = 1

f(n)其实就是欧拉函数phi(n),g(n)则是简单的狄利克雷卷积——g(n)=n

F函数则是phi的迭代,注意到当n为偶数时,phi(n) <= n / 2,因此只需O(log n)次迭代,n=1时直接返回1即可

http://paste.ubuntu.com/24622542/


G

原题CF776D

大意:有n扇门,m个开关,每扇门都有正好两个开关控制,给定初始n扇门的开关状态,问能否通过操作开关使得n扇门全部打开

重要信息:“each door is controlled by exactly two switches.”

门的初始状态和最终状态都是确定的,因此每扇门的开关也能相应确定状态:

若门初始是开的,那么其两个开关必须同开同闭

若门初始是关的,那么其两个开关必须一开一闭

并查集维护,结点i表示开关i开,i+m表示开关i闭

若最后出现了开关i又开又闭的情况,则说明矛盾,无解(i和i+m出现在同一集合中)

(也能2-SAT水过)

http://paste.ubuntu.com/24622550/


H

原题CF776A

大意:sb模拟


sb模拟即可

http://paste.ubuntu.com/24622572/

原创粉丝点击