Codeforces1250K. Projectors【网络流求时间占用问题的合法分配方案】

每个讲课必定要用一个高清投影仪,所以我们就是要求的就是在高清投影仪在某些区间必放后,普通投影仪的合法分配方案。

因为研讨会既可以用高清投影仪,又可以用普通投影仪,而在当前时刻我们并不知道它到底是用哪一个更优。

于是我们要想办法解决普通投影仪在讲课已经占用一部分高清投影仪后的分配问题。

我们在考虑普通投影仪的分配方案时并不需要考虑每个讲课跨越的区间具体是什么,而只需要知道每个时刻被多少讲课所包含。比如 [ 1 , 4 ) [1,4) [1,4) [ 1 , 3 ) , [ 2 , 4 ) [1,3),[2,4) [1,3),[2,4) 是没有区别的。
因此,在知道每个时刻被多少讲课所包含后,我们希望通过以研讨会为跨越时刻的边建立某种网络流。

若对于时刻 t + 0.5 t+0.5 t+0.5,有 X X X个讲课和 Y Y Y个研讨会正在发生,那么必须有 X ≤ x , X + Y ≤ x + y X\le x,X+Y\le x+y Xx,X+Yx+y,并且可以得出此时最多有 min ⁡ ( y , x + y − X − Y ) \min(y,x+y-X-Y) min(y,x+yXY)个普通投影仪处于空闲状态。(如果不满足前两个条件直接输出NO)

对(离散后的)时间线建立网络流:
源点到时间1的边容量为 ∞ \infty
时间 t t t到时间 t + 1 t+1 t+1的容量为 min ⁡ ( y , x + y − X − Y ) \min(y,x+y-X-Y) min(y,x+yXY),表示时刻 t + 0.5 t+0.5 t+0.5最多空闲的普通投影仪。
对研讨会 [ p i , q i ) [p_i,q_i) [pi,qi),建立 p i → q i p_i\to q_i piqi,容量为1,这条边有1的流量表示这个研讨会用的是普通投影仪。
时间末尾即为汇点

时间轴上的一个流量表示空闲的普通投影仪,跨越区间的流量表示在对这个研讨会使用了普通投影仪,如果流量没有经过这条跨区间的边而选择了走时间轴,这说明有一个高清投影仪用在了这个研讨会上,它能够走过时间轴意味着 x > X x>X x>X,即剩余的高清投影仪补充了“空闲的普通投影仪”的容量。

举例说明:
如果没有高清投影仪剩余,那么时间轴上的容量就是 y − y- y正在进行的研讨会数量,一个流量可以这样穿过去:
在这里插入图片描述
如果有高清投影仪剩余,那么时间轴上就有一些补充容量,可以这样流:
在这里插入图片描述
上图中高清投影仪可以用在任何一个地方。

如果这个时候存在一个讲课,比如说:
在这里插入图片描述
这时候第三次研讨会就必须使用高清投影仪。

可以发现我们的网络流实际上为一个研讨会提供了一个不选普通投影仪的选择,而“最多的空闲”实际上限制了在某些位置必须选择普通投影仪而不能选择高清投影仪(如果某个位置不能存在空闲而我们流过来一个流量,意味着我们在前面某个该用普通投影仪的位置没有用普通投影仪),结合这个例子理解:
在这里插入图片描述
在这个例子中,我们的最大流没有达到 y y y,意味着不存在普通投影仪的合法分配方案。
如果最大流达到了 y y y,那么必定存在满足条件的解,我们每次从汇点向源点退1的流量,如果某条研讨会的边此次有流量经过说明使用了普通投影仪,如果 y y y个流量都没有经过它这说明使用了高清投影仪。
然后高清投影仪在讲课需要的时候直接放就可以了,可以保证一定是预留出来了的。

Nice Problem!

Code:咕咕咕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值