[复合] NKBUS
主题: HTTP://vn.spoj.com/problems/NKBUS/
公司巴士应该接员工去办公室. 在旅程, 公交车将采取工作人员在等待会合如果车位可用. 公交车可停放工人回到等待永远到达会合.
指出每位员工何时到达他或她的集合点以及何时每辆公共汽车会合. 假设公共汽车当时到达第一个集合点 0 和登机时间相等 0.
巴士应将尽可能多的员工运送到总部. 确定公交车最短的工作时间.
输入值
第一行包含 2 整数n, m依次是公共汽车的集合点和座位数
接下来的n行中的第i行包含一个整数,这是巴士从第i个会合点到达第i个会合点+ 1所花费的时间。 (第n + 1个集合点将成为公司总部) 整数k是到达集合点i的员工数量, 后跟k个整数是k个工作人员任命的日期.
结果
由一行组成, 是找到的最短时间.
限制
1 ≤N≤ 200000, 1 ≤m≤ 20000
不超过员工总数 200000.
不超过结果 231-1.
例
样本数据
3 2
3 2 4 3
1 3 6 3 7
5 1 5
结果
10
说明: 在去那家公司的路上 3 巴士站. 从车站 1 到车站 2, 站 2 到车站 3, 从车站 3 到公司反过来需要 3, 1 和 5 时间单位. 公共汽车可以如下: 直接去车站 2, 欢迎此人 2, 到车站 3, 等待 1 在该车站仅接载人员的时间单位, 最后到公司. 总巴士不见了 3 + 1 + 1 + 5 = 10 时间单位.
————————-
首先要注意的是,这辆车反正要从车站出发 1 -> ñ + 1 因此,时间等于汽车从1-开始的所有时间的总和。> ñ + 1.
请注意,对于到达车站i的每个乘客,都可以在巴士到达车站i之前或之后到达,因此我们有一个数组W[] 也就是说,公交车必须等待车站i和W的人j的时间[升] 将等于第n个客户时间 (第i站的第j位访客) 停止我减去巴士从车站出发的时间 1 站我 (如果较小 0 然后为= 0 ).
将w升序排列. 即将发送后,我们有[升] 这是汽车等待第一人称的时间,也是汽车有足够的人的时间
最后,仅比较乘客数和m较小的乘客,我们就得到了W的附加结果[] 在其中.
谢谢, 我有这个帖子. 问问自己
LQDBUS帖子类似,只分配了w[Ĵ] = + oo,第i个站的第j个人必须等公共汽车, 对?
但是我这样做是为了这个职位只是好的 10 点
我尚未完成KQDBUS发布 :ð. 今天让我试试, 现在有点忙 :ð. 如果这篇文章或有关spoj的任何文章有什么特别之处,我们希望与您分享. ^^
本文可以用AC结合二进制紧算法?
这样我还没发现 :ð. 如有可能,请与大家分享.
建议我切碎二进制时间 “开始” 公交车 , 因为这样一个事实,去集合点的乘客会站在那里而不会去任何地方(所以开始晚点开的车可以接更多的乘客 :ð). 我朋友的方式还不太明白 : 在[在] 是汽车必须在车站等待的时间 1 一些车站接sl[在] 人与否?(SL[在] 是车辆等待后在那个车站等待的乘客人数w[在] 在车站).
那我不知道是不是这样. 但是,正如你所说, 在[在] 该等第一个人了 (在那个车站也等我).
但是,因为每个站有很多人, 每个车站的人数均由变量i计算 (我这个人) 所以我将其设置为w[升] (车辆的第一人称等待时间 – 也是等待时间 1 车站有人).
我的朋友权, 可以给我你的邮箱地址吗?? 我需要您的建议吗??
您发送到电子邮件: nguyenvanquan7826@gmail.com