Difference between revisions of "2019 Multi-University,HDU Day 3"
Xiejiadong (talk | contribs) |
Xiejiadong (talk | contribs) |
||
Line 47: | Line 47: | ||
== Problem I == | == Problem I == | ||
− | Solved by Xiejiadong && | + | Solved by Xiejiadong && Weaver_zhu. 04:33:20 (+4) |
题意:可以取出 $k$ 个最长不下降子序列,每个数只能归属于其中一个子序列,求最大和。 | 题意:可以取出 $k$ 个最长不下降子序列,每个数只能归属于其中一个子序列,求最大和。 |
Revision as of 11:11, 29 July 2019
Problem A
Unsolved.
Problem B
Solved by Xiejiadong && Wwaver_zhu. 01:59:02 (+1)
题意:给出一个 DAG ,每次询问两个点,求有多少方案通过删除一个点,使得其中一个点无法到达所有他所在的联通块出度为 $0$ 的点。
题解:把所有出度为 $0$ 的点连向一个超级汇点,显然,询问就变成了任意一个点无法到达超级汇点的方案。
以超级汇点作为起点,建反图,那么,可以删除的点就一定是从超级汇点出发到询问点的必经点。
在支配树上,方案树就是询问的两个点的祖先的并,求个 lca 就好了。
Problem C
Unsolved.
Problem D
Unsolved.
Problem E
Unsolved.
Problem F
Solved by Kilo_5723 && Weaver_zhu. 00:33:20 (+1)
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.