[NOIp2011] luogu P1314 聪明的质监员
题目描述
点进去看吧,说的不能再清楚了。
Solution
看到数据规模不难想到二分 WWW,然后用个前缀和优化一下即可。注意上下界。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define int long long
const int MAXN=200010;
int n,m,s;
int maxx=-1,minn=0x3f3f3f3f;
int ans=(int)1e17l;
int Y,cnt;
int sumn[MAXN],sumv[MAXN];
int v[MAXN],w[MAXN];
int l[MAXN],r[MAXN];
int check(int x){
Y=cnt=0;
memset(sumn,0,sizeof(sumn));
memset(sumv,0,sizeof(sumv));
for(int i=1;i<=n;i++)
{
if(w[i]>=x) sumn[i]=sumn[i-1]+1,sumv[i]=sumv[i-1]+v[i];
else sumn[i]=sumn[i-1],sumv[i]=sumv[i-1];
}
for(int i=1;i<=m;i++)
Y+=(sumn[r[i]]-sumn[l[i]-1])*(sumv[r[i]]-sumv[l[i]-1]);
cnt=abs(Y-s);
return Y>s;
}
inline int read(){
int x=0; char c;
do c=getchar(); while(c<'0'||c>'9');
while(c>='0'&&c<='9')
x=x*10+c-48,c=getchar();
return x;
}
signed main(){
n=read();m=read();s=read();
for(int i=1;i<=n;++i){
w[i]=read();v[i]=read();
maxx=max(maxx,w[i]);minn=min(minn,w[i]);
}
for(int i=1;i<=m;++i){
l[i]=read();
r[i]=read();
}
int left=minn-1,right=maxx+2,mid;
while(left<=right){
mid=(left+right)/2;
if(check(mid))
left=mid+1;
else
right=mid-1;
ans=min(ans,cnt);
}
printf("%lld",ans);
}
[NOIp2011] luogu P1314 聪明的质监员的更多相关文章
- luogu P1314 聪明的质监员 x
P1314 聪明的质监员(至于为什么选择这个题目,可能是我觉得比较好玩呗) 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自 ...
- Luogu P1314 聪明的质监员(二分+前缀和)
P1314 聪明的质监员 题意 题目描述 小\(T\)是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有\(n\)个矿石,从\(1\)到\(n\)逐一编号,每个矿石都有自己的重量\(w_i\) ...
- 【luogu P1314 聪明的质监员】 题解
题目链接:https://www.luogu.org/problemnew/show/P1314 二分答案 但是计算区间贡献的时候 直接暴力会挂 前缀和加速 #include <cstdio&g ...
- Luogu P1314 聪明的质监员 二分答案
题目链接 Solution 这个范围不是二分就是结论题就是数学题... 然后再看一会差不多就可以看出来有单调性所以就可以确定二分的解法了 二分那个$W$,用前缀和$O(n+m)$的时间来求出对答案的贡 ...
- luogu P1314 聪明的质监员
题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...
- Luogu P1314 [NOIP2011 提高组] 聪明的质监员
P1314 [NOIP2011 提高组] 聪明的质监员 题意 题目描述 给定\(n\)个物品,给定每个物品的 重量 \(w_i\) 和 价值 \(v_i\) 给定一个标准值 \(s\) 以及一个参数 ...
- P1314 聪明的质监员(前缀和+二分)
P1314 聪明的质监员 显然可以二分参数W 统计Y用下前缀和即可. #include<iostream> #include<cstdio> #include<cstri ...
- 洛谷P1314 聪明的质监员
P1314 聪明的质监员 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: ...
- NOIP2011提高组 聪明的质监员 -SilverN
题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...
随机推荐
- Winforn中实现ZedGraph自定义添加右键菜单项(附源码下载)
场景 Winform中实现ZedGraph中曲线右键显示为中文: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292 ...
- HMAC256 Token
依赖包: <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</arti ...
- 为什么StringBuilder是线程不安全的?StringBuffer是线程安全的?
面试中经常问到的一个问题:StringBuilder和StringBuffer的区别是什么? 我们非常自信的说出:StringBuilder是线程安全的,StirngBuffer是线程不安全的 面试官 ...
- StackOverflow 周报 - 第四周高质量问题的问答(Java、Python)
这是 Stack Overflow 第三周周报,由于本周周四外出,所以只有三篇内容.两篇 Java.一篇 Python.公众号「渡码」为日更,欢迎关注. DAY1. 枚举对象 == 和 equals ...
- charles 启用/禁用断点
本文参考:charles 启用/禁用断点 1.3. enable/disable breakpoints 和 2.3 breakpoints settings 断点设置是常用的了,没啥好说的了,可以设 ...
- POA理论:不要被你的目标欺骗了你
 最近通过<跃 ...
- java反射机制,以及对反射机制的了解
反射是什么?反射有什么用?我相信大家在开始学的时候都会有疑惑,直到如今我学的还不够深入只能简单的说说反射的作用,理论的我也听得很迷糊,接下来我就以几个例子来 写写反射的用处: 494696003群,有 ...
- select2获取选中的val和text
用自己起的id就可以 获取val:$("#id").val() 获取text:$("#id").select2("data")[0].tex ...
- JavaScript 类型 检测
前言 ECMAScript中有5种数据类型,分别为Number,Boolean,Null,Undifined和String,以及一种复杂的数据类型Object(由名值对组成,是这门语言所有对象的基础类 ...
- Hyper-V安装CentOS 8问题
CentOS 8 已经发布很长时间了,作为一直折腾Linux虚拟机的一员怎么少的了我. 环境&准备工作 系统:Win 10 pro 19H1 虚拟机:Hyper-V ISO:CentOS 8 ...