Related
In following contests:
本题使用排序和贪心。
先将工单分为阻断单和隐患单。阻断单必须全部完成,所以其价值之和固定,只需要考虑如何安排工程师,使剩余工程师能够完成价值尽可能大的隐患单。
第一步处理阻断单。
将阻断单难度和工程师技能都从小到大排序。
某地市传输综合运维班负责辖区内干线站点的现场处理。当天一共派来 n 张工单、在班 m 名工程师。每张工单有处理难度 di 和业务价值 vi,每名工程师有技能认证等级 cj。
工单分成两类:
派单规则如下:
第一行两个整数 n、m。
接下来 n 行,第 i 行三个整数 di、vi、pi,分别表示第 i 张工单的难度、价值和类型(pi=1 为阻断单,pi=0 为隐患单)。
最后一行 m 个整数 c1,c2,…,cm,表示各工程师的技能认证等级。
1≤n,m≤105
1≤di,cj≤109
1≤vi≤109
pi∈{0,1}
输出一个整数:方案成立时的最大价值和;无法覆盖全部阻断单时输出 −1。
输入
3 3
7 1 1
2 100 0
6 50 0
7 6 2
输出
151
说明
只有一张阻断单,难度 7,必须派给技能为 7 的工程师。剩下技能 6 和 2 的工程师:价值 100 的隐患单难度 2,派给技能 2 的人;价值 50 的隐患单难度 6,派给技能 6 的人。价值和 1+100+50=151。
若先把技能 7 的工程师派去处理价值 100 的隐患单,阻断单将无人可派,方案不成立。若阻断单改派技能 7、价值 100 的单再占用技能 6 的人,则难度 6 的隐患单无法完成,价值和只有 101,不是最优。
输入
2 1
5 10 1
8 20 1
8
输出
-1
说明
两张都是阻断单,只有一名工程师,无法全部处理,输出 −1。
In following contests:
© CodeFun2000 · 使用条款
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.