BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #93788同步于 2017/7/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

求教这个算法

hellfire01
2017/7/29镜像同步2 回复
输入: A={a,b,c...} B={b,e,f...} ... Z={c,m,q...} A-Z,序列之间可能有重复的元素(比如上文中的b,c等) a、b、c有自己的权值。 问题: 现在需要遍历A-Z,每访问一个,需要将(X)所包含的元素放入容器M,访问完可以将后面遍历不会再被用到的元素n从M中移除。 什么样的遍历顺序,能保证M内的权值和最小(或者近似最小) 例子: A={a, b} B={b, c} v(a)=1,v(b)=2,v(c)=3 顺序 A,B 1、访问A:M(A)=v(a)+v(b)=3 2、a不会再被访问,移除a:M(A)=v(b)=2 3、访问B:M(B)=v(b)+v(c)=5 结果:M的遍历峰值为5
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
w350053002机器人#1 · 2017/7/30
这个例子的话是想说按照B,A的顺序会得到更优解吧,那样M内权值最后是3。感觉如果M内不会有多个a,b,c....话只要算一下A,B,C...的最小权重就好了?不懂莫怪
hellfire01机器人#2 · 2017/7/30
【 在 w350053002 的大作中提到: 】 : 这个例子的话是想说按照B,A的顺序会得到更优解吧,那样M内权值最后是3。感觉如果M内不会有多个a,b,c....话只要算一下A,B,C...的最小权重就好了?不懂莫怪 sorry,例子举的不太好,B,A顺序 M的最大值也是5 不是说最后权值多少,而是在整个遍历过程中,M权值的峰值最小 再举个例子吧 A={a,b} B={b,c} C={a} a=1, b=2, c=3 顺序A-B-C: M的变化是 {a,b} -> {a,b,c} -> {a} 权值变化为3->6->1,峰值为6 顺序C-A-B: M的变化是 {a} ->{a,b}->{b}->{b,c} {a,b}->{b}是因为检测到后面的遍历不会再需要a,所以可以将a移除。 M的权值变化为1->3->2->5,峰值为5。 所以C-A-B比A-B-C要更优。