2019 Multi-University,HDU Day 4

From EOJ Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Problem A

Solved by Kilo_5723. 00:12:16 (+1)

题意:给定 $1$ ~ $n$ 共 $n$ 个结点,$i$ 和 $j$ 之间的路径长为 $i \& j$,求字典序最小的最小生成树。

题解:对于每一个结点 $q$,连到最小的 $2^i\&q=0$ 上,但如果 $2^i>n$ 要连到 $1$ 上。

Problem B

Unsolved.

Problem C

Upsolved by Kilo_5723. (-3)

题意:$1$ ~ $n$ 的整数,分成 $k$ 组,使得每组的和以及每组的数的个数都相同,求可行解。

题解:首先,如果每组有偶数个整数,显然将首尾的数不断成对压进每组就能满足条件。

如果每组有奇数个整数,此时如果 $2 \mid k$,则 $k \not \mid \frac{n\cdot (n+1)}{2}$。我们只要做 $k$ 为奇数的情况就行了。

令每组的整数数量为 $m$,我们只要处理 $m=3$ 的情况就可以了,因为剩下的情况都可以处理前 $3$ 项之后转化成第一种情况。

令 $m=3,k=2\cdot t-1$,我们可以通过搜索分别找出三个数分布的规律:(第 $i$ 行第 $j$ 个数代表 $j+3 \cdot (i-1)$ 属于的集合编号)。

\begin{array}\\ 1&2&3&4&5&6&\cdots&k-5&k-4&k-3&k-2&k-1&k\\ t+1&t+2&t+3&t+4&t+5&t+6&\cdots&t-5&t-4&t-3&t-2&t-1&t\\ t&k&t-1&k-1&t-2&k-2&\cdots&t+3&3&t+2&3&t+1&1\\ \end{array}

例如当 $k=7$ 时,应为:

\begin{array}\\ 1&2&3&4&5&6&7&\\ 5&6&7&1&2&3&4&\\ 4&7&3&6&2&5&1& \end{array}

根据规律输出。

能暴力跑规律的题千万不要手推。

Problem D

Unsolved.

Problem E

Upsolved by Weaver_zhu.

题意:求$k$个数字的八进制数满足是$p$的倍数且每个数字出现次数都是3的倍数的数字有多少个。

题解:$dp[k][i][p]$ 表示状态压缩三进制 $i$ 和模等于 $p$ 的 $k$ 位数字有多少个。然后考虑倍增+卷积运算。这里的卷积是 3进制不进位加法的卷积。有个技巧是只做首尾两次 fwt 和 rfwt,因为fwt运算只涉及到加法

Problem F

Unsolved.

Problem G

Solved by Xiejiadong && Weaver_zhu. 02:45:41 (+1)

题意:判断十五数码问题是否无解。

题解:在 Xiejiadong 的强行误导下, Weaver_zhu 写了两个小时 A* 。

直接大力猜结论,大概模拟一下 $0$ 位置的变动。

根据 $0$ 所在位置的行列奇偶性和分行和列的逆序对数量奇偶行相同即可。

Problem H

Solved by Xiejiadong. 01:23:54 (+)

题意:询问一段区间 $a_l,a_{l+1},\cdots a_r$ 中元素 $\{|a_l-p|,|a_{l+1}-p|,\cdots ,|a_r-p|\}$ 中的 $k$ 大数。

题解:利用主席树可以维护一个区间里面一段值域里面元素的个数。

对于每个询问二分答案,假设当前答案为 $mid$ ,那么我们需要查询区间里面值域为 $[p-mid,p+mid]$ 的元素个数,元素个数恰好为 $k$ 的就是答案。

Problem I

Unsolved.

Problem J

Solved by Kilo_5723 && Xiejiadong. 04:09:28 (+1)

题意:求整数 $n$ 分解质因数以后,最小的指数。

题解:可以发现 $3982^4 > 10^{18}$ ,于是,我们可以知道 $> 3981$ 的数,指数最多为 $4$ 次。

我们先把 $4000$ 以内的数暴力处理掉,剩下的数就只能是某个数的整数次方了,从大到小判断开 $x$ 次方是不是整数就好了。