题目链接:点我啊╭(╯^╰)╮

题目大意:

给你一片竹林,编号 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 —— 主席树相关推荐

  1. 2019牛客多校第九场 H Cutting Bamboos (二分主席树)

    看到题解说二分 心里也有数了..... H Cutting Bamboos 给了一些高度得柱子 每区间你可以坎y次 y次之后 必须砍没有了 没有砍 总长度得一样 问第x次砍得高度在哪里 因为砍得次数 ...

  2. Cutting Bamboos(牛客多校第九场H主席树+二分+思维)

    链接:https://ac.nowcoder.com/acm/contest/889/H 来源:牛客网 There are n bamboos arranged in a line. The i-th ...

  3. 2019牛客多校第九场AThe power of Fibonacci(广义BM)

    2019牛客多校第九场AThe power of Fibonacci(广义BM) 题目大意 求斐波那契数列m次方的前n项和 解题思路 显然,斐波那契的m次方前缀和依然是线性递推,因此考虑用exBM求解 ...

  4. 2019暑假牛客多校赛第九场H.Cutting Bamboos (主席树+二分)

    题意: 有n条柱子,高度为aia_iai​ ,我们有qqq次操作.在l到r的范围内砍yyy次,将所有的树高都砍为0,但是保证每一刀砍出来的长度(砍除树高于该高度的和)都是相同的.问你第xxx次砍的时候 ...

  5. Quadratic equation(二次剩余)2019牛客多校第九场

    链接:https://ac.nowcoder.com/acm/contest/889/B 来源:牛客网 题目描述 Amy asks Mr. B problem B. Please help Mr. B ...

  6. FFT ---- 2021牛客多校第一场 H Hash Function

    题目链接 题目大意: 解题思路: 首先我们知道任意两个数%seed\%seed%seed都不相同→\rightarrow→(aj−ai)%seed≠0(∀ai≤aj)(a_j-a_i)\%seed\n ...

  7. 2019牛客多校第九场AThe power of Fibonacci——扩展BM

    题意 求斐波那契数列m次方的前n项和,模数为 $1e9$. 分析 线性递推乘线性递推仍是线性递推,所以上BM. 由于模数非质数,上扩展版的BM. 递推多少项呢?本地输入发现最大为与前57项有关(而且好 ...

  8. 2019牛客多校第一场

    2019牛客多校第一场 题号 题目 知识点 A Monotonic Matrix B Symmetric Matrix C Fluorescent 2 D Two Graphs E Removal F ...

  9. 2020 牛客多校第一场

    2020 牛客多校第一场 A. B-Suffix Array 后缀数组的思想:倍增+桶排序的方式找出一串连续序列后缀的大小.虽说正常使用的时候都是字典序,但是只要修改排序方式,也能够达到一个类似的&q ...

最新文章

  1. python轨迹追踪、全链路日志追踪trace_id实现
  2. css中属性兼容性写法,CSS3兼容属性和标准属性的书写顺序
  3. r语言安装ipsolve_数值分析的R语言实现(插值部分)
  4. [CQOI2018] 解锁屏幕(状压dp)
  5. RSA客户端js加密服务器C#解密(含源码)
  6. python接口 同花顺_利用python探索股票市场数据指南
  7. c语言程序设计平时作业代刷,C语言程序设计——小学生口算刷题系统
  8. 互联网晚报 | 3月8日 星期二 |​ ​​沪指深V反弹,创业板指跌幅收窄至0.75%;腾讯低代码平台与微信开发者平台打通...
  9. 超2亿学生集体上线 在线教育概念股齐飞
  10. 第一次使用SSE指令集
  11. 遍历删除List中的元素,会报错? 用iterator.remove() 完美解决
  12. 图片从预处理到分类的过程
  13. seo优化之如何选择产品
  14. Unity3D 退出游戏应用的代码
  15. cpu飙升 死循环_CPU飙升问题的解决实例
  16. Android 图片与屏幕坐标点
  17. VB6不能加载MSCOMCTL.OCX
  18. 计算机知识对于老师的帮助,教师计算机学习心得体会
  19. 微信小程序在线考试系统 毕业设计(6)会员首页
  20. GitLab删除项目操作(亲测)

热门文章

  1. 工匠精神是什么???
  2. 第一篇 ESP8266烧录固件 各种版本解决方案 mqtt 安信可固件 记录于2021年6月29日
  3. maya 导出层级干净的相机
  4. GitHub 移动端正式发布!
  5. 屏的像素与传输速率_高像素时代 究竟多少万像素才够你用?
  6. 中国大学MOOC-翁恺-C语言程序设计PAT习题集(第五章)
  7. ubuntu18 安装google谷歌浏览器
  8. Java 通过 Socket 实现小票打印
  9. 游戏手机连接服务器没有响应时间,雷军:黑鲨游戏手机2响应时间58.9ms,超iPhone...
  10. 深度学习简介--入门介绍PPT