聪明的质监员

2011年NOIP全国联赛提高组

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold

 
题目描述 Description
小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n 个矿石,从1到n 逐一编号,每个矿石都有自己的重量wi 以及价值vi。检验矿产的流程是:见图
 
若这批矿产的检验结果与所给标准值S 相差太多,就需要再去检验另一批矿产。小T不想费时间去检验另一批矿产,所以他想通过调整参数W 的值,让检验结果尽可能的靠近标准值S,即使得S-Y 的绝对值最小。请你帮忙求出这个最小值。

输入描述 Input Description

第一行包含三个整数 n,m,S,分别表示矿石的个数、区间的个数和标准值。
接下来的 n 行,每行2 个整数,中间用空格隔开,第i+1 行表示i 号矿石的重量wi 和价值vi 。
接下来的 m 行,表示区间,每行2 个整数,中间用空格隔开,第i+n+1 行表示区间[Li,Ri]的两个端点Li 和Ri。注意:不同区间可能重合或相互重叠。

输出描述 Output Description

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

样例输入 Sample Input

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

样例输出 Sample Output

10

数据范围及提示 Data Size & Hint

当 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≤106,0 < S≤1012,1≤Li≤Ri≤n。

/*
寻找单调性 发现W越大,Y越小
可以二分W。则问题转化为求 abs(f(W)-S)的最小值。
如何快速求f(W)
发现可以前缀和预处理,两个前缀和,一个记录大于W 的Σvi 一个记录大于W 的个数。
嗯,ans初始值往死大死大里设,不然就莫名其妙WA WA WA
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>#define N 200007
#define ll long longusing namespace std;
ll n,m,k,ans,cnt,S,Y;
ll w[N],v[N],L[N],R[N];
ll sum[N],sum2[N];inline ll read()
{ll x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}int main()
{n=read();m=read();S=read();for(ll i=1;i<=n;i++) w[i]=read(),v[i]=read(),k=max(k,w[i]);for(ll i=1;i<=m;i++) L[i]=read(),R[i]=read();ans=999999999999999999;ll l=0,r=k+1,mid;while(l<=r){mid=l+r>>1;Y=0;for(ll i=1;i<=n;i++){if(w[i]>=mid) sum[i]=sum[i-1]+v[i],sum2[i]=sum2[i-1]+1;else sum[i]=sum[i-1],sum2[i]=sum2[i-1];} for(ll i=1;i<=m;i++)Y+=(sum[R[i]]-sum[L[i]-1])*(sum2[R[i]]-sum2[L[i]-1]);if(Y-S>=0) ans=min(ans,abs(Y-S)),l=mid+1;else ans=min(ans,abs(Y-S)),r=mid-1;}printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/L-Memory/p/7732081.html

聪明的质监员 2011年NOIP全国联赛提高组(二分+前缀和)相关推荐

  1. 过河 2005年NOIP全国联赛提高组(离散化+dp)

    1105 过河 2005年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description 在河上有一 ...

  2. 1099 字串变换 2002年NOIP全国联赛提高组

    1099 字串变换 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 已知有两个字串 A ...

  3. Codevs 1066 引水入城 2010年NOIP全国联赛提高组

    1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...

  4. 棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组

    /* 这道题要解决两个问题1)状态和状态方程2)怎么保证每走一步,所形成的路径不相交,以保证最后生成的完整路径不相交.(1)状态: dp[i][j][k][l] = 小渊传递的纸条到[i][j]的位置 ...

  5. codevs 1043 方格取数 2000年NOIP全国联赛提高组

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而 ...

  6. CODE[VS] 1098 均分纸牌 ( 2002年NOIP全国联赛提高组)

    arr[i] :表示每个牌堆的纸牌的数目 平均值 :当纸牌数都一样多时,纸牌的数目从左向右考虑,每堆纸牌有三种状态: 1) arr[i] == 平均值,考虑arr[i+1] 2) arr[i] < ...

  7. Codevs 1066 引水入城 2010年NOIP全国联赛提高组 BFS + 贪心

    Codevs 1066 引水入城 题目上没有给出样例二,只给出了样例二的图,真是奇怪(丧心病狂). Input2: 3 6 8 4 5 6 4 4 7 3 4 3 3 3 3 2 2 1 1 2 Ou ...

  8. 1038 一元三次方程求解 2001年NOIP全国联赛提高组

    题目描述 Description 有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100 ...

  9. 【codevs 1315】1315 摆花2012年NOIP全国联赛普及组(dp)

    1315 摆花2012年NOIP全国联赛普及组  时间限制: 1 s   空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description     小明的花店新开张,为 ...

最新文章

  1. 节能信标组:让我们一起来内卷
  2. php启动提示缺失v9,phpcms程序v9提示“您要查看的信息不存在”怎么解决
  3. jwt用户注销 PHP,flask_jwt 如何实现用户注销
  4. Java 遍历指定目录下的所有目录
  5. Python Pytest装饰器@pytest.mark.parametrize多样参数化(二)
  6. oracle for net,使用Oracle Developer Tools For Visual Studio .NET-.NET教程,数据库应用
  7. .NET : 在单元测试中使用外部文件作为数据源
  8. 60-100-028-使用-MySQL 主从复制
  9. 如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证
  10. 敏捷脑图用例实践之路
  11. 抖音网红mac桌宠Desktop Goose呆头鹅的使用教程
  12. 神经网络与深度学习2
  13. [Android]OkHttp的简单封装-辅助框架
  14. Windows server 2016 安装小度WiFi网卡驱动
  15. 捷顺USB-RS485驱动
  16. Questasim覆盖率数据分析
  17. 从原理到策略算法再到架构产品看推荐系统 | 附Spark实践案例
  18. GRE词汇分类之责骂词汇
  19. python(2)提取多层嵌套列表里子元素的最大值
  20. [COPYRIGHT] 常见版权许可协议

热门文章

  1. Linux网络编程组播测试代码
  2. git 配置免密登陆
  3. ant中的table和pagination表格分页结合使用 手写分页
  4. iSCSI 2-环境搭建二
  5. [react] 组件卸载前,加在DOM元素的监听事件和定时器要不要手动清除?为什么?
  6. [react] 在React中如果去除生产环境上的sourcemap?
  7. 前端学习(2965):路由环境的搭建
  8. 工作275:表单验证重置
  9. 工作213:不能改变父组件值
  10. 前端学习(2648):vue3.0的处理展示