题目链接:传送门

题目大意:给你n个物品,每件物品有重量 W 和价值 V,给m个区间,和一个标准值。(n,m最大200000)

     要求找到一个值x,使得m个所有区间的权值和与标准值的差的绝对值最小。单个区间权值计算公式(数目num=0,价值sum=0,若满足 Wi >= x ,则++num,sum+=Vi)

     单个区间权值为num*sum

题目思路: 二分+前缀和

   首先权值和与X是递减关系,X越大所得值越小,我们容易想到二分,但是m个区间的比较判断怎么处理,如果直接模拟,复杂度最大可达 n^2logn 显然不行

     其实我们可以,用前缀和的想法,用一个数组num 表示1~i 满足W>=x的个数,sum对应为满足条件的W对应的V之和,那么对于区间我们可直接O(1)得值

     每次前缀处理O(n) ,所以总复杂度 nlogn ,还有此题需用long long 不然WA

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <cctype>
#include <queue>
#include <string>
#include <vector>
#include<functional>
#include <set>
#include <map>
#include <climits>
#define lson root<<1,l,mid
#define rson root<<1|1,mid+1,r
#define fi first
#define se second
#define ping(x,y) ((x-y)*(x-y))
#define mst(x,y) memset(x,y,sizeof(x))
#define mcp(x,y) memcpy(x,y,sizeof(y))
using namespace std;
#define gamma 0.5772156649015328606065120
#define MOD 1000000007
#define inf 0x3f3f3f3f
#define N 200005
#define maxn 10000500
typedef pair<int,int> PII;
typedef long long LL; LL n,m;
LL k,sta,l=-,r,ans=1ll<<;
struct Node{
LL x,v;
}node[N];
struct Seg{
LL x,y;
}seg[N];
LL num[N],sum[N];
bool match(LL x){
for(LL i=;i<=n;++i){
num[i]=num[i-];sum[i]=sum[i-];
if(node[i].x>=x){++num[i];sum[i]+=node[i].v;}
}
LL temp=;
for(LL i=;i<=m;++i){
LL t1=seg[i].x,t2=seg[i].y;
temp+=(sum[t2]-sum[t1-])*(num[t2]-num[t1-]);
}
temp=temp-sta;
ans=min(ans,llabs(temp));
return temp>=;
}
int main(){
LL i,j,v;
scanf("%lld%lld%lld",&n,&m,&sta);
for(i=;i<=n;++i){scanf("%lld%lld",&node[i].x,&node[i].v);r=max(r,node[i].x);}
for(i=;i<=m;++i){scanf("%lld%lld",&seg[i].x,&seg[i].y);}
++r;
while(l<=r){
LL mid=l+r>>;
if(match(mid)){
l=mid+;
}
else r=mid-;
}
printf("%lld\n",ans);
return ;
}

vijos P1740 聪明的质检员的更多相关文章

  1. Vijos P1740聪明的质检员

    题目 描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是:1.给定m个区间[Li,Ri]:2. ...

  2. Luogu 1314 【NOIP2011】聪明的质检员 (二分)

    Luogu 1314 [NOIP2011]聪明的质检员 (二分) Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有 ...

  3. [NOIP 2011] 聪明的质检员

    聪明的质检员 描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是:1.给定m个区间[Li,Ri ...

  4. [NOIP2011] 聪明的质检员(二分答案)

    题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...

  5. NOIP2015聪明的质检员[二分 | 预处理]

    背景 NOIP2011 day2 第二题 描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿 ...

  6. 洛谷 [P1314] 聪明的质检员(NOIP2011 D2T2)

    ###一道二分答案加前缀和### 题目中已经暗示的很明显了 "尽可能靠近" " 最小值" 本题的主要坑点在于 long long 的使用 ##abs函数不支持l ...

  7. luogu 1314 聪明的质检员

    二分答案的边界问题还是要注意 double挨着,int+1-1, 此题用到long long,所以初始化ans要足够大,前缀和优化 依然根据check答案大小左右mid,虽然有s,但是有了+1-1加持 ...

  8. [NOIP2011]聪明的质检员

    [问题描述] 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有$n$个矿石,从 1 到$n$逐一编号,每个矿石都有自己的重量$w_i$以及价值$v_i$.检验矿产的流程是: 1. 给 ...

  9. LuoguP1314 聪明的质检员 【二分答案/前缀和】

    美丽的题号预示着什么... 描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是: 1.给定m个 ...

随机推荐

  1. Java Collection之Queue具体解释及用途

    Queue是一种常见的数据结构,其主要特征在于FIFO(先进先出),Java中的Queue是这样定义的: public interface Queue<E> extends Collect ...

  2. EMQ 学习---订阅$SYS主题,捕获客户端上下线消息

    acl.config文件定义了可订阅$SYS主题的权限. {allow, {user, "dashboard"}, subscribe, ["$SYS/#"]} ...

  3. 1-wire单总线DS18B20

    要想实现单总线通信,每一个挂在总线上的从机必须拥有开路或3态输出.单总线DS18B20的DQ引脚用内部电路实现了开漏输出,其等效电路如下图: 当单片机IO引脚配置为 mcu IO引脚 电流流向 DS1 ...

  4. ios的设计原则

    ios的设计原则 iOS设计的详细的主要宗旨例如以下: 1.易操作,所关心的主题清新 2.UI控件布局合理,图片质量清新 3.用户的使用习惯 4.字体的大小,主次分明 5.舒适的动画效果 在创建一个新 ...

  5. makefile之变量

    1 变量的定义 A variable is a name defined in a makefile to represent a string of text, called the variabl ...

  6. 使用tar+lz4/pigz+ssh更快的数据传输

    使用tar+lz4/pigz+ssh更快的数据传输 -- | :41分类:Linux,MySQL | 前面一篇介绍了如何最大限度的榨取SCP的传输速度,有了这个基础,就可以进一步的使用压缩来加速传输速 ...

  7. Android App常规测试内容

    转自:https://mp.weixin.qq.com/s?__biz=MzU0NjcyNDg3Mw==&mid=2247484053&idx=1&sn=116fe8c7eed ...

  8. perl基础01

    参考:Perl教程 1.Perl简介 Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall设计的. Perl具有高级语言的强大能 ...

  9. CCNA2.0笔记_HSRP

    什么是HSRP协议? HSRP也叫热备份路由协议,即第一跳冗余协议,第一跳实际就是网关.从而实现网关的冗余和自动切换.该协议确保了当网络边缘设备或接入链路出现故障时,用户通信能迅速并透明地恢复,并以此 ...

  10. AdapterView 和 RecyclerView 的连续滚动

    AdapterView 和 RecyclerView 的连续滚动 android RecyclerView tutorial 概述 ListView 和 GridView 的实现方式 Recycler ...