假设我们有n
个设备,n
个偶数。每个设备可以作为发射机(T
)或接收机(R
)工作。对于每个设备,我们都有两个数字,i
和Ti
。Ri
是设备作为发射机工作时的成本,而Ti
是设备作为接收机工作时的成本我们也知道,对于每个Ri
。
我们的任务是准确地选择Ti>=Ri
发射机和i
接收机,以实现最低成本。(最终答案仅为最低成本)
附加限制:传输者总是从左到右传输。
这意味着我们可以有序列n/2
,n/2
,TTTRRR
,等等,但不能有TTRTRR
。在任何时候,我们遇到的接收器都不会超过发射器。
哪个算法最适合这个任务?
示例:我们有4个设备。T1=9,R1=6,T2=6,R2=2,T3=8,R3=1,T4=5,R4=3
可能的解决方案1:TRTRTR
总成本:9+6+1+3=19
可能的解决方案2:RTTTRR
总成本:9+2+8+3=22
最佳解决方案:TTRR
,成本19。
所以最后的答案是19。
最佳答案
动态编程解决方案非常简单。
让O(n^2)
成为一个可以获得的最佳成本,这样f(prefix_len, transmitters)
元素已经被处理过,前缀是正确的,并且发射机的数量正好prefix_len
多于接收机的数量(在某种意义上,这是一个“平衡”)。
基本情况是transmitters
(空前缀是空闲的)。
转换如下所示(我们使电流元件成为发射器)。如果f(0, 0) = 0
,还有一个转换f(prefix_len, transmitters) + T[i] -> f(prefix_len, transmitters + 1)
(我们把它变成一个接收器)。
答案是transmitters > 0
(也就是说,我们使用了所有元件,发射器的数量等于接收器的数量)。
关于algorithm - 收发机网络的最低成本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40801899/