题目链接

Solution

这个范围不是二分就是结论题就是数学题...

然后再看一会差不多就可以看出来有单调性所以就可以确定二分的解法了

二分那个$W$,用前缀和$O(n+m)$的时间来求出对答案的贡献

另外求答案的那个式子我一开始看错了...然后忘记乘符合条件的个数了...

还有答案的上界要取$10^{12}$,$10^{12}$是大于$0x7ffffff$的...然后我就挂了半个小时...

#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>
#include <set> using namespace std ; #define N 200010
#define int long long int n , m , S ;
int c[ N ] , w[ N ] , v[ N ] , s[ N ] ; struct node {
int l , r ;
} a[ N ] ; int check( int x ) {
int sum = ;
c[ ] = ; s[ ] = ;
for( int i = ; i <= n ; i ++ ) {
c[ i ] = c[ i - ] ;
s[ i ] = s[ i - ] ;
if( w[ i ] >= x ) s[ i ] ++ , c[ i ] += v[ i ] ;
}
for( int i = ; i <= m ; i ++ ) {
sum += ( c[ a[ i ].r ] - c[ a[ i ].l - ] ) * ( s[ a[ i ].r ] - s[ a[ i ].l - ] ) ;
}
return sum ;
} signed main() {
int l = , r = ;
scanf( "%lld%lld%lld" , &n , &m , &S ) ;
for( int i = ; i <= n ; i ++ ) {
scanf( "%lld%lld" , &w[ i ] , &v[ i ] ) ;
r = max( r , w[ i ] ) ;
}
for( int i = ; i <= m ; i ++ ) {
scanf( "%lld%lld" , &a[ i ].l , &a[ i ].r ) ;
}
int ans = 1e12 ;
while( l <= r ) {
int mid = ( l + r ) >> ;
int x = check( mid ) ;
if( x >= S ) l = mid + ;
else r = mid - ;
ans = min( ans , abs(x-S) ) ;
}
printf( "%lld\n" , ans ) ;
return ;
}

Luogu P1314 聪明的质监员 二分答案的更多相关文章

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

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

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

    这个题我第一反应是线段树(雾),然后看了一眼题解之后就后悔了...前缀和...然后二分答案,然后就没有然后了. 题干: 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 nnn 个矿石 ...

  3. luogu P1314 聪明的质监员 x

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

  4. 【luogu P1314 聪明的质监员】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1314 二分答案 但是计算区间贡献的时候 直接暴力会挂 前缀和加速 #include <cstdio&g ...

  5. luogu P1314 聪明的质监员

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

  6. 洛谷 P1314 聪明的质监员 —— 二分

    题目:https://www.luogu.org/problemnew/show/P1314 显然就是二分那个标准: 当然不能每个区间从头到尾算答案,所以要先算出每个位置被算了几次: 不知为何自己第一 ...

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

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

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

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

  9. 洛谷P1314 聪明的质监员

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

随机推荐

  1. nginx 11个处理阶段 && nginx lua 8个处理阶段

    1. nginx 11 个处理阶段 nginx实际把请求处理流程划分为了11个阶段,这样划分的原因是将请求的执行逻辑细分,各阶段按照处理时机定义了清晰的执行语义,开发者可以很容易分辨自己需要开发的模块 ...

  2. [LeetCode] 513. Find Bottom Left Tree Value_ Medium tag: BFS

    Given a binary tree, find the leftmost value in the last row of the tree. Example 1: Input: 2 / \ 1 ...

  3. JSON—基础

    什么是JSON?(JavaScript Object Notation) 1:一种轻量级的数据交换格式 2:采用独立于语言的文本格式 3:常用于客户端和服务器之间传递数据(以对象的形式传递) JSON ...

  4. css3实现头像旋转360度

    css样式: .div a img{ width: 88px; height: 88px; border-radius: 88px; transition: all 1.2s ease-out 0s; ...

  5. Excel脱拽或者下拉公式时, 保持公式里单元格数字不变

    绝对引用 可以选中B1 用F4快捷键自己就给加绝对引用符号了 然后回车 复制或者拖拽

  6. Linux命令:删除与恢复命令

    敲命令按以下顺序 ①vim filename ②e ③i ④ESC 删除命令: x(小写):删除光标所在处字符. dd:删除光标所在的行. D:删除从光标所在之处开始直到该行末尾的全部字符. < ...

  7. Python: 猴子分桃。海滩上有一堆桃子,五只猴子来分。

    海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一 ...

  8. linux常用命令:df 命令

    linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命 ...

  9. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

  10. php抛出异常

    php抛出异常:throw new Exception("xxxxxx!"); 实例代码: try{ if ($mysqli->connect_errno) { sleep( ...