首页 > 其他分享 >P1314 [NOIP2011 提高组] 聪明的质监员

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

时间:2024-11-18 23:00:42浏览次数:1  
标签:NOIP2011 ll 质监 矿石 检验 矿产 P1314 maxn 区间

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

# [NOIP2011 提高组] 聪明的质监员

题目描述

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

  1. 给定 个区间
  2. 选出一个参数
  3. 对于一个区间 ,计算矿石在这个区间上的检验值

其中 为矿石编号。

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

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

输入格式

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

接下来的 行,每行两个整数,中间用空格隔开,第 行表示 号矿石的重量 和价值

接下来的 行,表示区间,每行两个整数,中间用空格隔开,第 行表示区间 的两个端点 。注意:不同区间可能重合或相互重叠。

输出格式

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

样例 #1

样例输入 #1

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

样例输出 #1

10

提示

【输入输出样例说明】

的时候,三个区间上检验值分别为 ,这批矿产的检验结果为 ,此时与标准值 相差最小为

【数据范围】

对于 的数据,有

对于 的数据,有

对于 的数据,有

对于 的数据,有

对于 的数据,有

题解

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=200010;
struct re{
    ll left,right;
}section[maxn];
ll n,m,s,v[maxn],w[maxn],i,j,sum1[maxn],sum2[maxn];
ll now;
ll ab(ll c)
{
    return c>0 ? c : -c ;
}
void look_up(ll l,ll r)
{
    if(l==r)return;
    ll mid=(l+r)/2;
    memset(sum1,0,sizeof(sum1));
    memset(sum2,0,sizeof(sum2));
    for(i=1;i<=n;i++)
    {
        sum1[i]=sum1[i-1];
        sum2[i]=sum2[i-1];
        if(w[i]>=mid)
        {
            sum1[i]++;
            sum2[i]+=v[i];
        }
    }
    ll Y=0;
    for(i=1;i<=m;i++)
    {
        Y+=(sum1[ section[i].right ]-sum1[ section[i].left-1 ])*(sum2[ section[i].right ]-sum2[ section[i].left-1 ]);
    }
    if(ab(s-Y)<ab(s-now))now=Y;
    if(s>Y)look_up(l,mid);
    if(s==Y)
    {
        now=s;
        return;
    }
    if(s<Y)look_up(mid+1,r);
}
int main()
{
    scanf("%lld%lld%lld",&n,&m,&s);
    for(i=1;i<=n;i++)scanf("%lld%lld",&w[i],&v[i]);
    for(i=1;i<=m;i++)scanf("%lld%lld",§ion[i].left,§ion[i].right);
    look_up(1,100000);
    printf("%lld",ab(s-now));
    return 0;
}

 

标签:NOIP2011,ll,质监,矿石,检验,矿产,P1314,maxn,区间
From: https://www.cnblogs.com/letgogogogo/p/18553918

相关文章

  • 聪明的质监员
    [NOIP2011提高组]聪明的质监员题目描述小T是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有\(n\)个矿石,从\(1\)到\(n\)逐一编号,每个矿石都有自己的重量\(w_i\)以及价值\(v_i\)。检验矿产的流程是:给定$m$个区间\([l_i,r_i]\);选出一个参数\(W\);对......
  • luogu P1314 聪明的质监员
    [NOIP2011提高组]聪明的质监员题目描述小T是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有\(n\)个矿石,从\(1\)到\(n\)逐一编号,每个矿石都有自己的重量\(w_i\)以及价值\(v_i\)。检验矿产的流程是:给定$m$个区间\([l_i,r_i]\);选出一个参数\(W\);对......
  • CSP/信奥赛C++语法基础刷题训练(10):洛谷P1307:[NOIP2011 普及组] 数字反转
    CSP/信奥赛C++语法基础刷题训练(10):洛谷P1307:[NOIP2011普及组]数字反转题目描述给定一个整数NNN,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,......
  • 题解 洛谷 Luogu P1308 [NOIP2011 普及组] 统计单词数 C++
    题目传送门:P1308[NOIP2011普及组]统计单词数-洛谷|计算机科学教育新生态https://www.luogu.com.cn/problem/P1308getline() 会清除使当次getline() 终止的换行,而cin 不会因此cin 以换行终止,之后还需要getline()的话,需要用getchar() 吞换行Linux的一些相......
  • ChatGPT、Python和OpenCV支持下的空天地遥感数据识别与计算(地质监测、城市规划、农业
    在科技飞速发展的时代,遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究,空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。原文链接:ChatGPT、Python和OpenCV支持下的空天地遥感数据识别与计算(地质监测、城市规划、......
  • 基于stm32的水质监测检测物联网单片机软硬件设计毕业生系统
    (1)硬件端STM32F103C8T6:用于所有程序的中控和模块数据通信;0.96寸OLDE:用于显示当前当前ph值、当前tds值,最上方显示游泳池水质检测;蜂鸣器与LED:用于设备报警和状态提示;Wife模块:用于设备联网,实现远程APP查看;超声波模块:使用超声波测距,实时回传测定的水位线;按键模块:用于调整限值数据,......
  • [题解]P1311 [NOIP2011 提高组] 选择客栈
    P1311[NOIP2011提高组]选择客栈P6032选择客栈加强版只要\([l,r]\)区间之内存在一个\(i\)使得\(w[i]\lep\),这个区间就是符合条件的。所以我们遍历每一个元素\(i\),根据贪心的思想我们维护\([1,i]\)区间内满足\(w[i]\lep\)的最大\(i\),记为\(mp\)。对于每个元素\(i\),寻找\(......
  • P1307 [NOIP2011 普及组] 数字反转
    P1307[NOIP2011普及组]数字反转提交483.96k通过196.21k时间限制1.00s内存限制128.00MB提交答案加入题单做题计划(首页)个人题单团队题单保存题目提供者CCF_NOI难度入门历史分数0 提交记录  查看题解标签NOIp普及组2011 查看算法标签进入讨论版相关讨论......
  • 【题解】【模拟,字符串】—— [NOIP2011 普及组] 统计单词数
    【题解】【字符串】——[NOIP2011普及组]统计单词数[NOIP2011普及组]统计单词数题目描述输入格式输出格式输入输出样例输入#1输出#1输入#2输出#2提示1.思路解析2.AC代码[NOIP2011普及组]统计单词数通往洛谷的传送门题目描述一般的文本编辑器都有查找......
  • 【开题报告】基于Springboot+vue基于物联网的湖区水质监测系统(程序+源码+论文) 计算机
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着工业化与城市化进程的加速,湖泊作为自然生态系统的重要组成部分,其水质状况日益受到人类活动的影响,面临着富营养化、重金属污染、有机物污染等多重......