2020 Petrozavodsk Winter Camp Day5 简要题解

A.Bags of Candies

题目大意:

\(1 \sim n\)的整数,\(gcd\)不为\(1\)的两个数可以匹配,问最多匹配多少对,\(n \leq 10^{11}\)

题解:

考虑在\(\lceil \frac{n}{2} \rceil \sim n\)的质数和\(1\)不能匹配,剩下的枚举质数从大向小匹配,剩下的是\(p,2p,\cdots\)。若个数是偶数,则正好完全匹配,若个数是奇数,则留下\(2p\)。不难发现剩下的\(2p\)匹配完是否剩余仅和奇偶有关,所以问题的本质就是求\(\lceil \frac{n}{2} \rceil \sim n\)的质数个数,用Min25筛求解即可,复杂度为\(O(\frac{n^{\frac{3}{4}}}{\log n})\)

B.Binomial

题目大意:

给长度为\(n\)的序列\(a\),求\(\binom{a_i}{a_j}\)为奇数的个数,\(n,a_i \leq 1e6\)

题解:

通过卢卡斯定理可得,\(\binom{a_i}{a_j}\)为奇数,当且仅当二进制下\(a_j\)\(a_i\)的子集,高维前缀和即可,复杂度为\(O(20*2^{20})\)

C.Bookface

题目大意:

给定长度为\(n\)的数列\(a\),每次可以花\(1\)次操作使数列中某数\(\pm 1\),问最少多少次操作,使得操作后序列排序后,相邻元素之差大于等于\(d\)\(n \leq 2 \cdot 10^5\)

题解:

考虑先在数列前面添上\(-d \sim -(n+1) \cdot d\),这样就保证了最优解一定不会把数减到0以下。再将序列排序,第\(i\)个数减去\(i \cdot d\),这样问题就转化为将序列变成不降的最小代价。考虑应该是将数列分成一些段,每段都变成中位数,可以用堆来实现这个操作,复杂度为\(O(n \log n)\)

D.Clique

题目大意:

给定一个圆,上面有\(n\)段弧,问最多选出多少段弧,使得两两有交,\(n \leq 3000\)

题解:

E.Contamination

题目大意:

二维平面上有\(n\)个圆形障碍,保证不相交,\(Q\)次询问\(p,q\)两点是否能只通过\([ymin,ymax]\)的地方互相到达,\(n,Q \leq 1e6\)

题解:

本质就是询问圆心\([p_x,q_x]\)内的圆,是否有一个圆上下界将\([ymin,ymax]\)完全覆盖。然后就是个数点问题了,随便解决,复杂度为\(O(n \log^2 n)\)

F.The Halfwitters

题目大意:

给定一个排列\(P\),可花\(a\)的代价交换位置相邻两数,\(b\)的代价翻转排列,\(c\)的代价重新随机生成一个排列。给\(T\)个排列,问变成\(1 \sim n\)的最小代价,\(T \leq 2 \cdot 10^4 , n \leq 16\)

题解:

G.Invited Speakers

题目大意:

二维平面中,有\(n\)个红点和\(n\)个蓝点,用折线链接红蓝点对来匹配,构造一组最大匹配方案,保证横坐标和纵坐标都不同

题解:

将红点蓝点都排序,记所有点横纵坐标绝对值的\(max\)\(c\),构造如下,对于第\(i\)个红点和第\(i\)个蓝点,\((r_i.x,r_i.y)-(r_i.x,c+i)-(-c-i,c+i)-(-c-i,-c-i)-(b_i.x,-c-i)-(b_i.x,b_i.y)\)

H.Lighthouses

题目大意:

二维平面上有\(n\)个点,保证这些点构成一个凸包,在这些点之间有连边,要求出一条最长的路径,使得走过的边没有相交,\(n \leq 300\)

题解:

考虑一条边走完后再向中间的点走这种情况,会发现再也不能走出。这是个很显然的区间dp模型,记\(f_{i,j,0/1}\)表示第一步走\((i,j)\)这条路径,方向是\(i->j\)\(j->i\)的方案数,复杂度为\(O(n^3)\)

I.Sum of Palindromes

题目大意:

给定数\(S\),将其分成不超过\(25\)个回文数的和,\(S\)的位数小于等于\(10^5\)

题解:

每次对着前面一半构造,这样的次数大概是\(O(\log 10^5)\)

J.Space Gophers

题目大意:

有一个大正方体,中间挖去\(n\)个形如\((x,y,\forall z),(x,\forall y,z),(\forall x,y,z)\)的长方体,\(T\)次询问两点是否连通,\(n,T \leq 3 \cdot 10^5\)

题解:

考虑如何方便的表示这些空洞的连接关系,如果有\((x,y,\forall z)\),那么他会与\((\forall x,y,z)\)\((x,\forall y,z)\)的空洞,连接这里\(z\)不重要,我们通过建虚点来减小连边复杂度,然后染色即可,复杂度为\(O(n \log n)\),瓶颈在于给点编号

K.To argue, or not to argue

题目大意:

给定一个\(n*m\)矩阵,表示可用的座位,有\(k\)对人不能坐在一起(每个人都不同),问合法方案数,\(n \cdot m \leq 144\)

题解:

我们求出至少\(i\)对相邻的方案数来容斥,问题转化为在矩阵中选恰好i对相邻的座位的方案数。考虑轮廓线dp,设\(f_{i,j,msk}\)表示考虑了前\(i\)个位置(原来的变成\(n*(y-1)+x\)的形式),选了\(j\)对,轮廓线上利用状况为\(msk\)的方案数。复杂度为\(O((nm)^2 2^{min(n,m)})\)

L.Wizards Unite

题目大意:

\(n\)个箱子,\(k\)把银钥匙,\(1\)把金钥匙,每个箱子需要一定时间打开,只有金钥匙可以多次使用,求最短时间,\(n \leq 10^5\)

题解:

贪心,时间最大的\(k\)个箱子用银钥匙,复杂度为\(O(n \log n)\)

posted @ 2021-01-19 23:20  JSOI爆零珂学家yzhang  阅读(184)  评论(0编辑  收藏  举报