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

聪明的质监员

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(2634):修改webstrom颜色

默认的WebStorm的背景色是纯白色&#xff0c;这种颜色更容易让你引起眼部疲劳。

前端学习(2635):vs 需要插件下载

常用的插件主要有以下&#xff1a; chinese 中文简体安装包 Vetur 语法高亮、智能感知 Vscode-icons 目录树图标 Auto Close 自动添加HTML / XML关闭标签 Beautify 格式化javascript&#xff0c;JSON&#xff0c;CSS&#xff0c;Sass&#xff0c;和HTM css Peek 可以查看CSS ID…

工作137:map函数

1状态管理定义 2设置数值

工作138:git使用

可以直接拉取代码

Activity嵌套fragment大全,activity加载单个fragment,TabLayout+ViewPager实现多个fragment滑动效果

加载单个fragment效果 头部标题多个fragment 底部标题按钮多个fragment 底部标题按钮多个fragment FragmentPagerAdapter实现&#…

实验二实验报告

实验过程 实验2.1 实验内容&#xff1a; 参考教材p375,完成链树LinkedBinaryTree的实现&#xff08;getRight,contains,toString,preorder,postorder&#xff09;用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试&#xff0c;提交测试代码运行截图&#xff0c;要全…

jmeter之录制控制器与代理的使用

jmeter之录制控制器与代理的使用 1. 先启动jmeter&#xff0c;在测试计划中添加线程组 2. 选中线程组右键添加&#xff0c;在配置元件中点击HTTP请求默认值 3. 选中线程组右键添加&#xff0c;在逻辑控制器中点击录制控制器 4. 工作台中&#xff0c;右…

为什么要进行归一化处理?(从寻找最优解这个角度讨论)

例子 假定为预测房价的例子&#xff0c;自变量为面积&#xff0c;房间数两个&#xff0c;因变量为房价。 那么可以得到的公式为&#xff1a; 其中代表房间数&#xff0c;代表变量前面的系数。 其中代表面积&#xff0c;代表变量前面的系数。 首先我们祭出两张图代表数据是否均一…

redis安装笔记

下载redis 官网下载地址&#xff1a;http://redis.io/download github下载地址&#xff1a;https://github.com/MSOpenTech/redis/tags 根据系统版本下载对应版本&#xff0c;下载完放置你要放的盘 然后cmd进入命令行&#xff0c;进入redis目录&#xff0c;然后输入启动命令 re…

vscode 配置 路径别名 @

为了保证多个项目复用代码&#xff0c;我喜欢把路径别名设置为&#xff0c;下面介绍vscode中的配置方法。 1、安装插件Path Intellisense 2、配置 "path-intellisense.mappings": {"": "${workspaceRoot}/src" }3、在项目package.json所在同级…

小程序 canvas 设置 字体 字号加粗

之前的版本使用 现在直接使用CanvasContext.font即可 例如 this.ctx2.font normal bold 40px sans-serif;

关于小码哥kylin

技术格言: 用双手改变人生,用代码改变世界! 个人网站:http://www.isainttech.com QQ:56619556 Email:dragonsaintqq.com 微信:kylin10219556 Kylin开发技术交流群:540749978 转载于:https://www.cnblogs.com/kylinsblog/p/7760383.html

小程序 mpvue 使用canvas绘制环形图表

本来想用css3来实现&#xff0c;发现轮廓边上残影严重&#xff0c;所以直接用小程序的canvas使用来。 最终效果如下&#xff1a; 我的整页代码如下&#xff0c;里面已经写出备注来。 <template><div class"statistic"><canvas canvas-id"runCa…

简书搜索爬虫

这期的爬虫是爬取“简书”的搜索结果页&#xff0c;篇幅将会分为两部分来写&#xff0c;第一部分是爬虫部分&#xff0c;主要涉及搜索文章的提取和数据保存&#xff0c;第二部分涉及基本的数据分析和可视化&#xff0c;本篇文章属于爬虫篇。 爬虫源代码 首先看一下整个爬虫的源…

js的加密和解密

最近在研究js的加密和解密的问题&#xff0c;上网上搜出来很多方法&#xff0c;不过不知道到底哪一个会比较管用。这里是今天找到的一些关于base64加密解密的js代码&#xff0c;已经经过试验&#xff0c;可以使用&#xff0c;不过网上很多加密解密的工具&#xff0c;这种方式加…

TCP/IP协议三次握手与四次握手流程解析

一、TCP报文格式TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图&#xff1a;图1 TCP报文格式上图中有几个字段需要重点介绍下&#xff1a;&#xff08;1&#xff09;序号&#xff1a;Seq序号&#xff0c;占32位&#xff0c;用来标识从TCP源端向目的端…