离散+二分+前缀和 [NOIP2011] 聪明的质监员

备战蓝桥杯,用JAVA刷洛谷算法题单:【算法2-1】前缀和、差分与离散化 阅读详情
  

[NOIP2011] 聪明的质监员

时间限制:1 s   内存限制:128 MB

【问题描述】 
小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有自己的重量wi以及价值vi。检验矿产的流程是: 
1. 给定 m个区间[Li,Ri]; 
2. 选出一个参数W; 
3. 对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi: 

Yi=∑j1×∑jvj, j∈[Li,Ri]且 wj≥W,j是矿石编号

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

Y=∑i=1mYi

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

【输入】 
输入文件 qc.in。

第一行包含三个整数n,m,S,分别表示矿石的个数、区间的个数和标准值。
接下来的n 行,每行2 个整数,中间用空格隔开,第i+1 行表示i 号矿石的重量wi 和价值vi 。
接下来的m 行,表示区间,每行2 个整数,中间用空格隔开,第i+n+1 行表示区间[Li,Ri]的两个端点Li 和Ri。注意:不同区间可能重合或相互重叠。

【输出】
输出文件名为qc.out。
输出只有一行,包含一个整数,表示所求的最小值。

【输入输出样例】

qc.in

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

qc.out

10

【输入输出样例说明】
当W 选4 的时候,三个区间上检验值分别为20、5、0,这批矿产的检验结果为25,此时与标准值S 相差最小为10。
【数据范围】
对于10%的数据,有1≤n,m≤10;
对于30%的数据,有1≤n,m≤500;
对于50%的数据,有1≤n,m≤5,000;
对于70%的数据,有1≤n,m≤10,000;
对于100%的数据,有1≤n,m≤200,000,0 < wi, vi≤10^6,0 < S≤10^12,1≤Li≤Ri≤n。

 打暴力明显能得好多分,但怎么打都得二分。一定是二分w,但如果r最先设为质量的最大值,然后暴力二分质量有点慢(但是O能过),选的w一定是一个现有质量,可以离散质量后二分下标。

  check函数里可以用前缀和维护当前区间的数量。当然也可以用莫队,(效率加了sqrt(N)),考试时打的这个,但因为有些可以不开ll的开成ll,结果被卡了常数。。我死党证明能过(他考试时同样被卡常,默契。。)

  

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#define ll long long
#define inf (ll)1000000000
using namespace std;
inline ll read()
{
    ll sum=0,f=1;char x=getchar();
    while(x<'0'||x>'9'){if(x=='-')f=-1;x=getchar();}
    while(x>='0'&&x<='9'){sum=sum*10+x-'0';x=getchar();}
    return sum*f;
}
struct Q
{
    ll l,r;
} q[200005];
ll n,m,s,v[200005],he[200005],Ha[200005],a[200005],b[200005];
ll ans=inf,h,sz,p=1;
void init()
{sort(Ha+1,Ha+n+1);sz=unique(Ha+1,Ha+n+1)-Ha-1;}
int check(int x)
{
    ll sum=0,k=0,l=1,r=0,cnt=0;
    x=Ha[x];
    a[0]=b[0]=0;
    for(int i=1;i<=n;i++)
    {
        a[i]=a[i-1];
        b[i]=b[i-1];
        if(he[i]>=x)
          a[i]+=v[i],b[i]++;
    }
    for(int i=1;i<=m;i++)
    {
        k=b[q[i].r]-b[q[i].l-1];
        cnt=a[q[i].r]-a[q[i].l-1];
        sum+=k*cnt;
    }
    if(ans==inf)ans=abs(s-sum);
    else
    ans=min(ans,abs(s-sum));
    if(sum==s)
    {
        printf("0\n");
        p=0;
        return 1;
    }
    if(sum<s)return 1;
    else return 0;
}
int main()
{
//  freopen("qc.in","r",stdin);
//  freopen("qc.out","w",stdout);
    n=read();m=read();s=read();
    for(int i=1;i<=n;i++)Ha[i]=he[i]=read(),v[i]=read();
    init();
    for(int i=1;i<=m;i++)
    {
        q[i].l=read();
        q[i].r=read();
    }
    ll l=1,r=sz,mid;
    while(l<=r)
    {
        mid=(l+r)/2;
        if(check(mid))r=mid-1;
        else l=mid+1;
        if(p==0)exit(0);
    }
    cout<<ans;
}

告别Nginx原始日志!VictoriaLogs+Grafana构建企业级应用日志分析平台实战 描述:做为一个合格的运维工程师,在面对企业安全运维管理中,日志审计是一项非常重要的工作。授人以鱼不如授人以渔,各位运友们可参照作者的方案设计,在自己的项目中根据实际情况调整落地,例如,不在仅仅采集 NGINX 应用日志,而是采集 Apache、Tomcat、SpringBoot 等多种应用服务器的日志,又如,不再仅仅采集网络设备、安全审计审计日志,而是 Windows、Linux 等多种操作系统的审计日志等,大家可充分发挥想象、实践能力,也欢迎大家在知识星球中分享自己的方案设计,一起交流学习。 阅读详情

相关推荐

科研党必备:5分钟搞定Arxiv论文批量导入NoteExpress(附PDF自动下载技巧)

本文为科研人员提供了一套高效的自动化工作流,实现从Arxiv批量检索论文、自动下载PDF到无缝导入NoteExpress的全过程。通过Python脚本和NASA ADS等工具,可大幅提升文献管理效率,特别适合需要追踪前沿动态的研究生和科研团队。

orange的博客 398

算法:二分答案和前缀和 洛谷 前缀和、差分与离散化 P1314 [NOIP 2011 提高组] 聪明的质监员

思路:通过观察发现可以用二分答案W,W范围L为重量w最小值,r为重量最大值加1,然后开始二分,check中将大于等于y的物品筛出来,放到c数组中然后求前缀和,然后相乘加起来得出答案y,然后比较y与s大小,如果y大了,那我们就要让y小一点尽量接近s,那w就要大一点,所以l=y否则同样道理。最后比较l、r哪个算出来的y更接近s。

2502_90699592的博客 227

企业微信/飞书/钉钉扫码连WiFi保姆级教程(附访客授权技巧)

本文提供了一份企业微信、飞书、钉钉扫码连接WiFi的实战部署教程。通过集成标准Radius协议与OAuth 2.0,企业可实现基于身份的无密码网络认证,并详细介绍了访客授权、权限分级等精细化管理技巧,有效提升无线网络的安全性与员工体验。

t4y5u6i7o的博客 1194

noip2011 day2-2 聪明的质监员

题目描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n 个矿石,从1 到n 逐一编号,每个矿石都有自己的重量wi 以及价值vi。检验矿产的流程是: 1、给定m 个区间[Li,Ri]; 2、选出一个参数W; 3、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi : 若这批矿产的检验结果与所给标准值S 相差太多,就需要再去检验另一批矿产。小T不想费时间

Donald_TY的专栏 1164

深入解析UDS 0x19服务:DTC状态掩码与故障诊断实战

本文深入解析了UDS诊断协议中的核心0x19服务(ReadDTCInformation),重点拆解了DTC状态掩码(DTCStatusMask)的八个状态位及其在故障生命周期中的联动逻辑。通过实战案例,详细说明了从故障发生、确认到清除的全过程,并介绍了如何利用该服务进行深度诊断,包括读取扩展数据(如冻结帧)和避免常见开发误区,是理解汽车ECU故障管理机制的关键。

weixin_29248313的博客 323

Deeplabcut实战:从数据标注到行为分析的全流程解析

本文详细解析了Deeplabcut从数据标注到行为分析的全流程实战技巧,包括项目创建、配置文件定制、智能帧提取、高效标注方法、模型训练优化以及多视角融合等高级应用。通过具体案例和实用参数配置,帮助研究者快速掌握这一行为分析工具,提升实验效率和准确性。

weixin_29057163的博客 246

洛谷-P1314 [NOIP2011 提高组] 聪明的质监员

这题亲身经历,详细介绍思路和调bug的历程,还在苦于找bug吗?l来看看我的bug也许有帮助

m0_65708726的博客 299

如何选择深度强化学习算法:MuZero/SAC/PPO/TD3/DDPG/DQN/等算法

如何选择深度强化学习算法:MuZero/SAC/PPO/TD3/DDPG/DQN/等算法

丨汀、的博客 5222

【算法2-1】前缀和、差分与离散化

洛谷算法训练

m0_54443558的博客 513

15-YOLOV8OBB损失函数详解

在Ultralytics YOLO 模型中,OBB 由YOLO OBB 格式中的四个角点表示。这样可以更准确地检测到物体,因为边界框可以旋转以更好地适应物体。其坐标在 0 和 1 之间归一化:YOLO 在内部处理损失和输出是xywhr 格式,xy表示边界框的中心点、whr表示宽度、高度和旋转角度。

zqb_123的博客 798

修复漏洞Windows 2012 Server R2(CVE-2016-2183)、(CVE-2015-2808)、(CVE-2013-2566)

【代码】修复漏洞Windows 2012 Server R2(CVE-2016-2183)、(CVE-2015-2808)、(CVE-2013-2566)

路~可以走过 2772

3028. 【NOIP2011DAY2】聪明的质监员

Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n 个矿石,从1到n 逐一编号,每个矿石都有自己的重量wi 以及价值vi。检验矿产的流程是: 1、给定m 个区间[Li,Ri]; 2、选出一个参数W; 3、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi :这个区间上所有重量大于等于W的矿石数目与它们的价值和的乘积。这批矿产的检验结果Y 为各个...

zsjzliziyang的博客 218

Rcpp简介

在数据分析时,代码的运行速率常常是我们所关心的话题之一。小Q往期的文章中也有介绍通过并行计算提升R运行速率的文章。然而R代码自身的运行速率偏慢,具有某种“先天缺陷”。因此,并行R函数的运行时间有时仍然不尽人意。本期小Q与大家分享R的另一提速方式:Rcpp之效率瓶颈突破。 1 什么是Rcpp 在往期的文章中曾讲过,我们在R中尽量采用向量化或内建函数运算,避免自编循环带来的额外时间消耗。然而,算法中有时难以避免循环,若循环部分耗时严重,直接并行含有该循环的算法显得力不从心,此时又该如何?稍有编程知识的读者可

Mrrunsen的博客 2261

前缀和与差分

学了这么多年oi,最近在打牛客比赛和往年区域赛的时候才真正感受到前缀和和差分(尤其是差分)的妙处。2022南京区域赛(好像)有道“停停,请昨日不要再重现”,那道袋鼠题就是二维查分,而当时我因为根本没有仔细了解过差分,更别说二维差分,于是题解都理解了半天。于是我痛定思痛,开始补前缀和和差分的相关题目。。题目列表:洛谷官方题单【算法2-1】前缀和、差分与离散化1、P8218 【深进1.例1】求区间和就是标准前缀和最基础的板子2、P1719 最大加权矩形二维前缀和板子。

Eureka_yzy的博客 814

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[Codevs] 1138 聪明的质监员

1138 聪明的质监员 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n 个矿石,从1到n 逐一编号,每个矿石都有自己的重量wi 以及价值vi。检...

weixin_30399821的博客 92

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

[NOIP2011]聪明的质检员

Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有自己的重量wi以及价值vi。检验矿产的流程是: 1. 给定 m个区间[Li,Ri]; 2. 选出一个参数W; 3. 对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi: 这批矿产的检验结果Y为各个区间的检验值之和。即: ...

weixin_30800807的博客 121

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

NOIP2010~2017部分真题总结

NOIP2010~2017部分真题总结 2010 (吐槽)md这个时候的联赛还只有4题吗? 引水入城 只要发现对于有合法解的地图,每个蓄水厂贡献一段区间这个结论就很好做了 那么\(O(n^3)\)对每个蓄水厂的dfs一遍,判掉有无解之后贪心线段覆盖 所以这是个爆搜+性质+贪心题? 关押罪犯 贪心+并查集 贪心显然正确,那么并查集维护一下每个点的补集就没了 机器翻译 暴力模拟 乌龟棋 dp...

213

洛谷-算法2-1-前缀和、差分与离散化1

给定由 n 个正整数组成的序列 a1​,a2​,⋯,an​ 和 m 个区间 [li​,ri​],分别求这 m 个区间的区间和。

2302_81657110的博客 541

Day1讲题题单

Day1讲题题单

Demilly123的博客 1038

NOIP考点整理

JXOI考完(其实没能考成),准备下一阶段的联赛,浏览2000年至今真题,整理考点如下: 2000: 进制转换: 进制 乘积最大: 高精度;线性DP 单词接龙: 字符串处理;搜索 2001: 砝码称重: 线性DP 一元三次方程求解: 分治 数的划分: 搜索/递推 统计单词个数: 字符串处理;线性DP Car的旅行路线: 计算几何;图论最短路 ...

weixin_30448685的博客 355

容斥原理 集合计数

问题 J: 集合计数 时间限制: 1 Sec 内存限制: 128 MB 题目描述 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~) 输入 一行两个整数N,K 输出 一行为答案。 样例输入 3 2 样例输出 6 提示 【样例说明】

蒟蒻QTY 1276

树上查分 暗之链锁

传送门         朴素版LCA就能过。。标程是树上查分,但数据很水。      标记每一条树边被虚边覆盖的次数,只有一次或零次时,砍此边才能满足,一次时只有一种,零次时有m种。      #include #include #include #include #include #define N 100000 using namespace std; int n,m,adj[N+5],

蒟蒻QTY 1061

模拟 [Sdoi2010]猪国杀

题目的可读版本有那么几个地方需要注意: 1.使用一个锦囊后,先判无懈可击。 2.如果一个猪出完一个牌后,要从头开始看哪个能出(有可能一次出牌后某只猪跳忠或者跳反了,F,K什么的就可以用了。) 3.游戏结束时,没抓的牌就不用抓了。 4.循环无懈可击 5.行末没空格昨天打的时候,有个没玩过三国杀的dalao问我能不能无懈杀。。。。 其实这种题完全没有思维含量,只要打之前把所有细节构思好,之后

蒟蒻QTY 932

模拟 blue

虽说是模拟,但没想到好思路。。。 首先是一个贪心:每只蛤向距离自己最近的一个石头跳。 然后,我们让所有能跳的蛤全跳出来(就是说,让1~D之内的石块上跳满蛤)这样我们就有了一个全是蛤的区间,维护他的左右端点的位置。 然后就要让蛤跳了。。。但首先判断:右端点的蛤能否一次跳到对岸,如果能,就没必要再浪费石头了。通过这个压缩区间,并更新答案。再然后,把这个区间从左端点到右端点,把能转移的全扔到第一个能

蒟蒻QTY 842
上一篇: 无旋treap 文艺平衡树
下一篇: 线段树 [HZOI 2015]聪聪的世界
QTY_
博客等级 码龄9年 13粉丝 211原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值