$Luogu$

$Sol$

首先$W$一定是某个$w_i$.于是一种暴力方法就出炉了,枚举$W$再计算.

注意到,满足$S-Y$的绝对值最小的$Y$只可能是两种,一种是$<S$的最大的$Y$,一种是$>S$的最小的$Y$.那就分别求出来叭.分别求的时候这个$W$的值是可以二分的.但是这样并不能$A$掉这题,因为$check$的复杂度仍然是$O(NM)$的.看了题解之后发现$check$可以用前缀和吖,觉得很巧妙$qwq$.这样下来$check()$的复杂度变成$O(N+M).$

$Code$

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;++i)
#define yes(i,a,b) for(Rg int i=a;i>=b;--i)
#define mem(a,b) memset(a,b,sizeof(a))
#define int long long
#define db double
#define inf 2147483647
using namespace std;
il int read()
{
Rg int x=0,y=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
return x*y;
}
const int N=200010;
int n,m,S,as,minw=inf,maxw,sn[N],sv[N];
struct nd1{int w,v;}a[N];
struct nd2{int l,r;}b[N];
il int calc(int x)
{
Rg int ret=0;
mem(sn,0);mem(sv,0);
go(i,1,n)
if(a[i].w>=x)sn[i]=sn[i-1]+1,sv[i]=sv[i-1]+a[i].v;
else sn[i]=sn[i-1],sv[i]=sv[i-1];
go(i,1,m)
{
Rg int l=b[i].l,r=b[i].r;
ret+=(sn[r]-sn[l-1])*(sv[r]-sv[l-1]);
}
return ret;
}
il int ef1()
{
Rg int l=minw,r=maxw,mid,y,ret;
while(l<=r)
{
mid=(l+r)>>1;
y=calc(mid);
if(y<=S)ret=y,r=mid-1;
else l=mid+1;
}
return ret;
}
il int ef2()
{
Rg int l=minw,r=maxw,mid,y,ret;
while(l<=r)
{
mid=(l+r)>>1;
y=calc(mid);
if(y>=S)ret=y,l=mid+1;
else r=mid-1;
}
return ret;
}
main()
{
n=read(),m=read(),S=read();
go(i,1,n)a[i]=(nd1){read(),read()},minw=min(minw,a[i].w),maxw=max(maxw,a[i].w);
go(i,1,m)b[i]=(nd2){read(),read()};
Rg int y1=ef1(),y2=ef2();
as=min(abs(y1-S),abs(y2-S));
printf("%lld\n",as);
return 0;
}

随机推荐

  1. Mysql 数据库优化(一)

    一 避免网页访问错误 1  数据库连接timeout产生页面5xx错误 2 慢查询造成页面无法加载 3 阻塞造成数据无法提交 二 增加数据库的稳定性 三 优化用户体验 1 流畅的页面访问速度 2 良好 ...

  2. Hadoop入门进阶步步高(三)-配置Hadoop

    三.配置Hadoop 1.设置$HADOOP_HOME/conf/hadoop-env.sh 这个文件里设置的是Hadoop运行时须要的环境变量,在1.2.1版中共同拥有19个环境变量.例如以下:   ...

  3. C++笔记:面向对象编程(Handle类)

    句柄类 句柄类的出现是为了解决用户使用指针时须要控制指针的载入和释放的问题. 用指针訪问对象非常easy出现悬垂指针或者内存泄漏的问题. 为了解决这些问题,有很多方法能够使用,句柄类就是当中之中的一个 ...

  4. 学linux内核与学linux操作系统有什么区别!?

    linux内核包括:进程管理,存储管理,IO管理,文件系统等功能.linux操作系统则是linux内核再加上像shell或图形界面和其他的实用软件,比内核庞大的多.建议先学shell命令和linux下 ...

  5. Android Studio(四):Android Studio集成Genymotion

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  6. Project Euler Problem 8-Largest product in a series

    直接暴力 写完才想到,代码写矬了,扫一遍就出结果了,哪还用我写的这么麻烦 ss = '''73167176531330624919225119674426574742355349194934 9698 ...

  7. 原生_H5交互插件(适用于与V2.1)

    这是js代码 /* * 适合版本为 2.1.0 * 前提是url上加 from=app */ var Native = {}; var ua = navigator.userAgent; var oU ...

  8. linux初始化中的错误处理

    你必须记住一件事, 在注册内核设施时, 注册可能失败. 即便最简单的动作常常需要内存 分配, 分配的内存可能不可用. 因此模块代码必须一直检查返回值, 并且确认要求的操作 实际上已经成功. 如果在你注 ...

  9. 2018-8-10-win10-uwp-商业游戏-1.2.1

    title author date CreateTime categories win10 uwp 商业游戏 1.2.1 lindexi 2018-08-10 19:16:50 +0800 2018- ...

  10. HDU6383p1m2(二分)

    补个题.. 传送门 点我 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)To ...