列表

详情


NC230453. Dependencies

描述

阿任有n个软件需要安装,软件间有依赖关系,聪明的你已经使用拓扑排序排好了正确的安装顺序,并按顺序将这些软件分别编号为,只能按的顺序进行安装。

安装时有``完整安装"和``简单安装"两种选项,``完整安装"相比``简单安装"多消耗一些的空间。安装完成后删除安装包可以释放一定的空间。

同时,每个软件对阿任来说有一定的重要程度,但他只关注``完整安装"的软件。

初始机器上有S的剩余空间,第i个软件的重要程度、简单安装所需空间、安装包大小、``完整安装"相比``简单安装"所需的额外空间分别用gain_i, require_i, release_i, extra_i表示。

由于安装顺序是确定的,阿任在安装过程中难以抉择``完整安装"和``简单安装"。对于已``完整安装"的软件,无法再将其退回``简单安装"状态,

但目前``简单安装"的软件可以在安装依赖它的软件时升级到``完整安装"状态。

安装流程与限制如下:

1-当前机器剩余空间为s时,当且仅当前i-1个软件都安装完毕,且时,可以进行第i个软件的``简单安装",剩余空间变为

2-当前机器剩余空间为s时,当且仅当前i-1个软件都安装完毕,且并且时,可以进行第i个软件的``完整安装",剩余空间变为

3-安装完成第i个软件后,若还有足够的空间,可以选择若干个软件i依赖的软件j,将其从``简单安装"状态花费extra_j的空间升级至``完整安装"状态。

即无论选择何种方式安装,至少所需的剩余空间都是require_i,并且安装完成后剩余空间非负。

注意,依赖关系不会传递,若软件x依赖软件y,软件y依赖软件z,但软件x不直接依赖软件z,不能在安装x后升级z

大部分软件仅需1的额外空间即可从简单安装升级至完整安装,至多有5个软件需要更多空间。

n个软件全部安装完毕的前提下,阿任只看重``完整安装"软件的重要程度,并希望最大化它们的和。

输入描述

第一行为三个整数n,m,S,分别代表软件个数,依赖条目数和初始剩余空间量,, , 

后续n行,每行四个整数gain_i, require_i, release_i, extra_i,代表第i个软件的重要程度,简单安装所需空间、安装包大小、完整安装相比简单安装所需的额外空间,, , ,至多有5

后续m行,每行两个整数,表示x安装时依赖y,保证每个软件不会依赖编号比它更大的软件,并且依赖关系不会重复出现。

数据保证若所有软件都选择``简单安装",一定能全部安装完毕,并且至多存在5i

输出描述

输出一行一个整数,这n个软件全部安装完毕的前提下(无论是``简单安装"还是``完整安装"),输出最多能获得的重要程度之和。

示例1

输入:

4 4 10
9 5 3 1
3 8 6 1
10 4 2 2
5 3 2 1
2 1
3 2
4 1
4 2

输出:

17

说明:

对于样例1,共有4个软件需要安装,初始空间为10,一种可行的安装方案如下:

简单安装软件1,空间剩余10-5+3=8

完整安装软件2,空间剩余8-(8+1)+6=5,由于软件2依赖软件1,此时升级安装软件1,空间剩余5-1=4

简单安装软件3,空间剩余5-4+2=3

完整安装软件4,空间剩余3-(2+1)+1=1

示例2

输入:

4 3 13
1000 6 0 2
100 3 0 1
10 2 1 1
1 2 1 1
3 1
2 1
4 3

输出:

110

示例3

输入:

6 7 13
11 10 8 1
14 2 0 1
0 4 2 1
100 2 1 2
3 4 3 1
16 4 1 1
3 2
6 1
6 2
4 2
5 4
3 1
2 1

输出:

30

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

上一题