题目链接:https://www.luogu.org/problemnew/show/P1314

二分答案

但是计算区间贡献的时候 直接暴力会挂

前缀和加速

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
const int maxn = 2000000 + 10;
ll w[maxn], v[maxn], pren[maxn], prev[maxn], l[maxn], r[maxn], n, m, S;
ll maxw = -9999999999999, minw = 9999999999999, ans = 9999999999999, now;
bool check(int W)
{
ll Y = 0;
memset(pren, 0, sizeof(pren));
memset(prev, 0, sizeof(prev));
for(int i = 1; i <= n; i++)
{
if(w[i] > W) pren[i] = pren[i-1] + 1, prev[i] = prev[i-1] + v[i];
else pren[i] = pren[i-1], prev[i] = prev[i-1];
}
for(int i = 1; i <= m; i++)
Y += (pren[r[i]] - pren[l[i]-1])*(prev[r[i]] - prev[l[i]-1]);
now = abs(Y-S);
if(Y > S) return true;
return false;
}
int main()
{
scanf("%lld%lld%lld",&n,&m,&S);
for(int i = 1; i <= n; i++)
{
scanf("%lld%lld",&w[i],&v[i]);
maxw = max(w[i], maxw);
minw = min(w[i], minw);
}
for(int i = 1; i <= m; i++)
scanf("%lld%lld",&l[i],&r[i]);
ll left = minw - 1, right = maxw + 2, mid;
while(left <= right)
{
int mid = (left + right)>>1;
if(check(mid)) left = mid + 1;
else right = mid - 1;
if(ans > now) ans = now;
}
printf("%lld",ans);
}

【luogu P1314 聪明的质监员】 题解的更多相关文章

  1. luogu P1314 聪明的质监员 x

    P1314 聪明的质监员(至于为什么选择这个题目,可能是我觉得比较好玩呗) 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自 ...

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

    P1314 聪明的质监员 题意 题目描述 小\(T\)是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有\(n\)个矿石,从\(1\)到\(n\)逐一编号,每个矿石都有自己的重量\(w_i\) ...

  3. 洛谷P1314 聪明的质监员 题解

    题目 聪明的质监员 题解 这道题和之前Sabotage G的那道题类似,都是用二分答案求解(这道题还要简单一些,不需要用数学推导二分条件,只需简单判断一下即可). 同时为了降低复杂度,肯定不能用暴力求 ...

  4. Luogu P1314 聪明的质监员 二分答案

    题目链接 Solution 这个范围不是二分就是结论题就是数学题... 然后再看一会差不多就可以看出来有单调性所以就可以确定二分的解法了 二分那个$W$,用前缀和$O(n+m)$的时间来求出对答案的贡 ...

  5. luogu P1314 聪明的质监员

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

  6. [NOIp2011] luogu P1314 聪明的质监员

    题目描述 点进去看吧,说的不能再清楚了. Solution 看到数据规模不难想到二分 WWW,然后用个前缀和优化一下即可.注意上下界. #include<cstdio> #include& ...

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

    P1314 聪明的质监员 显然可以二分参数W 统计Y用下前缀和即可. #include<iostream> #include<cstdio> #include<cstri ...

  8. 洛谷P1314 聪明的质监员

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

  9. luoguP1314 聪明的质监员 题解(NOIP2011)

    P1314 聪明的质监员 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include< ...

随机推荐

  1. React.js 小书 Lesson17 - 前端应用状态管理 —— 状态提升

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson17 转载请注明出处,保留原文链接和作者信息. 上一个评论功能的案例中,可能会有些同学会对一个 ...

  2. Python编码规范杂记(很乱:))

    Python编码规范 导入模块 每一个(第三方)模块的导入都需要两个import语句, 如下 使用import some的方式导入模块, 如果有还有子模块的话, 则from father.son im ...

  3. 中文输入法无法在 QtCreator(Linux) 中输入汉字

    中文输入法无法在 QtCreator(Linux) 中输入汉字 环境 system: Deepin 15.7 Qt Creator 4.7.0 (GCC 5.3.1) 解决方法 下载 fcitx-qt ...

  4. 从零实现一个简易jQuery框架之一—jQuery框架概述

    我们知道,不管学习任何一门框架,了解其设计的理念.目的.总体的结构及核心特性对我们使用和后续的深入理解框架都是有很大的帮助的.因此在这里先梳理一下本人对jQuery框架的一些理解. 设计目的(为什么要 ...

  5. bootstrap dialog对话框,完成操作提示框

    1. 依赖文件: bootstrap.js bootstrap-dialog.js bootstrap.css bootstrap-dialog.css 2.代码 BootstrapDialog.co ...

  6. mvc 中Request[""]与Request.QueryString[""]

    1.Request[""]与Request.QueryString[""]获取不到值时返回null: 2.Request[""]与Reque ...

  7. 【Q】类和对象:游戏角色开发(角色介绍)

    案例情景:某公司要开发新游戏,请用面向对象的思想设计英雄类.怪物类和武器类. 编写测试类,创建英雄对象.怪物对象和武器对象,并输出各自的信息. 其中设定分别如下: 1.英雄类 属性:英雄名字.生命值. ...

  8. win10 MySQL8.0 zip包安装及问题解决

    1.在官网下载zip包 https://dev.mysql.com/downloads/mysql/ 2.将zip包解压到自己的工作目录中 3.配置环境变量 1)添加环境变量 MYSQL_HOME E ...

  9. 关于js 中函数的参数

    var a = 100; function test(a){ a++; //a(形参)是局部变量 console.log(a); } test(a); console.log(a); //结果是 10 ...

  10. Android NestedScrollView与RecyclerView嵌套,以及NestedScrollView不会滚动到屏幕顶部解决

    ①NestedScrollView与RecyclerView嵌套,导致滚动惯性消失 解决:mRecyclerView.setNestedScrollingEnabled(false); ②Nested ...