2018-2019 ICPC, NEERC, Southern Subregional Contest

From EOJ Wiki
Revision as of 13:59, 24 October 2018 by Zerol (talk | contribs) (→‎Problem B)
Jump to navigation Jump to search

Problem A

Solved by ultmaster. 00:20 (+)

Problem B

Solved by kblack & zerol. 03:48 (+1)

题意:有一些子网的黑白名单,要求用数量最少的黑名单覆盖所有黑名单且不误伤白名单。

题解:看成二进制数的问题,子网就是 32 位二进制数的一个前缀,全部插进 trie,然后 dfs 一遍。如果当前子树中全是黑名单就采用该结点对应的子网且不进入递归,否则左右子树递归。

Problem C

Solved by kblack. 00:55 (+)

Problem D

Solved by kblack. 00:12 (+)

Problem E

Solved by zerol. 01:59 (+)

题意:选取一个最优的 d 使得在 t 时间内完成最多的任务。策略如下,只会做耗时不超过 d 的任务,每做 m 个任务都会休息之前 m 个任务的耗时和等长的时间。

题解:将所有任务按耗时排序,从小到大一批批加进去,然后用二分时间判断能完成的最多任务数,可以树状数组上二分计算前若干个任务的耗时和。

Problem F

Solved by zerol. 00:45 (+)

题意:有一些带权的东西标号是 11, 01, 10, 00 之一,要求选择它的一个子集,使得第一/二位是 1 的不少于子集大小的一半,求最大的权重和。

题解:可以把 0 看成 -1,那么条件转化成了第一位以及第二位的和非负。11 先全吃了。01 和 10 分别排序后按从大到小的顺序一对一对吃,随后剩下的 01/10 和 00 再一起从大到小排序,能吃几个就吃几个。

Problem G

Solved by zerol. 04:44 (+2)

Problem H

Solved by kblack. 00:28 (+)

Problem I

Solved by ultmaster. 03:54 (+3)

Problem J

Solved by kblack. 02:06 (+3)

Problem K

Solved by zerol. 00:07 (+)

温暖的签到。