Luogu P1314 聪明的质监员 二分答案
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 聪明的质监员 二分答案的更多相关文章
- Luogu P1314 聪明的质监员(二分+前缀和)
P1314 聪明的质监员 题意 题目描述 小\(T\)是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有\(n\)个矿石,从\(1\)到\(n\)逐一编号,每个矿石都有自己的重量\(w_i\) ...
- P1314 聪明的质监员 二分答案
这个题我第一反应是线段树(雾),然后看了一眼题解之后就后悔了...前缀和...然后二分答案,然后就没有然后了. 题干: 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 nnn 个矿石 ...
- luogu P1314 聪明的质监员 x
P1314 聪明的质监员(至于为什么选择这个题目,可能是我觉得比较好玩呗) 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自 ...
- 【luogu P1314 聪明的质监员】 题解
题目链接:https://www.luogu.org/problemnew/show/P1314 二分答案 但是计算区间贡献的时候 直接暴力会挂 前缀和加速 #include <cstdio&g ...
- luogu P1314 聪明的质监员
题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...
- 洛谷 P1314 聪明的质监员 —— 二分
题目:https://www.luogu.org/problemnew/show/P1314 显然就是二分那个标准: 当然不能每个区间从头到尾算答案,所以要先算出每个位置被算了几次: 不知为何自己第一 ...
- [NOIp2011] luogu P1314 聪明的质监员
题目描述 点进去看吧,说的不能再清楚了. Solution 看到数据规模不难想到二分 WWW,然后用个前缀和优化一下即可.注意上下界. #include<cstdio> #include& ...
- P1314 聪明的质监员(前缀和+二分)
P1314 聪明的质监员 显然可以二分参数W 统计Y用下前缀和即可. #include<iostream> #include<cstdio> #include<cstri ...
- 洛谷P1314 聪明的质监员
P1314 聪明的质监员 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: ...
随机推荐
- 【Python爬虫】如何确定自己浏览器的User-Agent信息
User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本.浏览器及版本等信息.在做爬虫时加上此信息,可以伪装为浏览器:如果不加,很可能会被识别出为爬虫. 那么如 ...
- golang语言中的context详解,Go Concurrency Patterns: Context
https://blog.golang.org/context Introduction In Go servers, each incoming request is handled in its ...
- [py]django url 参数/reverse和HttpResponseRedirect
参考 需要完成以下任务 - 访问http://127.0.0.1:8000/ 返回"hello maotai"或home.html - 访问http://127.0.0.1:800 ...
- PAT Waiting in Line[转载]
//转自:https://blog.csdn.net/apie_czx/article/details/45537627 1014 Waiting in Line (30)(30 分)Suppose ...
- 获取多达 16GB 的 Dropbox 免费空间!
Dropbox官网
- Dapper Extensions中修改Dialect
如果是MySql数据库,则修改为:DapperExtensions.DapperExtensions.SqlDialect = new MySqlDialect(); DapperExtensions ...
- MFC工具栏的创建、设计与使用实例
本文通过实例说明MFC工具栏的创建.设计和使用方法,包括三个demo. demo1:创建一个工具栏 C++代码 //摘抄自MSDN demo1 (创建一个工具栏) 1.Create a t ...
- lnmp搭建环境易错误点
1.虚拟主机使用桥接网络 2.nginx配置server 3.先ping通,service iptables stop 4.php-fpm开启,使之能正确解析php文件,nginx开启 5.mysql ...
- Hive表中Partition的创建
作用: 在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作.有时候只需要扫描表中关心的一部分数据,在对应的partition里面去查找就可以,减少查询时间. 1. 创建表 ...
- 【转】五分钟读懂大数据核心MapReduce架构及原理
什么是MapReduce Hadoop中的MapReduce是一个简单的软件框架,基于它写出的应用程序可以运行在由上千个商用机器组成的大型集群上,并以一种可靠容错式并行处理TB级数据 MapReduc ...