题目地址:https://www.luogu.org/problemnew/show/P1314

题目描述


小T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有 nn 个矿石,从 11到nn 逐一编号,每个矿石都有自己的重量 wiwi​ 以及价值vivi​ 。检验矿产的流程是:

1 、给定mm个区间[Li,Ri];

2 、选出一个参数W;

3 、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi​:

这批矿产的检验结果Y 为各个区间的检验值之和。即:Y1+Y2...+Ym

若这批矿产的检验结果与所给标准值S相差太多,就需要再去检验另一批矿产。小T不想费时间去检验另一批矿产,所以他想通过调整参数W 的值,让检验结果尽可能的靠近标准值S,即使得S−Y的绝对值最小。请你帮忙求出这个最小值。

输入输出格式

输入格式:

第一行包含三个整数n,m,S,分别表示矿石的个数、区间的个数和标准值。

接下来的n行,每行2个整数,中间用空格隔开,第i+1行表示ii号矿石的重量wi和价值vi。

接下来的m行,表示区间,每行2 个整数,中间用空格隔开,第i+n+1行表示区间[Li,Ri]的两个端点Li 和Ri​。注意:不同区间可能重合或相互重叠。

输出格式:

一个整数,表示所求的最小值。

输入输出样例

输入样例#1:

5 3 15
1 5
2 5
3 5
4 5
5 5
1 5
2 4
3 3 

输出样例#1:

10

解题思路:


看了大佬的题解之后豁然开朗https://www.luogu.org/problemnew/solution/P1314

对W二分,建立符合条件(w[i]>=W)的前缀和数组,psum[]和pnum[],再差分求区间【l,r】内的Y值

自己打了一下代码,有个需要注意的点:最后输出的结果是long long类型的,可能结果会非常大,以往习惯的#define inf 0x3fffffff就不再正确的,最好设成LONG_LONG_MAX(c++11好像并不支持这个方法,会编译错误),或者1e+19

ac代码:


#include <iostream>
#include <math.h>
#include <algorithm>
#define maxn 200005
#define inf LONG_LONG_MAX
typedef long long ll;
using namespace std;
ll n,m,s,le=inf,ri=-inf,sub;
ll l[maxn],r[maxn],w[maxn],v[maxn];
bool More(ll W)
{ll y=0,psum[maxn]={0},pnum[maxn]={0};sub=0;for(int i=1;i<=n;i++){if(w[i]>=W){psum[i]=psum[i-1]+v[i];//确定符合条件的前缀和数组pnum[i]=pnum[i-1]+1;}else{psum[i]=psum[i-1];pnum[i]=pnum[i-1];}}for(int i=1;i<=m;i++){y+=(psum[r[i]]-psum[l[i]-1])*(pnum[r[i]]-pnum[l[i]-1]);}sub=abs(y-s);if(y>s)return true;else return false;}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%lld %lld %lld",&n,&m,&s);for(int i=1;i<=n;i++){scanf("%lld %lld",&w[i],&v[i]);le=min(le,w[i]);ri=max(ri,w[i]);}for(int i=1;i<=m;i++)scanf("%lld %lld",&l[i],&r[i]);ll ans=inf;while(le<=ri){ll mid=(le+ri)/2;if(More(mid))le=mid+1;//增大W让y减小|y-s|减小else ri=mid-1;ans=min(ans,sub);}printf("%lld",ans);return 0;
}

【洛谷P1314】聪明的质检员(二分+前缀和+差分)相关推荐

  1. 洛谷P1314 聪明的质检员(二分)

    2020.6.13 题意,找y与给出的标准值k的差值的最小值 这道题是为数不多的好题之一.二分+bfs什么的可以练练,不过icpc不会出这么恶心的题就是了.这道题是二分专题,首先我们要找单调性,观察到 ...

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

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

  3. P1314 聪明的质监员(前缀和+二分)

    https://www.luogu.org/problem/P1314 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的 ...

  4. NOIP 2011 聪明的质检员-二分答案

    先解释一下这个式子: 就是说如果区间[Li, Ri] 中 wj>=w的个数 乘以 所有的wj>=w的价值的和. 那么我们可以二分w的值,通过Y与S的值来调整w, 具体来讲,只要当下的Y大于 ...

  5. 洛谷-P1314-聪明的质检员

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

  6. 聪明的质检员 二分验证答案

    https://www.luogu.org/problem/show?pid=1314#sub     ←  题目自己拿 QAQ 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产 ...

  7. 2021-10-09 P1314 聪明的质检员

    孱弱题解,请多支持 这题一眼望去,就可以确定:长的非常像二分答案(别问本孱弱怎么想的).于是乎,我们就去思考二分答案的3个要点: a.情况的单调性: 不难证明,当w越大时,我们的检验值y就越小.在明白 ...

  8. 【NOIP2011】聪明的质检员

    2.聪明的质检员 (qc.cpp/c/pas) 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1 到 n 逐一编号,每个矿石都有自己的重量 wi 以及价值 vi. ...

  9. 洛谷P1182 数列分段Section II 二分答案

    洛谷P1182 数列分段Section II 二分答案 题意:将 n 个 数 分为 m段 求一种方案,使这m段中最大的和 最小 额..可能有点拗口,其实就是说每一种方案,都有对应的 每段和的最大值, ...

  10. 洛谷 P2530 [SHOI2001]化工厂装箱员

    题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...

最新文章

  1. Python编译出现错误SyntaxError: Non-ASCII character '\xe7' 时解决方法
  2. php 使用sendgrid api 发送邮件_linux - 使用命令发送邮件
  3. 热部署在java中的包名_09-springboot工程中的热部署实现。
  4. Java编程比C编程好吗?《精通Unix下C语言与项目实践》读书笔记(15)
  5. javaScript实现选中文字提示新浪微博分享的效果
  6. sublime编辑器无法正常打印中文问题解决
  7. 文字生成视频,只需一步(附论文下载)
  8. The minimum required Cuda capability is 3.7.
  9. 清华大学python视频_涨见识了,清华大学全套Python579集视频教程泄露,拿走学去吧...
  10. Python 2.x vs Python 3.x(四)—— TypeError: unhashable type
  11. 计算机网络比特是什么,计算机网络
  12. Unity3D 官方资源包Standard Assets导入
  13. python小欢喜(八)俄罗斯方块 (12) 添加游戏音效
  14. c++基础--另类的分支结构
  15. 台式计算机组装攻略,台式机如何组装 电脑组装详细步骤【图文】
  16. Pygame实战:这种“欢乐打地鼠”小游戏让几亿人“上瘾“
  17. Unity镜头特写效果
  18. html5妇女节游戏,html5开发三八女王节表白神器
  19. 人工智能专业计算机毕业设计选题推荐
  20. 卓越电脑定时关机软件

热门文章

  1. 常见的资源记录类型及应用示例
  2. [翻译]Chameleon介绍(6) : 动作控件
  3. nvidia ubuntu 驱动升级_解决 Ubuntu 在启动时冻结的问题
  4. php函数获取数据库中的表格,初步了解PHP获取数据库表信息函数_PHP教程
  5. linux筛选方式,使用grep实现精确过滤的五种方法
  6. [转]Vue基于vue-quill-editor富文本编辑器使用心得
  7. Wyn Enterprise 核心功能:易用至极的自助式BI和数据分析工具
  8. ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
  9. 知产新观察 | 商家要敢于向知产流氓及恶意投诉说不!
  10. 前端每日实战:98# 视频演示如何用纯 CSS 创作一只愤怒小鸟中的绿猪