Difference between revisions of "2019 Multi-University,HDU Day 3"
Xiejiadong (talk | contribs) |
Xiejiadong (talk | contribs) |
||
Line 40: | Line 40: | ||
Solved by Kilo_5723 && Weaver_zhu. 00:33:20 (+1) | Solved by Kilo_5723 && Weaver_zhu. 00:33:20 (+1) | ||
+ | |||
+ | 题意:给定质数 $P$,求满足 $Q<P$ 的最大的质数 $Q$,输出 $Q!\;{\rm mod}\; P$。 | ||
+ | |||
+ | 题解:$(P-1)! \;{\rm mod} P = -1$,Miller_Rabin 快速判素数即可。 | ||
== Problem G == | == Problem G == |
Revision as of 12:40, 30 July 2019
Problem A
Unsolved.
Problem B
Solved by Xiejiadong && Weaver_zhu. 01:59:02 (+1)
题意:给出一个 DAG ,每次询问两个点,求有多少方案通过删除一个点,使得其中一个点无法到达所有他所在的联通块出度为 $0$ 的点。
题解:把所有出度为 $0$ 的点连向一个超级汇点,显然,询问就变成了任意一个点无法到达超级汇点的方案。
以超级汇点作为起点,建反图,那么,可以删除的点就一定是从超级汇点出发到询问点的必经点。
在支配树上,方案树就是询问的两个点的祖先的并,求个 lca 就好了。
Problem C
Unsolved.
Problem D
Upsolved by Xiejiadong.
题意:可以选择把数列的前缀 $x$ 个分给 $k$ 个人,要求每个人都有,而且是连续的一段,求每个人得到的和的最大值最小是多少。
题解:最大的最小,显然二分答案。
直接可以想到的就是 dp 验证答案, $f[i]=f[j]+1(sum[i]-sum[j]\ge mid)$ , $sum[i]$ 表示前 $i$ 个数的前缀和, $mid$ 表示二分答案的值。
直接这样做,显然 TLE ,离散一下,用权值线段树维护区间最大值,支持 log 转移就好了。
比赛的时候读题没都出连续,所以自闭了。
Problem E
Unsolved.
Problem F
Solved by Kilo_5723 && Weaver_zhu. 00:33:20 (+1)
题意:给定质数 $P$,求满足 $Q<P$ 的最大的质数 $Q$,输出 $Q!\;{\rm mod}\; P$。
题解:$(P-1)! \;{\rm mod} P = -1$,Miller_Rabin 快速判素数即可。
Problem G
Solved by Xiejiadong. 00:41:23 (+1)
题意:求 $1\cdots (k-1)$ 里面需要把多少个数变成 $0$ ,可以使得 $\sum_{i=1}^k a_k\le m$ 。
题解:问题转变成,在 $1\cdots k$ 中,第 $k$ 个数必须取,也就是在 $1\cdots (k-1)$ 中选取尽量多的数,使得和 $\le (m-a_k)$ 。
权值线段树维护一下,然后直接在线段树上二分就是了。
Problem H
Unsolved.
Problem I
Solved by Xiejiadong && Weaver_zhu. 04:33:20 (+4)
题意:可以取出 $k$ 个最长不下降子序列,每个数只能归属于其中一个子序列,求最大和。
题解:显然,因为每个位置的权值都是正的,所以如果可以取 $k$ 个,就一定不会取 $k-1$ ,于是就可以跑最小费用最大流。
把每个点拆成左右两个点,通过在顺序对前一个右点向左点连边连接顺序对,再通过每个点的左点向右点连边,通过费用计算代价就好了。
代价插入负值就能跑最小费用了。
但是直接这样搞会 TLE ,就不妨设一个阈值,每个位置指向之后的 $x$ 个顺序对连边,通过边数量的减少,让网络流跑过去。
设 $x=100$ 就过去了,大概是能证明的吧?
Problem J
Unsolved.
Problem K
Unsolved.