2019牛客暑期多校训练营(第九场)H Cutting Bamboos(二分+主席树)

Python 爬虫实战:微博自动化运营工具(点赞 / 转发 / 评论 + 反封号策略) 微博作为中国最大的社交媒体平台之一,拥有庞大的用户群体和丰富的数据资源。通过 Python 爬虫技术,我们可以实现微博的自动化运营,包括点赞、转发、评论等功能,同时采取有效的反封号策略,确保账号的安全和稳定运行。 阅读详情

题目链接

题解:

我们可以二分砍到的高度,那么怎么求 L 到 R 区间内一个高度能砍掉的竹子呢?那么可以用一颗可持久化线段树来使区间的高度变得有序。

具体的,用主席树维护区间的高度之和与区间每个高度出现的次数。每次可以计算出高于二分高度的和 sum 与出现次数 num,那么剪掉的部分就是 sum - 二分的高度 * num 。那么就直接二分了。

代码:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
#define int ll
#define PI acos(-1.0)
#define INF 0x3f3f3f3f3f3f3f3f
#define P pair<int, int>
#define fastio ios::sync_with_stdio(false), cin.tie(0)
const int mod = 998244353;
const int M = 1000000 + 10;
const int N = 200000 + 10;

int pres[N];
struct node {
    int ls, rs;
    int sum, num;
} tree[N<<5];
int rt[N], cnt;

void build(int &now, int l = 1, int r = 100000)
{
    now = ++cnt;
    tree[now].num = tree[now].sum = 0;
    if(l == r) return ;
    int mid = (l + r) >> 1;
    build(tree[now].ls, l, mid);
    build(tree[now].rs, mid + 1, r);
}

void add(int &now, int pre, int val, int l = 1, int r = 100000)
{
    now = ++cnt;
    tree[now] = tree[pre];
    if(l == r) {
        tree[now].num ++;
        tree[now].sum += val;
        return ;
    }
    int mid = (l + r) >> 1;
    if(val <= mid) add(tree[now].ls, tree[pre].ls, val, l, mid);
    else add(tree[now].rs, tree[pre].rs, val, mid + 1, r);

    tree[now].num = tree[tree[now].ls].num + tree[tree[now].rs].num;
    tree[now].sum = tree[tree[now].ls].sum + tree[tree[now].rs].sum;
}

int query_num(int p, int q, int L, int R = 100000, int l = 1, int r = 100000)
{
    if(L <= l && r <= R) return tree[q].num - tree[p].num;
    int mid = (l + r) >> 1, ans = 0;
    if(L <= mid) ans += query_num(tree[p].ls, tree[q].ls, L, R, l, mid);
    if(mid < R) ans += query_num(tree[p].rs, tree[q].rs, L, R, mid + 1, r);
    return ans;
}

int query_sum(int p, int q, int L, int R = 100000, int l = 1, int r = 100000)
{
    if(L <= l && r <= R) return tree[q].sum - tree[p].sum;
    int mid = (l + r) >> 1, ans = 0;
    if(L <= mid) ans += query_sum(tree[p].ls, tree[q].ls, L, R, l, mid);
    if(mid < R) ans += query_sum(tree[p].rs, tree[q].rs, L, R, mid + 1, r);
    return ans;
}

signed main()
{
    int n, q;
    scanf("%lld %lld", &n, &q);
    build(rt[0]);
    for(int i = 1, h; i <= n; i ++) {
        scanf("%lld", &h);
        pres[i] = pres[i - 1] + h;
        add(rt[i], rt[i - 1], h);
    }
    for(int i = 1, l, r, x, y; i <= q; i ++) {
        scanf("%lld %lld %lld %lld", &l, &r, &x, &y);
        double ql = 0, qr = 100010;
        while(ql + 1e-7 < qr) {
            double mid = (ql + qr) / 2;
            int qmid = ceil(mid);
            int qsum = query_sum(rt[l - 1], rt[r], qmid);
            int qnum = query_num(rt[l - 1], rt[r], qmid);
            if(qsum - qnum * mid >= 1.0 * (pres[r] - pres[l - 1]) * x / y) ql = mid;
            else qr = mid;
        }
        printf("%.10lf\n", qr);
    }
}

/*

  Rejoicing in hope, patient in tribulation.

*/

 

计算机实战分享3:森林火灾预测分析可视化机器学习预测-完整数据代码-可直接运行 阅读详情

相关推荐

自动配胶机的PLC控制系统设计

我们根据自动配胶机的控制需求,编写了相应的PLC程序。PID温度控制算法的实现方面,我们采用了经典的PID控制算法,通过不断调整加热器的功率,实现对胶水混合温度的精确控制。在PLC程序中,我们编写了PID控制算法的程序模块,通过实时采集温度传感器的数据,计算温度偏差和偏差变化率,并根据PID控制算法计算出加热器的功率输出值,实现对温度的精确控制。在系统调试阶段,我们对自动配胶机的各个部分进行了详细的测试和调试,包括气路和液路的开关测试、传感器的精度测试、步进电机的位置和速度测试以及PLC程序的逻辑测试等。

lagougongzuoshi的博客 1226

蓝桥杯——砍竹子问题(C++)

容易出现时间超限问题,需要灵活变化

新手小白 1379

GEE——土地利用分类之监督分类

利用GEE做监督分类,以武汉市为例。 训练器我们选择随机森林;数据选择Landsat-8;训练样本使用的是GEE提供的一种,它把地表分为三类:水体、植被和城市用地。 选择训练样本 用要素集来标记训练样本。每个要素都有一个landcover 的属性,0表示城市用地,1表示植被,2表示水体。 对影像进行分类 其中一部分进行分类器的训练,还有一部分留下来做精度验证。 输出影像及混淆矩阵 print(LABEL_DATA); var wuhan = ee.FeatureCollection('users/

qq_41600680的博客 1万+

第十三届蓝桥杯C++B组省赛 J 题——砍竹子(AC)

第十三届蓝桥杯C++B组省赛 J 题——砍竹子(AC)

执梗的博客 7704

EFR32BG22 Thunderboard开发板 使用SPI 读取加速度计

Simplicity Studio v5 创建Silicon Labs蓝牙SoC EFR32BG22 Thunderboard模块的加速度计工程,模块上有一个ICM-20648 6轴运动跟踪设备,集成3轴加速度计和3轴陀螺仪功能,使用SPI接口跟EFR32BG22芯片连接。 我尽量以图片的形式展示(少打字): 将EFR32BG22的Thunderboard模块通过USB线插入到电脑,打开Simplicity Studio v5软件。 下面看重点: 点击搜索到的IO Stream: USART,点击Ins

qq_25727979的博客 1494

AI基础入门(大模型基础篇)——技术视角:你应该知道的LLM基础知识

本文从技术视角解析了大模型的工作原理,主要介绍了三个核心概念:Token、温度和Embedding。首先,大模型通过逐个添加Token来生成文本,Token数量直接影响上下文窗口大小和计费标准。其次,通过引入温度参数控制随机性,温度越高输出越多样化。最后,解释了字符串如何通过One-Hot编码和神经网络压缩转化为向量形式的Embedding,这是AI处理各类输入的基础。这些概念对理解大模型应用开发至关重要,Token决定处理能力,温度影响输出风格,Embedding则是信息转换的关键步骤。

小志的博客 1503

2019牛客暑期多校训练营(第九场)H Cutting Bamboos(主席树+二分)

链接:https://ac.nowcoder.com/acm/contest/889/H 来源:牛客网 题目描述 There are n bamboos arranged in a line. The i-th bamboo from the left has height hih_{i}hi​. You are given q queries of the type (l, r, x, ...

柳予欣的三味书屋~ 474

华为OD机试真题 新系统2026-04-15 Python&JS 实现【失灵的键盘】

有一个键盘有2个按键失灵了,按下这些键时会连续输出其他键对应的字符两次。具体如下: 1. 按下j键一次,屏幕上显示uu(两个连续的u);  按下b键一次,屏幕上显示t(两个连续的t) 2. u键和t键是好的,按下u键一次时,屏幕只会显示一次u(正常按键);按下t键一次时,屏幕只会显示一次t(正常按键) 3. 假定屏幕上连续显示两个t一定是按了一次b键,而不是两次t键;假定按键t之后不会紧接着按键b,即tttt转义为两个b,而不可能是tb

MISAYAONE的博客 522

2019牛客暑期多校训练营(第九场)H、Cutting Bamboos 主席树+二分

链接:https://ac.nowcoder.com/acm/contest/889/H 来源:牛客网 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge, 64bit IO Format: %lld 题目描述 There are n bamboos arranged in a line. The i-th...

还我笑颜 738

锂电池SOH估计 | 基于LSTM模型的锂电池SOH估计(Python)

锂电池SOH估计 | 基于LSTM模型的锂电池SOH估计(Python)

前程算法屋的博客 1432

uniapp - 解决uni.getLocation定位不准有偏差,定位经纬度不准确有几百米误差、获取地图定位有偏差怎么办,已配置高精确度但依旧不精准(uni.getLocation定位不准如何解决)

uni.getLocation,获取当前的地理位置、速度。已经设置altitude高精度,uniapp API获取定位有差异问题解决,获取定位有几百米偏差,uni.getLocation(OBJECT)中使用默认type ”wgs84“会导致定位不准的问题,gcj02,uni.getLocation地图定位不准,获取经纬度错误偏移了几十公里,经纬度的精确度误差,怎么消除经纬度偏差,解决 uniapp uni.getLocation 定位经纬度不准问题,使用定位不准,定位不准误差问题,解决定位不准问题,高德地

✅ 精选推荐文章 1万+

2019牛客暑期多校训练营(第九场) H Cutting Bamboos

题目描述: 英语差 题目分析: 思路来自这位大佬Orz 我们二分一个最高的整数,用主席树查询,满足区间内 ans及以上高度的和大于等于第x次切除的,把ans+1上的去处,然后就可以算出答案来了。 主席树上查树上的数字和以及数量 代码: #include <cstdio> #include <iostream> #include <cstring> #defin...

HT008的Blog 384

视觉Transformer实战 | 将卷积引入视觉Transformer(CvT)

CvT 是一种融合卷积神经网络与 Vision Transformer 优势的视觉模型,旨在解决 ViT 缺乏平移不变性和局部性等归纳偏置的问题。CvT 采用分层结构逐级降采样,使用卷积词元嵌入代替传统 patch 切分,引入卷积投影替代线性投影。这些设计使得 CvT 能够去除位置编码,在高分辨率输入下表现更优。本节深入解析 CvT 的核心原理,并提供完整的 PyTorch 代码实现,演示如何在实际数据集上训练和评估 CvT 模型。

盼小辉丶的博客 726

2019牛客暑期多校训练营(第九场) H Cutting Bamboos 二分+主席树

题目链接 输入: 5 4 3 5 1 7 4 2 4 3 5 1 4 4 9 1 3 1999 101111 2 2 1 1 输出: 2.100000005215406 2.629629638046026 4.822066854685545 0.000000026077032 题意: 有n棵竹子,然后你需要用y次去砍完这些竹子,但是你每次砍下来的竹子的长度和是相同的,问第x砍竹子的时候是在...

c___c18的博客 475

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

2019牛客暑期多校训练营(第九场) H Cutting Bamboos 主席树+二分

链接:https://ac.nowcoder.com/acm/contest/889/H 来源:牛客网 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge, 64bit IO Format: %lld 题目描述 There are n bamboos arranged in a line. The i-th...

why932346109的博客 573

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【2019牛客暑期多校训练营 第九场 H题】【Cutting Bamboos】【主席树+二分】

题目链接: https://ac.nowcoder.com/acm/contest/889/H 题意: N颗竹子,M个询问操作,每次询问给出l,r,x,yl,r,x,yl,r,x,y,问区间[l,r][l,r][l,r]内的竹子都切到什么高度hhh时,使得切掉的竹子高度之和为原来高度之和的x/yx/yx/y,注意这里只有高度大于hhh的竹子才会割,也就是说,如果让h=2h=2h=2,你是不能将1米...

流水 212

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

2019牛客暑期多校训练营(第九场)H - Cutting Bamboos(主席树 + 二分)

题目链接:https://ac.nowcoder.com/acm/contest/889/H 题意:有棵树和次询问。每次询问表示在到的范围内砍次,将所有的树高都砍为,但是要保证每一刀砍出来的长度(砍去树高于该高度的和)都是相同的。问你第次砍的时候砍的高度在哪里。有精度误差。每次只对本次操作有影响,操作完后,树回到原来的高度。 思路:先求出所有树的高度之和,那么表示...

sugarbliss 313

2019牛客暑期多校训练营(第九场)H.Cutting Bamboos(二分答案+主席树)

题意:砍竹子,n个高度,Q次询问,每次给你{l,r,x,y},让你在区间【l,r】内砍Y次,问你第X次砍到了多少高度(h),每次砍了的总长度相等 题解:由于可以算出第X次砍完后的,砍了的高度,所以可以通过二分答案来得到砍到了多少高度。 所以 第X次砍了的高(H)就是== 高于这个高度的所有竹子的高度和 (HSUM) -- 高与这个高度的所有竹子个数...

gml1999的博客 420

2019牛客暑期多校训练营(第九场)H-Cutting Bamboos 主席树+二分

题意:有n个竹子,m个查询,要求每次切割竹子到一定高度,且每次切割的总长度相同,y次切完,问你第x次切割之后的高度是多少 题解:每次切割掉的长度Σai/y,那么第x次切割完,切割掉的总长度应该为Σai*x/y,同时我们可以二分第x次切割完的高度,设二分的高度为h,则切割掉的总长度=高于h的竹子的高度总和-h*高于h的竹子的数量,这个与Σai*x/y相比就可以了 // #pragma comm...

W349652743的博客 326

2019牛客暑期多校9H:Cutting Bamboos【主席树+二分】

题目: 2019牛客暑期多校训练营9H:Cutting Bamboos 题意: 给出一排竹子,然后给出Q次询问,每次询问你需要水平砍y刀将[L,R]区间里的竹子砍完,并且每次砍下的竹子高度和一样,问第x刀砍应在那里 分析: 由于每刀砍下的一样,那么就可以知道前x刀一共砍下的竹子,首先可以二分第x刀砍的位置h,只需快速check这一刀砍下的和即可 那么就相当于求一个区间内比h大的数的和 ...

KobeDuu 240

2019牛客暑期多校训练营(第九场)Cutting Bamboos (主席树+二分)

题意: 链接:https://ac.nowcoder.com/acm/contest/889/H 给你 n 棵树每一棵树的高度,每一棵树从左到右编号为 1, 2, ... n 。Q 次询问,每次询问(l, r, x, y)代表在编号为 [l, r] 这个闭区间内的树,我需要砍 y 次把这些树砍成高度为 0 ,但是每次砍只能规定一个高度,这个高度以上的需要全部砍去,下面的不动,且每次砍的高度之和...

ltrbless的博客 348

2019牛客暑期多校训练营(第九场)H-Cutting Bamboos(主席树)

题意:n个竹子,有高度,q次询问,询问之间是独立的,每次查询输入l,r,x,yl,r,x,yl,r,x,y代表砍区间[l,r][l,r][l,r]内的竹子砍y次,最后一次要砍成0,每次砍掉的总长度相同,问第x次砍的高度是多少。 赛中榜有点歪吧,就一直在想j怎么写,H也没怎么看,最后剩20分钟的时候,lt跑过来和我说这个好像可以二分做,然后我就想可以套主席树写,就赶紧写,结果第一次写完的时候少维护了...

cy41的博客 203

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

题意: 有n条柱子,高度为aia_iai​ ,我们有qqq次操作。在l到r的范围内砍yyy次,将所有的树高都砍为0,但是保证每一刀砍出来的长度(砍除树高于该高度的和)都是相同的。问你第xxx次砍的时候砍的高度在哪里。有精度误差。每次只对本次操作有影响,操作完后,树回到原来的高度。 思路: 在求之前,我们先要知道每次可以砍多少,总的树高除于y就是每砍一次的后少的长度,然后砍到第x次时剩下的树高就是总...

Endeavor_G的博客 352

【2019牛客暑期多校训练营(第九场)H Cutting Bamboos】莫队 + bit +二分

H 知道题意以后离线来做 两个树状数组 一个存高度 一个存个数 那么你二分的是mid 你就要MID = ceil(向上取整)mid, 答案为高度超过这个MID的和 减去有多少个高度超过MID的竹子个数*mid 进行二分check 一开始ans没有 = 0.0 一直WA 后来才知道二分有问题 好在队友的帮助下 解决了此题 #include <map> #include <set&g...

我是谁 --- 卡比兽 233

2019牛客暑期多校训练营(第九场)H Cutting Bamboos —— 区间更新主席树+查询第一个比x小(大)的值

This way 题意: 给你一些竹子,q个询问,问你从第l到第r个竹子,如果你要用y次砍完它,并且每次砍下来的长度是相同的,问你第x次砍在哪。 题解: 其实我是在写题解的时候才看的题目的。。 刚做完j队友就将两个式子丢给我说是这道题的做法,然后由于自己没看题目不知道输出的是位置,结束了才A掉。。 一个式子是valsumy∗(y−x)val\frac{sum}{y}*(y-x)valysum​∗(...

天翼之城的博客 378

题解 | Cutting Bamboos-2019牛客暑期多校训练营第九场H题

题目来源于牛客竞赛:https://ac.nowcoder.com/acm/contest/discuss 题目描述: 输入描述: 输出描述: 示例1: 题解: 代码: #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_pol...

lastbye的博客 274
上一篇: 线段树yy(线段树维护括号序列+LCA)
下一篇: 线段树yy (线段树维护等比数列的和)
ttoobne
博客等级 码龄9年 13粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值