38th Petrozavodsk Programming Camp, Winter 2020 Day 5: Jagiellonian U Contest, Sunday, February 2, 2020

XJTU ICPC Team Selection - Summer 2021 - Day2

A.Bags of Candies

2s

Description

\(1,2,3...,n\)\(n\)个数,你可以将两个不互质的数配对。求最多能配对几对。
\(1\leq n \leq 10^{11}\)

Solution

首先,记\(D=(\frac{n}{2},n]\)中所有质数的集合\(\cup \{1\}\)\(D\)中的数一定无法配对,于是得到最多配对数的上界是\(\lfloor\frac{n-|D|}{2}\rfloor\)。记\(S=\{1,2,3,...,n\} \backslash D\)。将\(S\)中的数按最大质因数分组,对于每一组,若组中有偶数个数,则将它们两两配对;若组中有奇数个数,可以证明其中必有一个偶数,将组中的数两两配对并剩下一个偶数。这样一来每个大小为奇数的组都会剩下一个偶数,将剩余的偶数两两配对(若\(n-|D|\)为奇数则会剩余一个)。这样恰好配对\(\lfloor\frac{n-|D|}{2}\rfloor\)对。
所以答案就是\(\lfloor\frac{n-|D|}{2}\rfloor=\lfloor\frac{n-(\pi(n)-\pi(\frac{n}{2}))}{2}\rfloor\)
我们可以使用埃氏筛的改进算法在\(O((r-l)\log\log(r-l)+\sqrt{r})\)求一个区间\([l,r]\)内的质数个数(筛出\(\sqrt{r}\)内的质数,然后拿这些质数筛区间里的数即可)。
利用此算法,将\((1,10^{11})\)分成\(10^4\)块,将每块的质数个数打表。然后再利用此算法求解非完整块的答案即可。

B.Binomial

5s

Description

给你一个序列\(a_1,a_2,...,a_n\),求有几对\((i,j)\)满足\(1\leq i,j\leq n\)\(C_{a_i}^{a_j}\)为奇数。若\(n<k\),则\(C_{n}^{k}=0\)
\(1\leq n\leq 10^6\)\(1\leq a_i\leq 10^6\)

Solution

由Lucas定理可以推出,\(C_{n}^{k}\)为奇数 等价于 (n&k)==k .
然后问题就转化成了一个"Sum over Subsets(SOS) DP"问题。(我不会)

C.

D.

25s

Description

一个周长为\(10^6\)的圆上有\(n\)个弧($1\leq n\leq 3000)。请选出尽可能多的弧使得它们两两相交。

E.

F.

G.

2s

Description

给你\(n\)个黑点和\(n\)个白点。请你将黑点和白点两两配对,然后对每一对点找出一个连接两点的折线,使得\(n\)条折线互不相交。
要求折线最多折100下且折线上的点横纵坐标绝对值不能超过1000。
\(1\leq n\leq 6\) , 黑白点横纵坐标绝对值不超过100,保证每个点横坐标不同,每个点纵坐标不同,不存在三点共线。

Solution1

\(2n\)个点按横坐标排序,依次放入栈中,若栈顶元素与它下面的元素一黑一白则将它们取出,然后连线。连线方式为:从一点向上走到max(黑点纵坐标,白点纵坐标,maxY+1)处,然后向左/右走到另一点上方,然后向下。每次连接后用两个点的纵坐标更新maxY。

Solution2(正确性未证明)

枚举全部的\(n!\)种连接方式,两点间直接连线段,假装可以证明一定有一种连接方式满足条件。

H.

I.Sum of Palindromes

2s

Description

给你一个数,把它拆成若干回文数的和。输出方案
\(z\)组询问,\(1\leq z\leq 20000\)
\(1\leq n<10^{100000}\)\(z\)次询问\(n\)的和不超过\(10^{3000000}\)
注意回文数不能有前导0,即3630不是回文数

J.Space Gophers

20s

Description

一个棱长\(10^6\)的立方体,里面有\(n\)条平行于\(x/y/z\)轴的隧道(如(-1,1,1)表示所有形如(x,1,1)的点构成的隧道)。\(q\)次询问每次给出两个点,判断它们是否联通。(你可以像上下左右前后8个方向走,注意(-1,1,1)和(1,-1,2)两个隧道是可以相互到达的)

K.

L.Wizards Unite

2s

Description

\(n\)个箱子,\(k\)个银钥匙和\(1\)个金钥匙。
打开箱子要消耗\(t_i\)的时间。银钥匙是一次性的,金钥匙reusable。多个钥匙可以同时开多个箱子,一个钥匙只能同时开一个箱子。最少用多长时间。
\(1\leq k\leq n\leq 10^5\)

Solution

max(最长的\(k\)个取最大值,剩下的加起来)


这场真的难,平均AC 1.1题

posted @ 2021-07-10 03:35  _Veritas  阅读(387)  评论(0编辑  收藏  举报