2019 Multi-University,HDU Day 5

From EOJ Wiki
Jump to navigation Jump to search

Problem A

Upsolved by Weaver_zhu.

题意:给出 $p,x$,求最小的 $b$ 使得 $\exists a, a \equiv bx (\mod{p})$

题解:$bx-a = yp, a = bx-yp < b \Rightarrow \frac{b}{y} < \frac{p}{x-1}, a>0 \Rightarrow yp+bx>0 \Rightarrow \frac{b}{y} > \frac{p}{x}$, 得出 $\frac{p}{x} < \frac{b}{y} < \frac{p}{x-1}$ 类欧得出答案

Problem B

Upsolved by Xiejiadong. (-9)

题意:给出数组 $a$ 和 $b$ ,计算数组 $c$ 的方式是 $c_i=a_i\oplus b_i$ ,可以任意交换数组 $a$ 和 $b$ 的顺序,使得 $c$ 的字典序最小。

题解:一个显然的贪心策略是,每次取出可能产生的最小的 $c$ ,然后删除对应的 $a$ 、 $b$ ,再继续找最小的...

于是考虑用字典树维护,比赛的时候写了个优先队列维护,多了个 log ,TLE 到生活不能自理。

其实可以直接 dfs ,每次选择一个数,一定是尽量选择 $00$ 或者 $11$ 的情况,但是每次 dfs 选出来的数不一定是有序的,再排个序即可。

Problem C

Unsolved.

Problem D

Solved by Xiejiadong && Kilo_5723. 01:33:31 (+1)

题意:求方程 $\sum_{i=1}^n |a_ix-b_i|=C$ 的所有解。

题解:显然,这是一个分段函数,分段函数的断点,显然就是所有的 $\frac{-b_i}{a_i}$ 。

从前往后枚举 $n+1$ 个区间,每次向后移动一个区间,都只有一项的符号变化会对系数和常数的变化产生影响,保留修改,求解答案看是否在当前定义域内就行了。

要注意特判区间重合的情况。

Problem E

Solved by Weaver_zhu. 00:57:42 (+)

温暖的签到,据说是数据变弱了才是签到的

Problem F

Solved by Xiejiadong. 00:26:00 (+)

题意:给一个字符串,求暴力做 $lcp$ 的时候的比较次数。

题意:大概看一下就能发现了:

  • 如果 $lcp$ 是短串的全部,比较次数就是短串长度;
  • 否则,比较次数就是 $lcp +1$ ;

于是,问题就变成求所有后缀和全串的 $lcp$ ,抄个 exkmp 就过了。

Problem G

Solved by Kilo_5723. 00:51:52 (+)

题意:求一个全排列 $\{a_n\}$,使得 $a_1=x,a_n=y,x<y$,并且 $\left| a_{i+1}-a_i \right| \le 2$。

题解:我们发现,一段区间只能被我们经过两次。所以,除非起点是 $1$,我们前一段的行动就只能从 $x$ 走到 $1$,再从 $1$ 走到 $x+1$,后半段同理,我们就只需要处理中间的一段。

我们的问题就简化成了从 $1$ ~ $n$ 有多少不同的路径。我们发现,要么从 $n-1$ 走到 $n$,要么走 $n-3,n-1,n-2,n$,可以得出 $dp$ 方程为 $dp_n=dp_{n-1}+dp_{n-3}$。

Problem H

Solved by Kilo_5723. 03:04:27 (+5)

题意:给出一个简单多边形,求能否通过移动一个点,使其变成轴对称的简单多边形。

题解:考虑枚举对称轴。对称轴一定是多边形里两个点的垂直平分线,但在原多边形中有三个点可能没有与其配对的点:在对称轴上的至多两个点,和被移动的点。

因此,枚举前四个点与剩下的每一个点可能产生的对称轴,依次判可不可行。一般地,从枚举的点对分别朝两个方向相向出发,分别判断点对是否关于轴对称即,如果不对称就需要花费一个移动点的次数,判断总次数是否 $>1$。

但有一种特殊情况,如果两个点都位于其本应处在的半平面的两边,就无论如何都不可能通过移动一个点使多边形满足条件。特判这种情况就可以了。

Problem I

Upsolved by Weaver_zhu.

Pohlig-Hellman 算法,量身定制版题目,这份教材写的不错(虽然是英文的 http://www-math.ucdenver.edu/~wcherowi/courses/m5410/ctcdlp.html

Problem J

Unsolved.