hdu 4614 Vases and Flowers(线段树区间更新+二分)

手把手教你学 MATLAB 实战训练(6.5):基础实战实例 MATLAB 是一款强大的数学软件,广泛应用于工程计算、信号处理、控制系统设计、图像处理等领域。学习 MATLAB 不仅可以提高你的编程技能,还能帮助你解决实际的数学和工程问题。下面我将通过几个实战训练实例来教你如何使用 MATLAB。 阅读详情

题意:

给你N个花瓶,花瓶的编号是从 0 到 N - 1,初始状态花瓶是空的,每个花瓶最多只能插一朵花。

然后有2个操作:
操作1 a b,往在a位置后面(包括a)插b朵花,输出插入的首位置和末位置。
操作2 a b,输出区间[a,b]范围内的花的数量,然后全部清空。

解析:

很显然这是一道线段树的题目。区间更新,区间求和,这些基本的操作线段树都可以O(log(n))的时间范围内完成。

操作2,很显然就是线段树的区间求和,求出[a , b]范围内的花朵的数量,然后区间更新,将整个区间全部变成0。

操作1,这里我们首先需要找出他的首位置和末位置,因为一个区间内的0的个数是单调非递减的,所以需要二分极大值极小化求0的位置。

首先我们二分他的首位置,ql=a,qr=n−1,在这个区间内二分,找出第一个0的位置,那就是该操作的首位置first。

然后再二分他的末位置,ql=first,r=n−1 ,找到第c个0,就是该操作的末位置last,然后区间更新[first,last]全部置为1。

my code

#include <cstdio>
#include <cstring>
#include <algorithm>
#define ls (o<<1)
#define rs (o<<1|1)
#define lson ls, L, M
#define rson rs, M+1, R
#define MID (L + R) >> 1
#define LEN(L, R) ((R) - (L) + 1)
using namespace std;
const int N = (int)5e4 + 10;
int n, m;
int cov[N<<2], sumv[N<<2];

void build(int o, int L, int R) {
    cov[o] = sumv[o] = 0;
    if(L == R) return ;
    int M = MID;
    build(lson);
    build(rson);
}

inline void pushUp(int o) {
    sumv[o] = sumv[ls] + sumv[rs];
}

void pushDown(int o, int L, int R) {
    if(cov[o] != -1) {
        int M = MID;
        cov[ls] = cov[rs] = cov[o];
        sumv[ls] = cov[o] * LEN(L, M);
        sumv[rs] = cov[o] * LEN(M+1, R);
        cov[o] = -1;
    }
}

void modify(int o, int L, int R, int ql, int qr, int val) {
    if(ql <= L && R <= qr) {
        cov[o] = val;
        sumv[o] = LEN(L, R) * val;
        return ;
    }
    pushDown(o, L, R);
    int M = MID;
    if(ql <= M) modify(lson, ql, qr, val);
    if(qr > M) modify(rson, ql, qr, val);
    pushUp(o);
}

int query(int o, int L, int R, int ql, int qr) {
    if(ql <= L && R <= qr) return sumv[o];
    pushDown(o, L, R);
    int M = MID, ret = 0;
    if(ql <= M) ret += query(lson, ql, qr);
    if(qr > M) ret += query(rson, ql, qr);
    return ret;
}

int query0(int ql, int qr) {
    return LEN(ql, qr) - query(1, 0, n-1, ql, qr);
}

int search(int start, int end, int cnt) {
    int L = start, R = end;
    while(L < R) {
        int M = MID;
        int tmp = query0(start, M);
        if(tmp < cnt) L = M + 1;
        else R = M;
    }
    return L;
}

int main() {
    int op, A, B;
    int ql, qr;

    int T;
    scanf("%d", &T);
    while(T--) {
        scanf("%d%d", &n, &m);
        build(1, 0, n-1);
        while(m--) {
            scanf("%d%d%d", &op, &A, &B);
            if(op == 1) {
                ql = A, qr = n-1;
                int zero = query0(ql, qr);
                if(zero == 0) {
                    puts("Can not put any one.");
                }else {
                    int first = search(ql, qr, 1);
                    int last = search(first, qr, min(zero, B));
                    printf("%d %d\n", first, last);
                    modify(1, 0, n-1, first, last, 1);
                }
            }else {
                ql = A, qr = B;
                printf("%d\n", query(1, 0, n-1, ql, qr));
                modify(1, 0, n-1, ql, qr, 0);
            }
        }
        puts("");
    }
    return 0;
}
25、量子计算:中性原子与约瑟夫森结量子比特 本文详细探讨了中性原子和约瑟夫森结两种量子比特在量子计算中的应用。中性原子量子比特利用光晶格实现量子态的操控,具有长相干时间的优势,但面临可扩展性和多量子比特操作的挑战;而约瑟夫森结量子比特基于超导技术,结合半导体制造工艺,具有低耗散和潜在的高可扩展性,但在参数控制和环境干扰方面存在难题。文章还比较了这两种方案的性能、应用场景及未来发展趋势,展望了它们在量子计算发展中的潜力与突破方向。 阅读详情

相关推荐

PCB印刷电路缺陷检测实战:从数据集准备到模型训练全流程解析

本文详细解析了PCB缺陷检测从数据集准备到模型训练的全流程。重点介绍了PKU-Market-PCB数据集的特点与下载方法,并提供了数据格式转换、模型选择(如YOLOv8)与训练配置的实战代码。针对PCB小目标检测的难点,文章给出了数据分析和模型优化的具体策略,帮助读者构建高效的缺陷检测系统。

weixin_29065791的博客 547

HDU - 4614 (线段树)

#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 5e4 + 5; struct node { int sum, lazy; }tr[N << 2]; int t, n, m, k, x, y; void pushu...

ChenXiLian_的博客 395

【雷达信号处理实战】从原理到代码:脉冲多普勒(PD)处理全流程解析与MATLAB仿真

本文深入解析了脉冲多普勒(PD)雷达信号处理的核心原理与全流程。通过剖析多普勒效应、脉冲压缩与慢时间FFT等关键技术,并结合详细的MATLAB仿真代码,手把手指导如何从信号建模、回波模拟到最终生成距离-多普勒谱,实现运动目标的精确测距与测速,直观展示了相参积累带来的显著性能增益。

pca5navigator的博客 954

HDU - 4614

比较简单,一发A。 这几个操作很明显线段树维护。 初是区间都是0,代表某个区间花数量和 2 a b 把区间赋值成0,查询区间和。 1 a f查询 a - n-1 区间无花数量是否小于f 小于的花直接全部插上花,插之前询问最左边无花,最右边无花的瓶子位置即最小值最右边//最左 的坐标。 如果区间无花数量大于f。则二分查找区间无花数量第一个大于等于f的位置。刚好这个区间插满花,右边为p...

bjfu170203101的博客 346

【蓝桥杯——单片机学习笔记】十三.点阵(STC15F2K60S2)

一.点阵内部图 点阵的有两种,分为共阴和共阳(与数码管类似,后续代码根据共阳点阵编写)。点阵的控制主要是每行和每列电平的控制。如图,以共阳为例:若要使左上角的灯亮,则第一行输出高电平(其他行均为低电平),第一列输出低电平(其他列均为高电平)。 二.原理图 与数码管共用接口,所以数码管和点阵的显示只能选一个使用! 原理图中点阵的接口R5即代表第5行(Row),C8即代表第8列(Column)。通...

默默无闻小菜鸡的博客 2011

台积电技术研发实力

台积电技术研发实力 台积电在半导体行业的地位毋庸置疑。他们究竟有多强大,大部分读者了解得可能非常片面。从最新公布的2019年财报里,看看台积电的真正实力。 一、台积电在市场上的地位 根据公司财报,台积公司在先进制程技术、特殊制程技术,以及先进封装技术的发展上持续领先全球集成电路制造服务领域,2019年的市场占有率为52%。台积公司总体营收以地区划分(主要依据客户营运总部所在地),来自北美市场的营收占台积公司总体营收的60%、日本与中国大陆以外的亚太市场占9%、中国大陆市场占20%、欧洲、中东及非洲市场占6

吴建明wujianming_110117 1901

hdu4614——线段树+二分

题目链接:https://vjudge.net/problem/HDU-4614#author=2013551629 Description Alice有N个花瓶(标号为0~ N-1)。当她收到一些花时,她会随机的选择一个瓶子A,从它开始遍历A,A+1, A+2, ..., N-1号瓶子,遇到空瓶子就放一朵花进去,直到花朵放完或没有瓶子,剩下的花将被丢弃。有...

mumei的博客 1348

别再只用线性回归了!用sklearn的核岭回归搞定非线性数据(附RBF核调参实战)

本文详细介绍了如何使用sklearn的核岭回归处理非线性数据,特别是RBF核的应用与调参实战。通过网格搜索找到最佳参数组合,核岭回归能有效捕捉数据中的复杂波动,显著提升模型性能。适合需要解决非线性问题的数据科学家和机器学习工程师。

weixin_34246529的博客 337

HDU - 4614(线段树+二分)

题目:click 题意:操作是1,则从A开始插花F个多了丢弃,没有瓶子则输出。 2的话,区间内的所有花丢出。 用二分去确定操作1中的起始位置以及终止位置,其他的线段树维护。 #include<cmath> #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cstdlib> #include<istream> #inc

weixin_43958964的博客 518

【迁移学习综述】

迁移学习的目标是将某个领域或任务上学习到的知识应用到不同的但相关的领域或问题中。迁移学习的研究来源于一个观测:人类可以将以前的学到的知识应用于解决新的问题,更快的解决问题或取得更好的效果。迁移学习被赋予这样一个任务:从以前的任务当中去学习知识(knowledge)或经验,并应用于新的任务当中。换句话说,迁移学习目的是从一个或多个源任务(source tasks)中抽取知识、经验,然后应用于一个目标领域(target domain)当中去。

afadgas的博客 4319

深入浅出AXI协议(2)——通道及信号

本文我们继续AXI协议的学习,我们将讨论5个通道的具体内容和相对应的信号。这一部分的内容现在对于大家来说可能很难理解,但是没有关系,随着学习的深入,我们会逐步讲解这里面的所有现在,现在只需要把它们当作一个可以查阅的手册,快速阅读有一个基本的印象即可。

apple_53311083的博客 1799

HDU - 4614(线段树+二分查找)

题目意思:每一组的第一行有两个数n,m, n表示花瓶数量0~n-1,开始全为空,接下来有m组,每组有数k,a,b;当k=1时, 从a位置开始插花,b为花数量,当花瓶有花时,跳过当前,直到找到空花瓶再插入,输出插入第一支花的位置和最后一支花的位置,花可以没插完,当一支都没有插入则输出Can not put anyone.;当k=2时,清空【a,b】的花瓶,并输出在范围内花的数量。 代码: #incl...

qq_41856950的博客 263

linux系统下XDMA驱动的安装与测试问题总结

先看两个常见的问题。一个是驱动安装问题,一个是驱动测试错误;error 512 能识别PCIE的设备,但是The kernel modle installed correctly, but no devices were recognized.

whm128的博客 3805

HDU4614 Vases and Flowers(线段树区间更新维护+二分)

题目链接 Problem Description Alice is so popular that she can receive many flowers everyday. She has N vases numbered from 0 to N-1. When she receive some flowers, she will try to put them in the vases, one flower in one vase. She randomly choose the vase A an

WTMDNM_的博客 196

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【线段树区间更新+二分】 L - Vases and Flowers HDU - 4614

Vases and Flowers Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 4482    Accepted Submission(s): 1841   Problem Description   Alice is so p...

博客 220

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HDU 4614 Vases and Flowers (二分查找+线段树区间更新)

Alice is so popular that she can receive many flowers everyday. She has N vases numbered from 0 to N-1. When she receive some flowers, she will try to put them in the vases, one flower in one vase. She randomly choose the vase A and try to put a flower in

HJY 739

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HDU-4614 Vases and Flowers(线段树区间更新+二分查找)

http://acm.hdu.edu.cn/showproblem.php?pid=4614 Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 65535/32768 K (Java/Others) Problem Description   Alice is so popular that she can rec...

weixin_30299539的博客 136

Vases and Flowers HDU - 4614 线段树二分区域+区间更新

情人节到了!众所周知,黄队喜欢花花,所以他当然有很多的花瓶,据不完全统计,黄队有N个花瓶(标号为0~ N-1)。当然他也是个魅力四射的男孩子,所以他也自然会在这条收到很多的花花,当他在情人节这天收到花花时时,他会随机的选择一个瓶子A,从它开始遍历A,A+1, A+2, …, N-1号瓶子,遇到空瓶子的话就放一朵花进去,直到花放完或没有瓶子,剩下的花将被残忍的丢弃。有时,他也会清理标号从a到b的花瓶(a <= b).花瓶里的花会被丢弃。任性又帅气的黄队! Input 第一行你会得到一个整数T,表示有T组

qq_45891413的博客 160

hdu-4614-Vases and Flowers(线段树,区间更新区间查询,lazy,二分)

Problem Description   Alice is so popular that she can receive many flowers everyday. She has N vases numbered from 0 to N-1. When she receive some flowers, she will try to put them in the vases, o

Orz 325

HDU-4614 Vases and Flowers(线段树+区间修改+二分)

题目链接:\quadHDU - 4614题目大意:\quad有nn个花瓶,标号00 ~ n−1。m n - 1。m个操作, ‘1AF′\quad \quad ‘1 \quad A \quad F’,表示从AA位置开始插FF朵花,遇到有花的花瓶跳过。到最后一个花瓶都还有花剩余,丢弃剩下的花。 ‘2AB′\quad \quad ‘2 \quad A \quad B’,表示将区间[A,B][A, B

XzzF1024的博客 1263

hdu4614 Vases and Flowers 二分

hdu4614 Vases and Flowers 二分 这道题用数据结构为优化时间效率 用二分来分别找出左边界答案 和右边界答案 这是属于线段树数据结构与其他算法的结合使用 开始做的时候 还死死的在线段树上做文章。。。。 问题是 在以A为起点的区间 第一个可以插花的 和最后一个可以插花的地方 按照正常思路的话可以想到二分 可是与线段树扯上了 就只能想到在线段树上处理 看来这种结合思想

liyanfeng1996的博客 361

HDU - Vases and Flowers(线段树&二分)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4614 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Problem Description     Alice is so popular tha...

ityanger的技术栈 2758

hdu 4614 Vases and Flowers

周末UA做了这场多校的vjudge版本。 我去陪爸妈去山沟沟转了,回来听说有个这个线段树,想敲敲。 多年不做线段树,好恶心> struct Tnode{ // 一维线段树 int l,r; int cover; int lid, rid; int sum; int len() { return r - l;} int mid() {

小媛在努力~ 3842

HDU 4614 Vases and Flowers

Vases and Flowers Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 904    Accepted Submission(s): 332 Problem Description   Alice is

dongdongzhang_的专栏 1271

2013 多校第二场 hdu 4614 Vases and Flowers(线段树)

hdu 4614 题目:http://acm.hdu.edu.cn/showproblem.php?pid=4614 题目大意:n个花瓶,m个操作,k=1 时是从 a 开始插花,如果已经有花,那么跳过,能插多少插多少。k=2,把区间[ a , b ] 内的有的花都清理掉。 思路:裸线段树。就是找区间的时候比较麻烦,其实写两个二分先判断出左右边界就好了。。 时间是 2s ,再乘个 logn 应

沉溺的专栏 1096

HDU 4614 Vases and Flowers 解题报告

题目 题意:一开始有标号为0~N-1的N个空花瓶,进行两种操作 操作1:A F,从标号为A的花瓶开始往后面放F朵花,如果当前花瓶有花了,就继续往后放,如果有花没有地方放了就丢掉。输出第一朵花和最后一朵花放的花瓶标号 操作2:A B,将花瓶A~B全部清空,并输出多少个花瓶被清空。 解法: 利用线段树的区间更新区间查询,线段树存储区间内有多少不为空的花瓶 对于操作1,先在[A,N-1]二分

Tri_integral的专栏 1287
上一篇: hdu 5423 Rikka with Tree(dfs)
下一篇: hdu 4747 Mex(线段树区间更新+二分)
HelloWorld10086
博客等级 码龄12年 88粉丝 614原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值