最新消息:

信息学奥赛题库- 【11NOIP提高组】聪明的质监员

C++ 少儿编程 977浏览 0评论

【题目描述】

小$T$是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有$n$个矿石,从1到n 逐一编号,每个矿石都有自己的重量$w_i$ 以及价值$v_i$。检验矿产的流程是:

1、给定$m$ 个区间$[L_i,R_i]$;

2、选出一个参数$W$;

3、对于一个区间$[L_i,R_i]$,计算矿石在这个区间上的检验值$Y_i$ :

$$Y_i=sum_j1×sum_jv_j,jin[L_i,R_i]且w_j≥W,j是矿石编号$$

这批矿产的检验结果Y 为各个区间的检验值之和。即:

$$Y=sum_{i=1}^mY_i$$

若这批矿产的检验结果与所给标准值$S$相差太多,就需要再去检验另一批矿产。小$T$不想费时间去检验另一批矿产,所以他想通过调整参数$W$ 的值,让检验结果尽可能的靠近标准值$S$,即使得$S-Y$ 的绝对值最小。请你帮忙求出这个最小值。

【输入】

第一行包含三个整数 $n,m,S$,分别表示矿石的个数、区间的个数和标准值。

接下来的 $n$ 行,每行$2$ 个整数,中间用空格隔开,第$i+1$ 行表示$i$ 号矿石的重量$w_i$ 和价

值$v_i$ 。

接下来的 $m$ 行,表示区间,每行$2$ 个整数,中间用空格隔开,第$i+n+1$ 行表示区间$[L_i,R_i]$的两个端点$L_i$ 和$R_i$。注意:不同区间可能重合或相互重叠。

【输出】

输出只有一行,包含一个整数,表示所求的最小值。

【输入样例】

5 3 15
1 5
2 5
3 5
4 5
5 5
1 5
2 4
3 3

【输出样例】

10

【提示】

【输入输出样例说明】

当W选4的时候,三个区间上检验值分别为$20、5、0$,这批矿产的检验结果为$25$,此时与标准值$S$ 相差最小为$10$。

【数据范围】

对于10%的数据,有$1≤n,m≤10$;

对于30%的数据,有$1≤n,m≤500$;

对于50%的数据,有$1≤n,m≤5,000$;

对于70%的数据,有$1≤n,m≤10,000$;

对于100%的数据,有$1≤n,m≤200,000,0 < w_i, v_i≤10^6,0 < S≤10^{12},1≤L_i≤R_i≤n$。

您必须 登录 才能发表评论!