【z05】聪明的质检员
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=z05
【题解】
显然w越大,最后的Y也就越大;
可以依靠这个搞二分;
如果二分枚举的tw得到的Y比S小,则减小tw以增大Y,否则增大tw就好;
那个区间的和可以用前缀和搞出来(确定当前的tw然后搞前缀和);
枚举一下m个区间,每个区间都能O(1)搞出来则m个区间为O(m);然后前缀和搞一下是O(n);
然后二分w为O(logw);
总的复杂度为O(logw*(n+m));
完全可以接受了;
【完整代码】
#include <algorithm>
#include <cstdio>
#define LL long long
using namespace std;
const int MAXN = 2e5+100;
const LL INF = 1e18;
int sum[MAXN];
LL w[MAXN],v[MAXN];
LL sumv[MAXN];
int n,m,query[MAXN][2];
LL s,ans = INF;
LL jue(LL x)
{
if (x>=0)
return x;
else
return -x;
}
int main()
{
//freopen("F:\\rush.txt","r",stdin);
scanf("%d%d%I64d",&n,&m,&s);
for (int i = 1;i <= n;i++)
scanf("%I64d%I64d",&w[i],&v[i]);
for (int i = 1;i <= m;i++)
scanf("%d%d",&query[i][0],&query[i][1]);
int l = 0,r = 1000000;
while (l <= r)
{
int tw = (l+r)>>1;
sum[0] = 0;sumv[0] = 0;
for (int i = 1;i <= n;i++)
if (w[i]>=tw)
sum[i] = sum[i-1]+1,sumv[i] = sumv[i-1]+v[i];
else
sum[i] = sum[i-1],sumv[i] = sumv[i-1];
LL temp = 0;
for (int i = 1;i <= m;i++)
{
LL tem1 = sum[query[i][1]]-sum[query[i][0]-1];
LL tem2 = sumv[query[i][1]]-sumv[query[i][0]-1];
temp += tem1*tem2;
}
ans = min(ans,jue(temp-s));
if (temp >s)
l = tw+1;
else
r = tw-1;
}
printf("%I64d\n",ans);
return 0;
}
【z05】聪明的质检员的更多相关文章
- Luogu 1314 【NOIP2011】聪明的质检员 (二分)
Luogu 1314 [NOIP2011]聪明的质检员 (二分) Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有 ...
- [NOIP 2011] 聪明的质检员
聪明的质检员 描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是:1.给定m个区间[Li,Ri ...
- [NOIP2011] 聪明的质检员(二分答案)
题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...
- NOIP2015聪明的质检员[二分 | 预处理]
背景 NOIP2011 day2 第二题 描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿 ...
- Vijos P1740聪明的质检员
题目 描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是:1.给定m个区间[Li,Ri]:2. ...
- 洛谷 [P1314] 聪明的质检员(NOIP2011 D2T2)
###一道二分答案加前缀和### 题目中已经暗示的很明显了 "尽可能靠近" " 最小值" 本题的主要坑点在于 long long 的使用 ##abs函数不支持l ...
- luogu 1314 聪明的质检员
二分答案的边界问题还是要注意 double挨着,int+1-1, 此题用到long long,所以初始化ans要足够大,前缀和优化 依然根据check答案大小左右mid,虽然有s,但是有了+1-1加持 ...
- [NOIP2011]聪明的质检员
[问题描述] 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有$n$个矿石,从 1 到$n$逐一编号,每个矿石都有自己的重量$w_i$以及价值$v_i$.检验矿产的流程是: 1. 给 ...
- vijos P1740 聪明的质检员
题目链接:传送门 题目大意:给你n个物品,每件物品有重量 W 和价值 V,给m个区间,和一个标准值.(n,m最大200000) 要求找到一个值x,使得m个所有区间的权值和与标准值的差的绝对值最小.单个 ...
随机推荐
- 18.链表管理内存实现c语言自动释放内存
运行截图: 创建记录分配的内存地址大小和地址的结构体 struct MEM { void *p; int size; }; 创建管理内存结构体的链表 typedef struct LinkNode { ...
- 戏说Linux商用数据库
戏说Linux商用数据库 上一篇文章(http://chenguang.blog.51cto.com/350944/277533)我介绍了Linux下几款开源数据库Mysql,MaxDB.Postgr ...
- javafx DragDropped file
public class EffectTest extends Application { @Override public void start(Stage primaryStage) { Grou ...
- spring bean中的properties元素内的ref和value的区别;* 和 ** 的区别
spring bean中的properties元素内的ref和value的区别 至于使用哪个是依据你所用的属性类型决定的. <bean id="sqlSessionFactory&qu ...
- Mysql学习总结(13)——使用JDBC处理MySQL大数据
一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...
- 浅谈架构之路:单点登录 SSO
前言:SSO 单点登录 "半吊子"的全栈工程师又来了,技术类的文章才发表了两篇,本来想先将主攻的几个系列都开个头(Nodejs.Java.前端.架构.全栈等等),无奈博客起步太晚, ...
- hdu5308 I Wanna Become A 24-Point Master(构造)
题目:pid=5308" target="_blank">http://acm.hdu.edu.cn/showproblem.php? pid=5308 题意:给定 ...
- 探索Oracle之数据库升级八 12c Downgrade 11gR2
探索Oracle之数据库升级八 12c Downgrade 11gR2 前言: 我们前面已经完毕了11gR2 upgrade to 12c 的升级,整个过程还是比較顺利的,尽管和曾经版本号升级有些不太 ...
- spinner -样式实现
这里主要是在theme中实现spinner的样式,如下 <style name="Theme.Funui" parent="Theme.Holo.Light&qu ...
- 1.java soap api操作和发送soap消息
转自:https://blog.csdn.net/lbinzhang/article/details/84721359 1. /** * soap请求 * * @return * @throws Ex ...