牛客多校第九场 H Cutting Bamboos —— 主席树
题目链接:点我啊╭(╯^╰)╮
题目大意:
给你一片竹林,编号 1 1 1 到 n n n ,给定初始高度
每次查询区间,问一共砍 y y y 刀的时候,第 x x x 刀的高度
要求 y y y 刀砍完时区间全被砍完,切每刀切出来的量相等
解题思路:
可求得第 x x x 刀需要砍的量 a l l all all
问题就转化为了 查询区间高于某个数的总量为 a l l all all
主席树求解即可,下面用了二分,其实可以直接算出来
#include<bits/stdc++.h>
#define rint register int
#define deb(x) cerr<<#x<<" = "<<(x)<<'\n';
//#pragma GCC optimize(3,"Ofast","inline")
using namespace std;
typedef long long ll;
using pii = pair <ll,int>;
const int maxn = 2e5 + 10;
const int H = 1e5;
const double eps = 1e-10;
int n, q, h[maxn], tot;
int root[maxn];
int ls[maxn*30], rs[maxn*30];
ll sum[maxn];struct node{ll num, sum;node operator +(const node& A)const{return{num+A.num, sum+A.sum};}node operator -(const node& A)const{return{num-A.num, sum-A.sum};}
} t[maxn*30];void update(int &rt, int pre, int pos, int l, int r){if(l>pos || r<pos) return;rt = ++tot;t[rt] = t[pre];ls[rt] = ls[pre], rs[rt] = rs[pre];if(l == r){t[rt].num++, t[rt].sum += l;return ;}int m = l + r >> 1;update(ls[rt], ls[pre], pos, l, m);update(rs[rt], rs[pre], pos, m+1, r);t[rt] = t[ls[rt]] + t[rs[rt]];
}node query(int rt, int pre, int L, int R, int l, int r){if(l>R || r<L) return{0, 0};if(L<=l && r<=R) return t[rt] - t[pre];int m = l + r >> 1;node ret1 = query(ls[rt], ls[pre], L, R, l, m);node ret2 = query(rs[rt], rs[pre], L, R, m+1, r);return ret1 + ret2;
}double check(double k, int l, int r){int p = ceil(k);double ret1 = query(root[r], root[l-1], 1, p-1, 1, H).sum;double ret2 = k * query(root[r], root[l-1], p, H, 1, H).num;
// printf("%.6f %.6f %.6f\n", k, ret1, ret2);return ret1 + ret2;
}int main() {scanf("%d%d", &n, &q);for(int i=1; i<=n; i++){scanf("%d", h+i);sum[i] = sum[i-1] + h[i];update(root[i], root[i-1], h[i], 1, H);}while(q--){int l, r, x, y;scanf("%d%d%d%d", &l, &r, &x, &y);double all = 1.0 * (sum[r] - sum[l-1]);all -= all / y * x;double L = 0, R = 1e5, mid;while(L < R-eps){mid = (L + R) / 2;if(check(mid, l, r) >= all) R = mid;else L = mid;}printf("%.8f\n", R);}
}
牛客多校第九场 H Cutting Bamboos —— 主席树相关推荐
- 2019牛客多校第九场 H Cutting Bamboos (二分主席树)
看到题解说二分 心里也有数了..... H Cutting Bamboos 给了一些高度得柱子 每区间你可以坎y次 y次之后 必须砍没有了 没有砍 总长度得一样 问第x次砍得高度在哪里 因为砍得次数 ...
- Cutting Bamboos(牛客多校第九场H主席树+二分+思维)
链接:https://ac.nowcoder.com/acm/contest/889/H 来源:牛客网 There are n bamboos arranged in a line. The i-th ...
- 2019牛客多校第九场AThe power of Fibonacci(广义BM)
2019牛客多校第九场AThe power of Fibonacci(广义BM) 题目大意 求斐波那契数列m次方的前n项和 解题思路 显然,斐波那契的m次方前缀和依然是线性递推,因此考虑用exBM求解 ...
- 2019暑假牛客多校赛第九场H.Cutting Bamboos (主席树+二分)
题意: 有n条柱子,高度为aia_iai ,我们有qqq次操作.在l到r的范围内砍yyy次,将所有的树高都砍为0,但是保证每一刀砍出来的长度(砍除树高于该高度的和)都是相同的.问你第xxx次砍的时候 ...
- Quadratic equation(二次剩余)2019牛客多校第九场
链接:https://ac.nowcoder.com/acm/contest/889/B 来源:牛客网 题目描述 Amy asks Mr. B problem B. Please help Mr. B ...
- FFT ---- 2021牛客多校第一场 H Hash Function
题目链接 题目大意: 解题思路: 首先我们知道任意两个数%seed\%seed%seed都不相同→\rightarrow→(aj−ai)%seed≠0(∀ai≤aj)(a_j-a_i)\%seed\n ...
- 2019牛客多校第九场AThe power of Fibonacci——扩展BM
题意 求斐波那契数列m次方的前n项和,模数为 $1e9$. 分析 线性递推乘线性递推仍是线性递推,所以上BM. 由于模数非质数,上扩展版的BM. 递推多少项呢?本地输入发现最大为与前57项有关(而且好 ...
- 2019牛客多校第一场
2019牛客多校第一场 题号 题目 知识点 A Monotonic Matrix B Symmetric Matrix C Fluorescent 2 D Two Graphs E Removal F ...
- 2020 牛客多校第一场
2020 牛客多校第一场 A. B-Suffix Array 后缀数组的思想:倍增+桶排序的方式找出一串连续序列后缀的大小.虽说正常使用的时候都是字典序,但是只要修改排序方式,也能够达到一个类似的&q ...
最新文章
- python轨迹追踪、全链路日志追踪trace_id实现
- css中属性兼容性写法,CSS3兼容属性和标准属性的书写顺序
- r语言安装ipsolve_数值分析的R语言实现(插值部分)
- [CQOI2018] 解锁屏幕(状压dp)
- RSA客户端js加密服务器C#解密(含源码)
- python接口 同花顺_利用python探索股票市场数据指南
- c语言程序设计平时作业代刷,C语言程序设计——小学生口算刷题系统
- 互联网晚报 | 3月8日 星期二 |​ ​​沪指深V反弹,创业板指跌幅收窄至0.75%;腾讯低代码平台与微信开发者平台打通...
- 超2亿学生集体上线 在线教育概念股齐飞
- 第一次使用SSE指令集
- 遍历删除List中的元素,会报错? 用iterator.remove() 完美解决
- 图片从预处理到分类的过程
- seo优化之如何选择产品
- Unity3D 退出游戏应用的代码
- cpu飙升 死循环_CPU飙升问题的解决实例
- Android 图片与屏幕坐标点
- VB6不能加载MSCOMCTL.OCX
- 计算机知识对于老师的帮助,教师计算机学习心得体会
- 微信小程序在线考试系统 毕业设计(6)会员首页
- GitLab删除项目操作(亲测)
热门文章
- 工匠精神是什么???
- 第一篇 ESP8266烧录固件 各种版本解决方案 mqtt 安信可固件 记录于2021年6月29日
- maya 导出层级干净的相机
- GitHub 移动端正式发布!
- 屏的像素与传输速率_高像素时代 究竟多少万像素才够你用?
- 中国大学MOOC-翁恺-C语言程序设计PAT习题集(第五章)
- ubuntu18 安装google谷歌浏览器
- Java 通过 Socket 实现小票打印
- 游戏手机连接服务器没有响应时间,雷军:黑鲨游戏手机2响应时间58.9ms,超iPhone...
- 深度学习简介--入门介绍PPT