聪明的质检员(二分答案)
来源:互联网 发布:天刀男角色的捏脸数据 编辑:程序博客网 时间:2024/04/28 16:36
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxn=200010;
ll n,m,s,w[maxn],v[maxn],l[maxn],r[maxn],now[maxn],now1[maxn];
ll check(ll x){
ll num=0,cnt=0;
for(int i=1;i<=n;i++) now[i]=0;
for(int i=1;i<=n;i++) now1[i]=0;
for(int i=1;i<=n;i++){
now[i]=now[i-1]; now1[i]=now1[i-1];
if(w[i]>=x){
++now[i];
now1[i]+=v[i];
}
}
for(int i=1;i<=m;i++){
num+=(now1[r[i]]-now1[l[i]-1])*(now[r[i]]-now[l[i]-1]);
}
return num;
}
inline ll read(){
ll num=0,f=1; char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar();
return num;
}
int main(){
scanf("%lld%lld%lld",&n,&m,&s);
for(int i=1;i<=n;i++){
w[i]=read(),v[i]=read();
}
for(int i=1;i<=m;i++){
l[i]=read(),r[i]=read();
}
ll l=0,r=1000000000000,ans=1000000000000;
while(l<=r){
ll mid=l+(r-l)/2,cur=check(mid);
if(cur>s){
l=mid+1;
ans=min(ans,abs(cur-s));
}
else if(cur<s){
r=mid-1;
ans=min(ans,abs(cur-s));
}
else{
ans=0; break;
}
}
cout<<ans<<endl;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxn=200010;
ll n,m,s,w[maxn],v[maxn],l[maxn],r[maxn],now[maxn],now1[maxn];
ll check(ll x){
ll num=0,cnt=0;
for(int i=1;i<=n;i++) now[i]=0;
for(int i=1;i<=n;i++) now1[i]=0;
for(int i=1;i<=n;i++){
now[i]=now[i-1]; now1[i]=now1[i-1];
if(w[i]>=x){
++now[i];
now1[i]+=v[i];
}
}
for(int i=1;i<=m;i++){
num+=(now1[r[i]]-now1[l[i]-1])*(now[r[i]]-now[l[i]-1]);
}
return num;
}
inline ll read(){
ll num=0,f=1; char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') num=num*10+ch-'0',ch=getchar();
return num;
}
int main(){
scanf("%lld%lld%lld",&n,&m,&s);
for(int i=1;i<=n;i++){
w[i]=read(),v[i]=read();
}
for(int i=1;i<=m;i++){
l[i]=read(),r[i]=read();
}
ll l=0,r=1000000000000,ans=1000000000000;
while(l<=r){
ll mid=l+(r-l)/2,cur=check(mid);
if(cur>s){
l=mid+1;
ans=min(ans,abs(cur-s));
}
else if(cur<s){
r=mid-1;
ans=min(ans,abs(cur-s));
}
else{
ans=0; break;
}
}
cout<<ans<<endl;
return 0;
}
阅读全文
1 0
- 聪明的质检员(二分答案)
- NOIP2011提高组 聪明的质检员(二分答案)
- 【二分】聪明的质检员
- 【NOIP 2011 Day2 T2】聪明的质检员(二分)
- 洛谷P1314聪明的质检员(二分)
- 【二分】NOIP2011聪明的质检员
- 【NOIP2011】聪明的质检员 二分
- NOIP2011 聪明的质检员 二分
- #NOIP2011#聪明的质检员(二分)
- 聪明的质检员
- 聪明的质检员
- 聪明的质检员
- [二分]NOIP2011 day2 T2 聪明的质检员
- [NOIP 2011]聪明的质检员 二分+前缀和
- [NOIP 2011] 聪明的质检员:二分,前缀和
- CODE[VS] 1138 聪明的质检员 二分+前缀和
- NOIP2011 聪明的质检员
- 【NOIP2011】聪明的质检员
- bzoj 2754: [SCOI2012]喵星球上的点名
- HttpServlet工具类
- 排序算法@c++描述-堆排序
- Java之线程Thread
- BZOJ 4423 Bytehattan (对偶图 并查集)
- 聪明的质检员(二分答案)
- 【笔记+例题】 尺取法
- maven web项目使用jetty插件启动的配置
- Mybatis介绍
- 一个可通过UDP和TCP套接字连接的回显服务器
- OpenGL从1.0开始--颜色调和
- 在 mac 如何使用rz和sz上传和下载文件呢
- NOIP模拟(11.03)T3 边的处理
- 如何创建主键自增表