Codeforces 1473F 题解与人类迷惑行为大赏

题意:
给定两个数组 a i ≤ 100   ,   ∣ b i ∣ ≤ 1 e 5 a_i \le 100 \ , \ |b_i|\le1e5 ai100 , bi1e5,且 n ≤ 3000 n\le 3000 n3000
你需要从 a i a_i ai中选出一些数字组成集合 S S S,并且对于每个选中的 a i a_i ai,你需要付出对应的 b i b_i bi的代价。
集合需要满足:对于集合中的任意一个数字,在数列 a a a中,出现在它左边的所有的他的约数都必须出现在集合中。
求最大代价。

LS的人类迷惑行为:
        由于约数限制,对于同一个值,如果选择了,那么就一定是选择了该值的一段前缀,对于所有的值的cost做前缀和,将“选这个数”转化为“选这个数字的一段前缀”。对于每个数字拉出一个长条,限制为“选择了第一条的某个点,就一定要选择另外几条的某个后缀中的一个”,转化为经典建图,负权用对于流量加大数来处理。

卢老爷:
        这不是最大权闭合子图吗。有了上面那个性质之后,正的连源点负的连汇点,限制连lastpos。卢老爷NB!

顺带一提这场的E很妙,ghj的+min-max转+1-1中的min妙不可言。ghjNB!

另外表示这场的C我们三个人都不会。幸亏没打.jpg

猜你喜欢

转载自blog.csdn.net/weixin_43977362/article/details/112852856