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

OpenCV图像去畸变实战指南:从原理到参数调优(附完整代码与效果对比) 本文深入解析了OpenCV图像去畸变的原理与实战技巧,详细对比了标准透视、鱼眼及全能型omnidir三种校正函数的核心参数调优方法。通过分析alpha、balance、centerX/Y及focalScale四大参数对输出效果的影响,并结合完整代码与效果对比图,帮助开发者精准校正镜头畸变,提升计算机视觉任务精度。 阅读详情

题目链接

题解:

我们可以二分砍到的高度,那么怎么求 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.

*/

 

手把手教你完成YOLOv9 PyQt5目标检测界面搭建,实现图片检测、视频检测、摄像头检测,可用于大论文凑工作量或毕设必备,全网最详细教程 目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。YOLO系列模型由于其高效的检测速度和较高的准确率,成为目标检测任务的首选算法之一。本项目结合 YOLOv9与 PyQt5,构建了一个图形化界面,便于用户进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测,不仅可以用于大论文的工作量展示,还可以作为毕业设计。 阅读详情

相关推荐

嵌入式GUI显示驱动配置实战:从emWin硬件接口到SPI屏驱动优化

在嵌入式系统开发中,显示驱动是连接GUI库与物理屏幕的核心底层模块,其本质是CPU与显示控制器之间的数据“翻译”与“传输”系统。其工作原理是通过实现特定的硬件抽象层接口,将GUI生成的图形数据转换为屏幕能识别的时序和协议。这项技术的核心价值在于,它允许开发者在资源受限的MCU上,通过适配不同的硬件接口,以最小的硬件开销实现稳定的图形输出。其典型应用场景包括智能家居面板、工业HMI、可穿戴设备等嵌入式图形界面开发。本文将深入解析emWin GUI库的驱动框架,重点探讨如何针对SPI、I2C等串行接口进行高效的

weixin_29159711的博客 341

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

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

新手小白 1379

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled

显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。

2303_78660611的博客 957

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

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

执梗的博客 7704

手把手教你用LIO-SAM搞定激光雷达和IMU联合标定(附避坑指南)

本文详细介绍了使用LIO-SAM进行激光雷达与IMU联合标定的全流程,包括标定原理、工具选型、硬件配置、数据采集、LI_calib标定步骤及LIO-SAM集成验证。特别提供了避坑指南和参数优化技巧,帮助开发者高效完成传感器标定,提升自动驾驶和机器人定位精度。

hadoop5ranger的博客 995

matlab锅炉 pid仿真,基于Matlab锅炉仿真.doc

基于Matlab锅炉仿真内蒙古科技大学MATLAB课程设计任务书2012题 目:锅炉汽包水位控制系统学生姓名:林三彪学 号:0967112127专 业:测控技术与仪器班 级:2009-1指导教师:梁 丽摘 要锅炉是化工、炼油、发电、造纸和制糖等工业生产过程中必不可少的重要动力设备。锅炉往往成了不少工厂不可缺少的一部分,因而,对锅炉设备中的自动控制系统进行分析研究是必要的...

weixin_29133981的博客 1096

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

企业级托管钱包架构设计与MPC密钥管理:基于Go语言的生产级实践

本文探讨了2026年Web3生态中企业级托管钱包的技术架构与实现方案。文章指出,传统私钥管理模式已无法满足机构级资产管理需求,而基于多方安全计算(MPC)和门限签名(TSS)的技术方案成为主流选择。研究分析了托管钱包的四层架构设计,详细解读了MPC的核心技术原理,包括分布式密钥生成(DKG)和签名协议演进。通过Go语言实现案例,展示了密钥分片管理、DKG流程和交易签名等核心模块的代码实现。文章还提出了生产部署的安全原则、容灾设计和监控体系,并讨论了密钥撤销等现存挑战及TEE融合等未来趋势。研究为构建安全、高

分享AI、区块链技术及应用,未来已来 81

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

作物生长模型Oryza V3实战1:为什么要研究它

ORYZAV3是水稻生长模拟模型ORYZA2000的最新升级版本(3.5版),作为作物生长模型,它通过数学方法和计算机技术模拟水稻生长发育过程及其与环境条件的相互作用。主要功能包括:模拟不同条件下的水稻生长和产量形成、评估环境胁迫影响、分析土壤碳氮动态以及进行区域尺度模拟。国内应用广泛,科研机构用于气候变化影响评估、灌溉模式比较等研究,并开展参数敏感性分析和应用培训。使用流程分为六个步骤:确定输入参数(气象、土壤、作物三类)、参数校准、设置模拟环境、运行模型、分析结果(输出50个参数)和计算产量(穗干重×收

504

华为OD机试真题2026双机位C卷 Java&Go 实现【用户入网定期复评】

用户开立支付账户,在开户完成后立即对用户进行一次风险模型评级,输出一个评分风险,评分范围1-100,等区间的分为5个等级,1-19为等级1,20-39为等级2,40-59为等级3,60-79为等级4,80-100为等级5,系统每天会任务对全量入网用户进行计算复评时间,输出评分给出新的风险等级。复评规则如下:

MISAYAONE的博客 147

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

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

HT008的Blog 384

游戏客户端开发工程师部分笔试题解析

你可以选择任意连续K个宝石合并成一个新的宝石,新宝石保持在原队列的位置且它的能量值是这K个宝石能量值之和。给定一个幸运值N=0、一堆包含能量值的宝石,你的任务是找到将所有宝石合并成一个宝石的最大幸运值。2.在一个二维网格中,有一个起点S、一个终点E和一个必须经过的中间点M。C++ 的多态性正是通过基类指针或引用调用派生类覆盖的虚函数实现的,这是运行时多态的核心机制。光线追踪带来的抗锯齿效果是其渲染方法的自然结果,而不是一个独立的算法。宝石具体能量值:[10, 7, 2, 6, 5, 11, 8];

博客 3027

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【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

IMSL CNL 7.0.0 (x86-64)Crack

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

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、付费专栏及课程。

余额充值