题目描述

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

1 、给定m 个区间[Li,Ri];

2 、选出一个参数 W;

3 、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi:

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

若这批矿产的检验结果与所给标准值S 相差太多,就需要再去检验另一批矿产。小T

不想费时间去检验另一批矿产,所以他想通过调整参数W 的值,让检验结果尽可能的靠近

标准值S,即使得S-Y 的绝对值最小。请你帮忙求出这个最小值。

输入输出格式

输入格式:

输入文件qc.in 。

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

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

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

输出格式:

输出文件名为qc.out。

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

输入输出样例

输入样例#1:

5 3 15
1 5
2 5
3 5
4 5
5 5
1 5
2 4
3 3
输出样例#1:

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 < wi, vi≤10^6,0 < S≤10^12,1 ≤Li ≤Ri ≤n 。

  • NOIP2011 day2t2,不是很难
  • 通过观察数据范围可知,本题要采用O(n)或O(nlogn)的算法,但O(n)显然不现实,所以要采用O(nlogn)的方法
  • 既然已经确定了算法的时间复杂度范围,我们就会很容易想到二分答案的方法。
  • 通过题意可知答案只与参数w有关,所以我们才用二分w的方法寻找最优答案。
  • 二分的左右界分别为矿石的最小质量和最大质量(否则无意义)。
  • 对于每个二分出的w,利用前缀和算出符合质量条件的矿石并记录这些矿石的价值和,生成这些矿石的检测结果。
  • 利用结果更新答案:如果结果等于标准值则答案为0;若结果小于标准值则用两个数的差的绝对值更新答案,并二分左区间(因为结果随w单调递减),大于则同理。
  • 要注意本题的数据范围,要开64位。
  • 时间复杂度O((n+m)*log(wimax))。
  • 期望得分100分。
 var
n,m,i,j,k :longint;
s,l,r,ans,mid,p :int64;
tot,sum,v,w :Array[..] of int64;
ll,rr :array[..] of longint; function find(ww:int64):int64;
var
i,j :longint;
answ :int64;
begin
fillchar(tot,sizeof(tot),);
fillchar(sum,sizeof(sum),);
for i:= to n do
begin
if (w[i]>=ww) then
begin
tot[i]:=tot[i-]+;
sum[i]:=sum[i-]+v[i];
end else
begin
tot[i]:=tot[i-];
sum[i]:=sum[i-];
end;
end;
answ:=;
for i:= to m do answ:=answ+(tot[rr[i]]-tot[ll[i]-])*(sum[rr[i]]-sum[ll[i]-]);
exit(answ);
end; begin
read(n,m,s);
l:=maxlongint;
r:=;
for i:= to n do
begin
read(w[i],v[i]);
if w[i]<l then l:=w[i];
if w[i]>r then r:=w[i];
end;
for i:= to m do read(ll[i],rr[i]);
ans:=;
while (l<=r) do
begin
mid:=(l+r)>>;
p:=find(mid);
if p=s then
begin
ans:=;
break;
end;
if (p<s) then
begin
if s-p<ans then ans:=s-p;
r:=mid-;
end else
begin
if p-s<ans then ans:=p-s;
l:=mid+;
end;
end;
writeln(ans);
end.

[NOIP2011] 聪明的质检员(二分答案)的更多相关文章

  1. [NOIP2011]聪明的质检员

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

  2. P1314 聪明的质监员 二分答案

    这个题我第一反应是线段树(雾),然后看了一眼题解之后就后悔了...前缀和...然后二分答案,然后就没有然后了. 题干: 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 nnn 个矿石 ...

  3. NOIP2015聪明的质检员[二分 | 预处理]

    背景 NOIP2011 day2 第二题 描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿 ...

  4. Luogu P1314 聪明的质监员 二分答案

    题目链接 Solution 这个范围不是二分就是结论题就是数学题... 然后再看一会差不多就可以看出来有单调性所以就可以确定二分的解法了 二分那个$W$,用前缀和$O(n+m)$的时间来求出对答案的贡 ...

  5. [NOIP2011] 聪明的质监员 二分+前缀和

    考试的时候打的二分但没有用前缀和维护.但是有个小细节手误打错了结果挂掉了. 绝对值的话可能会想到三分,但是注意到w增大的时候y是减小的,所以单调性很明显,用二分就可以.但注意一个问题,就是二分最后的结 ...

  6. Luogu 1314 【NOIP2011】聪明的质检员 (二分)

    Luogu 1314 [NOIP2011]聪明的质检员 (二分) Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有 ...

  7. [NOIP 2011] 聪明的质检员

    聪明的质检员 描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是:1.给定m个区间[Li,Ri ...

  8. NC16597 [NOIP2011]聪明的质监员

    NC16597 [NOIP2011]聪明的质监员 题目 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 \(n\) 个矿石,从 \(1\) 到 \(n\) 逐一编号,每个矿 ...

  9. NOIP2011聪明的质监员题解

    631. [NOIP2011] 聪明的质监员 ★★   输入文件:qc.in   输出文件:qc.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 小 T 是一名质量监督 ...

随机推荐

  1. Nutch2.x

    http://www.micmiu.com/opensource/nutch/nutch2x-tutorial/

  2. eap-ttls/mschapv2

    eap-ttls/mschapv2       文件路径 用途 示例 备注 #gedit /usr/local/etc/raddb/sites-available/default #gedit /us ...

  3. ubuntu 搭建maven库 2.14.2-01并配置离线索引文件

    前提 安装JDK版本1.8或者以上 1 下载 http://www.sonatype.org/nexus/archived/  选择相应的版本 2 复制到/usr/local 下解压 sudo cp ...

  4. DateTimePicker如何与Delphi自带Style同步

    Delphi 的 DateTimePicker 组件有一个CalColors属性,可以设置 DropDown 打开的日历节目的风格.但如果不使用 Delphi 自带的 Style,在这里设置属性看不到 ...

  5. 使用javascript打开一个新页而不被浏览器屏蔽

    使用javascript打开一个新页面可以有几种方式,但各有利弊,以下做下分析 1.window.open(url) 这是新手最常用的方法,好处是简单易用,坏处,很简单,会被很多浏览器拦截而导致功能失 ...

  6. java异常架构图 和几个面试题

    1.java异常架构图 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被 ...

  7. android ORM框架ORMLite封装

    源码:http://download.csdn.net/detail/a924571572/9415506 一.框架效率对比 由于目前公司里面android端数据的数据量基本在千条以内,所以选择了更为 ...

  8. Enable rsh on MAC OS with command line

    1. Enable rsh on macos. 1). os version (10.0) Enabling the "Allow remote login" option tur ...

  9. BZOJ 4518 征途

    斜率优化.又是变量名打错看了老半天. 把方差式子展开一下就好了. #include<iostream> #include<cstdio> #include<cstring ...

  10. IE7下z-index混乱问题(转)

    浏览器兼容性问题太让人蛋疼了,今天可是废在了IE7的z-index问题上.可又不能因为浏览器版本低而不去解决,毕竟要从用户的角度着想.百度了好多还是无法解决,最后google了一下,找到了方法. 直接 ...