题目:https://www.luogu.org/problemnew/show/P1314 显然就是二分那个标准: 当然不能每个区间从头到尾算答案,所以要先算出每个位置被算了几次: 不知为何自己第一想法是把符合要求的位置插入树状数组再遍历区间得到该区间内的个数然后在其左右端点差分最后遍历位置时一边计算每个位置的次数: 但其实用前缀和就可以了...而且前缀和比上面那个快好多... 调了好半天,才发现 ans 的初值不能习惯性地赋成 0x3f3f3f3f,那个才是个 int 范围内的... 代码如…
P1314 聪明的质监员 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[Li,Ri]: 2 .选出一个参数 W: 3 .对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi: 这批矿产的检验结果Y 为各个区间的检验值之和.即:Y1+Y2...+Ym 若这批矿产的检验结果与所给标准值S 相差太多,就需要再去检验另一批矿产.小T 不想费时间去…
题目 聪明的质监员 题解 这道题和之前Sabotage G的那道题类似,都是用二分答案求解(这道题还要简单一些,不需要用数学推导二分条件,只需简单判断一下即可). 同时为了降低复杂度,肯定不能用暴力求解 \(y_{i}\) 的值,很明显这里用到前缀和,到时候计算 \(y_{i}\) 只需用两个前缀和相减一下,再相乘即可. 关于二分区间,这个很明显,若 \(s>y\) ,\(W\) 就二分到左边的区间,否则二分到右边.每选一个 \(W\) 所对应的 \(\left| s-y \right|\) 的…
真是zz, 题目很显然是二分W,然后判断,我一开始是用线段树维护当前w[i]>W的个数和v(公式就是区间满足要求的个数*满足要求的v的和),然后T成70 后来想到树状数组差分常数或许会小,于是改了一发,A了! 但是这两个都是log方的,应该不会这么卡常数,于是我看了看update 哦,直接做数组前缀和就行了,去掉了一个log 所以不能想到一个复杂度差不多的算法就放弃思考-- #include<iostream> #include<cstdio> #include<cst…
题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[Li,Ri]: 2 .选出一个参数 W: 3 .对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi: 这批矿产的检验结果Y 为各个区间的检验值之和.即:Y1+Y2...+Ym 若这批矿产的检验结果与所给标准值S 相差太多,就需要再去检验另一批矿产.小T 不想费时间去检验另一批矿产,所以他想通…
https://www.luogu.org/problem/show?pid=1314 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[Li,Ri]: 2 .选出一个参数 W: 3 .对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi: 这批矿产的检验结果Y 为各个区间的检验值之和.即:Y1+Y2...+Ym 若这批矿产的检验结果与所给标…
更好的阅读体验 Portal Portal1: Luogu Portal2: LibreOJ Portal3: Vijos Description 小T是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有\(n\)个矿石,从\(1\)到\(n\)逐一编号,每个矿石都有自己的重量\(w_i\)以及价值\(v_i\).检验矿产的流程是: 给定\(m\)个区间\([L_i, R_i]\): 选出一个参数\(W\): 对于一个区间\([L_i, R_i]\),计算矿石在这个区间上的检验值\(Y_i…
P1314 聪明的质监员 题意 题目描述 小\(T\)是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有\(n\)个矿石,从\(1\)到\(n\)逐一编号,每个矿石都有自己的重量\(w_i\)以及价值\(v_i\).检验矿产的流程是: 给定\(m\)个区间\([L_i,R_i]\) 选出一个参数\(W\): 对于一个区间\([L_i,R_i]\),计算矿石在这个区间上的检验值\(Y_i\) 这批矿产的检验结果\(Y\)为各个区间的检验值之和.即:\(Y_1+Y_2...+Y_m\) 若这…
###一道二分答案加前缀和### 题目中已经暗示的很明显了 "尽可能靠近" " 最小值" 本题的主要坑点在于 long long 的使用 ##abs函数不支持long long !!! #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace s…
题目链接 Solution 这个范围不是二分就是结论题就是数学题... 然后再看一会差不多就可以看出来有单调性所以就可以确定二分的解法了 二分那个$W$,用前缀和$O(n+m)$的时间来求出对答案的贡献 另外求答案的那个式子我一开始看错了...然后忘记乘符合条件的个数了... 还有答案的上界要取$10^{12}$,$10^{12}$是大于$0x7ffffff$的...然后我就挂了半个小时... #include <cstdio> #include <algorithm> #incl…