Solved:3

Rank:181

H Cutting Bamboos

这个东西好像叫整体二分

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN = 2e5 + 5;
  4.  
  5. int n, m, cnt, len;
  6. int a[MAXN];
  7. int b[MAXN];
  8. int t[MAXN];
  9. int num[MAXN << 5];
  10. int ls[MAXN << 5];
  11. int rs[MAXN << 5];
  12. double sum[MAXN << 5];
  13.  
  14. int build(int l, int r) {
  15. int rt = ++cnt;
  16. sum[0] = 0, num[0] = 0;
  17. int mid = l + r >> 1;
  18. if(l < r) {
  19. ls[rt] = build(l, mid);
  20. rs[rt] = build(mid + 1, r);
  21. }
  22. return rt;
  23. }
  24.  
  25. int add(int o, int l, int r, int k, int v) {
  26. int rt = ++cnt;
  27. ls[rt] = ls[o]; rs[rt] = rs[o]; sum[rt] = sum[o] + 1.0 * v; num[rt] = num[o] + 1;
  28.  
  29. int mid = l + r >> 1;
  30. if(l < r)
  31. if(k <= mid) ls[rt] = add(ls[o], l, mid, k, v);
  32. else rs[rt] = add(rs[o], mid + 1, r, k, v);
  33. return rt;
  34. }
  35.  
  36. double query(int ql, int qr, int l, int r, double k, int tot) {
  37. if(l == r) return k / (1.0 * (num[qr] - num[ql] + tot));
  38.  
  39. int mid = l + r >> 1;
  40. double lsum = sum[ls[qr]] - sum[ls[ql]];
  41. double rsum = 1.0 * mid * (num[rs[qr]] - num[rs[ql]] + tot);
  42. if(lsum + rsum > k) return query(ls[ql], ls[qr], l, mid, k, tot + num[rs[qr]] - num[rs[ql]]);
  43. else return query(rs[ql], rs[qr], mid + 1, r, k - lsum, tot);
  44. }
  45.  
  46. int main() {
  47. cnt = 0;
  48. scanf("%d%d", &n, &m);
  49. for(int i = 1; i <= n; i++) scanf("%d", &a[i]), b[i] = a[i];
  50. sort(b + 1, b + 1 + n);
  51. len = unique(b + 1, b + 1 + n) - b - 1;
  52.  
  53. t[0] = build(0, 100000);
  54. for(int i = 1; i <= n; i++) t[i] = add(t[i - 1], 0, 100000, a[i], a[i]);
  55.  
  56. while(m--) {
  57. int l, r, x, y;
  58. scanf("%d%d%d%d", &l, &r, &x, &y);
  59. double tmp = 1.0 * (sum[t[r]] - sum[t[l - 1]]) / (1.0 * y);
  60. printf("%.8lf\n", query(t[l - 1], t[r], 0, 100000, tmp * (y - x), 0));
  61. }
  62. return 0;
  63. }

Cutting Bamboos

2019牛客多校 Round9的更多相关文章

  1. 2019牛客多校第一场 I Points Division(动态规划+线段树)

    2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有 ...

  2. 2019牛客多校第二场 A Eddy Walker(概率推公式)

    2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...

  3. 2019牛客多校第八场 F题 Flowers 计算几何+线段树

    2019牛客多校第八场 F题 Flowers 先枚举出三角形内部的点D. 下面所说的旋转没有指明逆时针还是顺时针则是指逆时针旋转. 固定内部点的答案的获取 anti(A)anti(A)anti(A)或 ...

  4. 2019牛客多校 Round4

    Solved:3 Rank:331 B xor 题意:5e4个集合 每个集合最多32个数 5e4个询问 询问l到r个集合是不是都有一个子集的xor和等于x 题解:在牛客多校第一场学了线性基 然后这个题 ...

  5. 2019牛客多校第一场E ABBA(DP)题解

    链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 ABBA 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语 ...

  6. 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数

    目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...

  7. 2019牛客多校第四场 A meeting

    链接:https://ac.nowcoder.com/acm/contest/884/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言10485 ...

  8. [2019牛客多校第二场][G. Polygons]

    题目链接:https://ac.nowcoder.com/acm/contest/882/G 题目大意:有\(n\)条直线将平面分成若干个区域,要求处理\(m\)次询问:求第\(q\)大的区域面积.保 ...

  9. 2019 牛客多校第一场 D Parity of Tuples

    题目链接:https://ac.nowcoder.com/acm/contest/881/D 看此博客之前请先参阅吕凯飞的论文<集合幂级数的性质与应用及其快速算法>,论文中很多符号会被本文 ...

随机推荐

  1. go module 基本使用

    前言 go的版本以至1.13,一直以来令人诟病的依赖管理也有了官方的方向,但是看了一下目前很多blog文章还是比较老的. 所以这里对 go mod 做一个大致的说明 正文 前提 go版本为1.13及以 ...

  2. 【JS学习】for-in与for-of

    前言:本博客系列为学习后盾人js教程过程中的记录与产出,如果对你有帮助,欢迎关注,点赞,分享.不足之处也欢迎指正,作者会积极思考与改正. 总述: 名称 遍历 适用 for-in 索引 主要建议白能力对 ...

  3. CTFshow萌新赛-萌新福利

    下载链接文件 拿到show.bin文件 使用010Editor工具打开文件 做取反操作 取反后可以看到 把show.bin改为show.m4a 使用音频播放软件播放,即可得到flag

  4. ctfshow—web—web3

    打开靶机 提示是文件包含漏洞 测试成功 https://d7c9f3d7-64d2-4110-a14b-74c61f65893c.chall.ctf.show/?url=../../../../../ ...

  5. Databricks 第7篇:管理Secret

    有时,访问数据要求您通过JDBC对外部数据源进行身份验证,可以使用Azure Databricks Secret来存储凭据,并在notebook和job中引用它们,而不是直接在notebook中输入凭 ...

  6. 使用NIM Server网络半自动安装AIX系统

    一.NIM配置 1.安装NIMServer前准备 1.1.配置IP地址 # ifconfig –a #检查当前IP地址# # smitty mktcpip #设置IP地址# 选择第一块网卡(插网线的网 ...

  7. UNDO表空间切换步骤

    1.新建UNDO表空间 create undo tablespace UNDOTBS2 datafile '/data01/testdb/undotbs01.dbf' size 1G; alter d ...

  8. let关键字:加强版的var关键字

    本文首发于个人网站:let关键字:加强版的var关键字 你好,今天大叔想和你唠扯唠扯 ES6 新增的关键字 -- let.再说 let 的具体用法之前,大叔想先和你说说大叔自己对 let 的感受 -- ...

  9. Centos7.4 小白式安装(初学)

    虚拟机安装Centos7.4系统 适用人群(初学者) 下载Centos7.4镜像 https://pan.baidu.com/s/1NtjfdHV3OWAvfDj5vrR7HQ  提取码:hzzw 虚 ...

  10. pytest学习笔记(pytest框架结构)

    一.pytest框架中使用setup.teardown.更灵活按照用例级别可以分为以下几类: 1.模块级:(setup_module.teardown_module)在模块始末调用 2.函数级:(se ...