XVIII Open Cup named after E.V. Pankratiev. Grand Prix of SPb

From EOJ Wiki
Revision as of 05:05, 19 July 2019 by Xiejiadong (talk | contribs) (→‎Problem J)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Problem A

Solved by Xiejiadong. 2:40 (+2)

题意:用 $0/1$ 串 $c_0c_1c_2\cdots c_n$ 表示复数 $a$ ,其中复数 $a=\sum_{k=1}^n c_k\cdot (1-i)^k$ 。

题解:直接暴力转换是算不出来的,因为最多有 $500000$ 位,可以发现 $(1-i)$ 间隔 $4$ 乘四倍,高精度都没法做。

如果没有进位,直接相加即可,考虑进位的情况,即其中一位是 $2$ 的时候怎么用别的表示,可以发现,第 $i$ 位是 $2$ 的话,等价于第 $i+2$ 和 $i+3$ 位是 $1$ 。

按照这个法则进位即可。

不过有一个情况,就是按照这样的法则进位 $111+111$ 的时候,会发现,进位会发生死循环,其实 $111+111=100$ ,需要特判。

Problem B

Solved by Xiejiadong. 1:06 (+)

题意:给定一个十进制数,要求将他的二进制位任意重组,不能有前导 $0$ ,求能组成多少个完全平方数。

题解:数的范围是 $10^{18}$ ,则完全平方数的底数最多是 $10^9$ ,暴力预处理,将所有完全平方数按照二进制下 $1$ 的个数和 $0$ 的个数分类记录。

打出表,直接根据表得解。

Problem C

Solved by Xiejiadong. 0:29 (+)

题意:有 $n$ 个鸡和鸡蛋,要求鸡蛋能够装鸡必须满足鸡蛋的大小 $\ge$ 鸡,求一对一映射的方案。

题解:$n\le 12$ 直接暴力全排列会 TLE ,加了优化也不行,最坏的情况就是会跑慢。

考虑用状态压缩 dp 处理即可。

Problem D

Unsolved.

Problem E

Upsolved by Kilo_5723.

题意:给定 $\frac{a}{b}(1 \le a < b \le 10^9)$ 精确到第 $18$ 位小数的结果,求任一对可能的 $a,b$。

题解:设结果为 $x$,则 $x-5 \cdot 10^{-19} \le \frac{a}{b} < x+5 \cdot 10^{-19}$。先特判左边等于的情况,约分判断分母大小是否 $\le 10^9$。如果不可行,将左右都化为分数形式,问题转换为求解 $p,q$,使得 $\frac{p1}{q1} < \frac{p}{q} < \frac{p2}{q2}$,用类欧几里得算法求解。

Problem F

Unsolved.

Problem G

Solved by Kilo_5723. 0:42 (+1)

题意:给定一个地下坑道的剖面图,问在给定规则下,是否能找出一个空位不可能被水浸湿。

题解:暴力逐行判断即可。

Problem H

Unsolved.

Problem I

Solved by Kilo_5723. 2:38 (+3)

题意:平面上有 $n \le 500$ 个互不共线,起点相同的向量,每次可以询问两个向量的叉积是否 $>0$,要在 $20000$ 次询问内判断这 $n$ 个向量是否属于一个经过原点的半平面,并将其排序。

题解:考虑快速排序,每次取出一个向量,将所有在其左侧,右侧的向量分别排序后合并。注意特判 $n=1$ 的情况。

Problem J

Solved by Weaver_zhu. 2:06 (+2)

题意:给两个数列{a},{b},枚举$a_i+b_j$组成一个新的$n^2$个数的数列,输出新的数列中间$n$个数。

题解:二分出新的数列第一个数和最后一个数,枚举$a_i$二分找出$b_j$算上中间的数,然后根据个数计算第一个数和最后一个数的个数。

Problem K

Unsolved. (-9)

Problem L

Solved by Kilo_5723. 0:13 (+)

题意:给出 $n$ 个数,问有多少种将其划分到两个集合中的方式,使得两个集合内的异或和相等。

题解:显然,如果 $n$ 个数的异或和为 $0$,任意的划分都满足要求。如果不为 $0$,则不存在这种划分。