「NOIP2011」聪明的质监员
传送门
Luogu
解题思路
第一眼肯定是没什么思路的 dalao勿喷,但我们仔细看一看式子就会发现 \(Y\) 是随着 \(W\) 的变大而变小的。
所以 \(Y\) 随 \(W\) 的变化是单调的,然后就可以考虑二分了,尽可能让 \(Y\) 靠近 \(S\) 即可。
至于计算,只需要开两个前缀和,分别记录 \(\sum 1\) 和 \(\sum v\) ,但是只算 \(w_j \geq mid\) 的位置。
细节注意事项
- 开
long long
参考代码
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cctype>
#include <cmath>
#include <ctime>
#define rg register
using namespace std;
template < typename T > inline void read(T& s) {
s = 0; int f = 0; char c = getchar();
while (!isdigit(c)) f |= (c == '-'), c = getchar();
while (isdigit(c)) s = s * 10 + (c ^ 48), c = getchar();
s = f ? -s : s;
}
typedef long long LL;
const int _ = 200002;
int n, m; LL S, _ans;
int w[_], v[_], L[_], R[_];
LL sum[_], num[_];
inline bool check(int mid) {
for (rg int i = 1; i <= n; ++i) {
num[i] = num[i - 1] + 1ll * (w[i] >= mid);
sum[i] = sum[i - 1] + 1ll * (w[i] >= mid) * v[i];
}
LL Y = 0;
for (rg int i = 1; i <= m; ++i)
Y += 1ll * (sum[R[i]] - sum[L[i] - 1]) * (num[R[i]] - num[L[i] - 1]);
return _ans = labs(S - Y), Y >= S;
}
int main() {
#ifndef ONLINE_JUDGE
freopen("in.in", "r", stdin);
#endif
read(n), read(m), read(S);
int mx = -1e9, mn = 1e9;
for (rg int i = 1; i <= n; ++i) read(w[i]), read(v[i]);
for (rg int i = 1; i <= m; ++i) read(L[i]), read(R[i]);
int l = 0, r = 1e6; LL ans = 1e18;
while (l < r) {
int mid = (l + r) >> 1;
if (check(mid)) l = mid + 1;
else r = mid;
ans = min(ans, _ans);
}
printf("%lld\n", ans);
return 0;
}
完结撒花 \(qwq\)
「NOIP2011」聪明的质监员的更多相关文章
- 【NOIP2011】 聪明的质监员
小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是: 1. 给定 m个区间[Li,Ri]: 2. ...
- $Noip2011/Luogu1314$ 聪明的质监员 二分+巧妙前缀和
$Luogu$ $Sol$ 首先$W$一定是某个$w_i$.于是一种暴力方法就出炉了,枚举$W$再计算. 注意到,满足$S-Y$的绝对值最小的$Y$只可能是两种,一种是$<S$的最大的$Y$,一 ...
- NOIP2011聪明的质监员题解
631. [NOIP2011] 聪明的质监员 ★★ 输入文件:qc.in 输出文件:qc.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 小 T 是一名质量监督 ...
- Luogu P1314 [NOIP2011 提高组] 聪明的质监员
P1314 [NOIP2011 提高组] 聪明的质监员 题意 题目描述 给定\(n\)个物品,给定每个物品的 重量 \(w_i\) 和 价值 \(v_i\) 给定一个标准值 \(s\) 以及一个参数 ...
- NC16597 [NOIP2011]聪明的质监员
NC16597 [NOIP2011]聪明的质监员 题目 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 \(n\) 个矿石,从 \(1\) 到 \(n\) 逐一编号,每个矿 ...
- NOIP2011提高组 聪明的质监员 -SilverN
题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...
- 【洛谷P1314】[NOIP2011]聪明的质监员
聪明的质监员 题目链接:https://www.luogu.org/problemnew/show/P1314 Y(W)随W的值增大而减小 二分W的值,找到最小的W使得Y(W)>S: 比较Y(W ...
- luoguP1314 聪明的质监员 题解(NOIP2011)
P1314 聪明的质监员 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include< ...
- 洛谷P1314 [NOIP2011提高组Day2T2] 聪明的质监员
P1314 聪明的质监员 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: ...
随机推荐
- PAT 1003 Emergency (25分)
As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...
- BUG搬运工:CSCun88303-CIMC Memory Leak : Can't SSH/HTTP to CIMC
Symptom:Unable to SSH/HTTP to the CIMC of the C-series server, however the CIMC can be pinged. Also ...
- 杭电 2159 fate(二维背包费用问题)
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- Nginx 反向代理报400错误解决方法!
如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话,如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败,报400错误,解决办法: ...
- Plastic Sprayer Supplier - Sprayer: How Can The Product Be Sprayed?
In many end products, especially in cosmetics, the first thing that appeals to consumers is the form ...
- Spark以yarn方式运行时抛出异常
Spark以yarn方式运行时抛出异常: cluster.YarnClientSchedulerBackend: Yarn application has already exited with st ...
- Struts+Spring+Hibernate整合笔记一
OpenSessionInview: 1.如果当前方法没有事物环境,则调用完毕getHibernate以后.session关闭: 说明:1如果测试dao层,没有事物环境 2如果测试service层,但 ...
- 树莓派安装nextcloud、Seafile
参考博文:http://bbs.eeworld.com.cn/thread-505579-1-1.html http://blog.sina.com.cn/s/blog_6f55d8210102xia ...
- luogu P2280 激光炸弹(二维前缀和)
由题给的xi, yi范围,可以建立二维地图maze[i][j],记录i j范围上的所有目标的价值总和 即有maze[xi][yi] += wi 然后接下来的目标就是求出该二维数组的前缀和 可得到前缀和 ...
- 1 (msql实战) 基础架构
mysql> select * from T where ID=10: 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程. 所以今天我想和你一起把 MyS ...