[最大流] 计划安排

题目描述 Description

Dramatic的工厂最近生意红火!有 N N N位客户希望工厂为他们加工产品。每位客户都提供了需要加工的产品的类型,产品到达工厂的时间 r r r和最迟完成加工的时间 d d d。Dramatic根据需要加工的产品类型预计了每个产品加工所需的时间 t t t。工厂里的生产车间一共有 M M M台机器。每个产品在每台机器上都可以加工,但是,一台机器在任何时候最多只能加工一件产品,而一件产品在任何时候也最多只能被一台机器加工。同时,我们可以在某台机器正在加工时将工作打断,换另一个产品加工。Dramatic希望你帮他计算一下,能否找到一个方案,使得所有的产品都在规定的时间内完成加工?

输入 Input

第一行包含一个整数 Q Q Q,表示数据组数。接下来 Q Q Q组数据,每组数据的第一行包含两个整数 N , M N,M NM,表示需要加工的产品的数量、机器的数量。接下来 N N N行,每行三个整数 t i 、 r i 、 d i t_i、r_i、d_i tiridi,表示加工产品所需的时间,产品到达工厂的时间以及最迟完成加工的时间(即产品可以在 [ r i , d i ] [r_i,d_i] [ridi]内被加工)。

输出 Output

包含 Q Q Q行,每行对应一组数据的答案。如果第i组数据能搞找到一个方案,则第 i i i行包含一个Yes,否则包含一个No。

样例输入 Sample Input

2
2 1
3 5 9
4 8 12
3 1
2 2 9
2 3 5
3 5 8

样例输出 Sample Output

Yes
Yes

限制 Limits

1 ≤ Q ≤ 10 , 1 ≤ N ≤ 100 , 1 ≤ M ≤ 5 , 1 ≤ t i ≤ 4000 , 0 ≤ r i , d i ≤ 32767 1≤Q≤10,1≤N≤100,1≤M≤5,1≤t_i≤4000,0≤r_i,d_i≤32767 1Q10,1N100,1M5,1ti4000,0ri,di32767
Time Limit : 1s & Memory Limit : 128MB

放在了最大流专题,构图是够坑的。
首先让每个时间点都建在一张图里跑Dinic是会TLE的,虽然Dinic复杂度玄学…
于是选择缩时间轴,将开始和结束设为断点,断点之间形成的线段作为新点。那么就可以减少边数了。从原点连流量为 t i t_i ti的边到 n n n件商品,商品的连边坑爹,因为我们可以在某台机器正在加工时将工作打断,换另一个产品加工,所以只要存在被 r i , d i r_i,d_i ri,di包含的线段,那么这件商品就可以向这个时间段连流量为这条线段长的边,最后所有线段向汇点连长度 × m \times m ×m的边,因为有 m m m个机器。
这样就可以A了,时间复杂度为 O ( v 2 e ) O(v^2e) O(v2e)
Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值