$Noip2011/Luogu1314$ 聪明的质监员 二分+巧妙前缀和
$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;
}
随机推荐
- shell 解析json
未完待续 ### 解析api json文件为csv文件 cd /api ` do id=$(echo ${i}|sed 's/.html//') echo -n "${id}|" ...
- LRJ-Example-06-01-Uva210
#define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstdlib> #include <cstrin ...
- 【a503】圆排列问题
Time Limit: 1 second Memory Limit: 32 MB [问题描述] 给定n个大小不等的圆c1,c2,...., cn,现要将这n个圆排列进一个矩形框中,且要求各圆与矩形框的 ...
- SpringBoot2.0--- 多数据源配置
在开发的过程中我们可能都会遇到对接公司其他系统等需求,对于外部的系统可以采用接口对接的方式,对于一个公司开发的两个系统,并且知道相关数据库结构的情况下,就可以考虑使用多数据源来解决这个问题.Spr ...
- Spring的注解@Qualifier注解
@Qualifier注解了,qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,我们修改调用代码,添加@Qualifier注解,需要注意的是@Qualifier的参数名称 ...
- landi pos机
2015年3月:联迪商用获得2014-2015中国金融POS机市场年度成功企业奖: 2014年5月:联迪商用入选2013年福州市纳税百强企业: 2013年12月:联迪商用入选2013年度中国电子商务物 ...
- UVA 11107 Life Forms——(多字符串的最长公共子序列,后缀数组+LCP)
题意: 输入n个序列,求出一个最大长度的字符串,使得它在超过一半的DNA序列中连续出现.如果有多解,按照字典序从小到大输出所有解. 分析:这道题的关键是将多个字符串连接成一个串,方法是用不同的分隔符把 ...
- [转]分布式监控工具Ganglia 介绍 与 集群部署.
如果你目的很明确就是冲着标题来的,不爱看我唠叨,请直接进入第二个分割线之后的内容. 其实之前就是有做Swift监控平台的打算的,但是因为没什么硬性需求么,也不要紧的,就一直搁置了.最近实验室来了个大二 ...
- H3C RIPv1的缺点
- java 泛型的嵌套(map例子)
package july7; //泛型加Map的输出! import java.util.Iterator; import java.util.Map; import java.util.Map.En ...