序列选数(最大费用最大流 || 优先队列)

Posted jpphy0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列选数(最大费用最大流 || 优先队列)相关的知识,希望对你有一定的参考价值。

问题

  • 给定偶数个数 a [ 1 ] 、 a [ 2 ] 、 . . . 、 a [ n ] a[1]、a[2]、...、a[n] a[1]a[2]...a[n]
  • 分别输出从这n个数里选 1 、 2 、 3 、 … 、 n / 2 1、2、3、…、n/2 123n/2 个数时的和的最大值,选数规则是不能同时选相邻的数。
  • 1 ≤ a [ i ] ≤ 1000 , 2 ≤ n ≤ 100000 1\\leq a[i] \\leq 1000,2 \\leq n \\leq 100000 1a[i]10002n100000
  • 输入:
    1
    10
    737 757 860 778 371 591 20 241 768 442
  • 输出
    860
    1628
    2365
    2956
    2871

分析

  • 顶点数1e5,使用费用流则超时
  • 当第2个数选择768后,在x+768 >= 241+442无法满足时,将会选择768前后的241和442两个数,且放弃768(反悔操作)
  • 当选择了737后,就不可能再放弃737(无对应的反悔操作)
  • 网络流(可将in和out之间的数字顶点删除,数字成为in和out两顶点间路径的费用系数)
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
s
in
in
in
in
in
737
757
860
778
371
591
20
241
768
luogu1484 种树 (优先队列)

数据结构:优先队列-最大最小优先

优先队列(oriority queue)之最大优先队列的实现

费用流模板

数据结构——优先队列

D. The Strongest Build(bfs+优先队列)