HDU 4614 二分加线段树

hdu4614 Vases and Flowers(简单线段树 + 二分) Vases and Flowers Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1336    Accepted Submission(s): 532 Problem Description   Alice i 阅读详情

【题意】初始有n个空花瓶,然后有q个操作,1 x y,从x开始插花,插够k个即可。2 x y,把x,y区间有有花的花瓶全部清空。

【解题方法】

线段树维护剩余空花瓶的个数

第一种操作二分≥1的最左边的位置,二分≥k的最左边位置
第二种直接更新就好啦
复杂度是O(n+mlog2n)


【AC代码】


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=5e5+5;
int n;
struct Segment{
    int sum[maxn<<2],lazy[maxn<<2];
    void Build(int l,int r,int rt)
    {
        sum[rt]=r-l+1;
        lazy[rt]=-1;
        if(l==r) return ;
        int mid=(l+r)/2;
        Build(l,mid,rt*2);
        Build(mid+1,r,rt*2+1);
    }
    void pushup(int rt){
        sum[rt]=sum[rt*2]+sum[rt*2+1];
    }
    void pushdown(int rt,int m){
        if(lazy[rt]!=-1){
            lazy[rt*2]=lazy[rt*2+1]=lazy[rt];
            sum[rt*2]=lazy[rt]*(m-(m>>1));
            sum[rt*2+1]=lazy[rt]*(m>>1);
            lazy[rt]=-1;
        }
    }
    int update(int L,int R,int v,int l,int r,int rt)
    {
        if(L<=l&&r<=R){
            int ret=sum[rt];
            sum[rt]=v*(r-l+1);
            lazy[rt]=v;
            return ret;
        }
        int mid=(l+r)/2;
        pushdown(rt,r-l+1);
        int ret=0;
        if(L<=mid) ret+=update(L,R,v,l,mid,rt*2);
        if(mid<R)  ret+=update(L,R,v,mid+1,r,rt*2+1);
        pushup(rt);
        return ret;
    }
    int queryans(int L,int R,int l,int r,int rt)
    {
        if(L<=l&&r<=R){
            return sum[rt];
        }
        pushdown(rt,r-l+1);
        int ret=0;
        int mid=(l+r)/2;
        if(L<=mid) ret+=queryans(L,R,l,mid,rt*2);
        if(mid<R)  ret+=queryans(L,R,mid+1,r,rt*2+1);
        return ret;
    }
}Tree;
int get(int st,int k)
{
    int l=st,r=n;
    while(l<=r){
        int m=(l+r)/2;
        if(Tree.queryans(st,m,1,n,1)>=k) r=m-1;
        else l=m+1;
    }
    return l;
}
int main()
{
    int T,q;
    scanf("%d",&T);
    while(T--)
    {
        int op,x,y;
        scanf("%d%d",&n,&q);
        Tree.Build(1,n,1);
        while(q--)
        {
            scanf("%d%d%d",&op,&x,&y);
            if(op==1){
                int all=Tree.queryans(x+1,n,1,n,1);
                if(all==0){
                    puts("Can not put any one.");
                }
                else{
                    int l=get(x+1,1);
                    int r=get(x+1,min(all,y));
                    //cout<<l<<" "<<r<<endl;
                    Tree.update(l,r,0,1,n,1);
                    printf("%d %d\n",l-1,r-1);
                }
            }else{
                int tt=Tree.update(x+1,y+1,1,1,n,1);
                int ans=y-x+1-tt;
                printf("%d\n",ans);
            }
        }
        printf("\n");
    }
    return 0;
}



Frida实战:高效dump Android内存中的so文件与修复技巧 本文详细介绍了使用Frida工具dump Android内存中已解密so文件的实战技巧。针对加固应用静态分析失效的痛点,文章提供了从环境搭建、使用frida_dump脚本自动化抓取内存数据,到利用SoFixer工具修复ELF文件结构的完整流程,帮助逆向分析人员高效获取可分析的so文件。 阅读详情

相关推荐

百度飞桨EasyDL图像分类:收费口车辆类型自动识别

车辆类型识别在高速收费路口的应用中,场景相对单一且拍摄角度一致,因此首次训练模型效果优异,准确率达到了95%,鉴于市面上的车辆类型不断更新迭代且部分车辆的主要特征也不断发生变化,因此可在模型投入应用后,持续收集模型实际运行过中产生的数据,定期添加数据进行模型迭代,保证模型效果。企业将AI模型应用到实际场景中以实现停车费用、过路费用的自动计算,在收费口中由相机对每个车辆进行拍摄,拍摄到的图片传输到预测设备上进行类型识别,基于识别出来的车辆类型自动进行费用计算。该功能可在发起训练时选选择对应的开关打开即可。..

PaddlePaddle 1673

Colorful Squares(二分+线段树)

Colorful Squares(二分+线段树) 题目链接 题意: 平面内有 nnn 个点,每个点都有颜色,总共有 kkk 中颜色,问,一个能将 kkk 种颜色的点都包含进的正方形的最小边长是多少。(边长可为000,即只有一种颜色的情况 ) 思路: 先将所有点,按 xxx 轴坐标存入 vector<node>v[i]vector<node>v[i]vector<node>v[i] 中,v[i]v[i]v[i] 表示,xxx 坐标为 iii 的所有点的坐标。 二分长度,然后

bok_choy_的博客 364

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

Sequence(二分 + 线段树)

第一行包含两个整数n,m(1Sn,mS105),其中n是数组的大小,m是要执行的操作的数量。第二行包含n个整数,第i个整数是ai (1SaiS231-1)然后是m行,依次描述m个你要执行的操作。如果opt=1,则会出现两个整数x, y (1Sxsn,1Sys231-1),如上所述。给定一个包含n个整数的数组a,你要对它执行两种类型的m个操作。1.给定两个整数x,y,将索引x的个数替换为数字y,即ax:=y。2.给定一个整数x,打印a的连续子序列的个数,其最小值为ax。它保证数组a在任何时候都没有重复的值。

m0_64158084的博客 497

STM32接入CH340芯片的升级电路及初始化进入升级模式(死机)问题处理

MCU-REST 在 MCU-BOOT0 处于低电平状态下,进行下拉操作,在MCU-REST 与 MCU-BOOT0 恢复正常电平时,将导致MCU死机,MCU-REST 先于 MCU-BOOT0 下拉可解决该问题;MCU-REST 在 上升沿结束时将判断 MCU-BOOT0 的状态,MCU-BOOT0 处于高电平,MCU死机,MCU-BOOT0 处于低电平 MCU 正常;

LuDvei的博客 2493

SAP入门技术分享四:模块化程序

SAP入门技术分享三:模块化程序

ITxiaoangzai的博客 1152

【二分答案+线段树+平衡树/线段树分治】APIO2018新家

【题目】 原题地址 题目大意:太长了去看题面吧。 【题目分析】 一道看上去比较奇怪的题目,需要一定转化思想。 不过二分答案这个点还是比较显然的。 【解题思路】 对时间扫描的话,每间商店等价于插入操作和删除操作。 问题转化为支持插入/删除,询问以某个位置为重心包含所有不同数字的最小长度。 对于询问,显然我们可以二分答案。但是如何查询一个区间内是否出现所有种类的数? 考虑出现的充要...

MEET YOU FIRST TIME 1042

3 路由引入

在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。路由引入是具有方向性的,将路由信息从路由协议A引入到路由协议B(A-to-B),则路由协议B可获知A中的路由信息,但是此时,A还并不知晓B路由协议中的路由信息,除非配置B-to-A的路由引入。表3-1:各种路由协议的优先级。通过路由引入,可以实现路由信息在不同路由协议间传递。

lwljh134的博客 621

二分+线段树

题目: C. Store time limit per test 1.0 s memory limit per test 256 MB Ichuan is a store owner and his store has n products, numbered from11tonn. Recently, his business is not very good, and he c...

shaohang_的博客 644

Python之achatbot包语法、参数和实际应用案例

本书是一本PyTorch深度学习实战指南,分为基础(前6章)和进阶(后5章)两大部分。基础部分涵盖张量运算、神经网络、数据预处理及CNN等核心内容;进阶部分则深入图像、文本、音频建模技术,重点解析Transformer架构及大语言模型开发。全书采用"理论+实践"模式,适合从零基础到进阶的PyTorch学习者。

王国平的博客 632

012、乘累加单元(MAC):NPU中最基本的计算单元

本文深入剖析了神经网络处理器(NPU)中的核心计算单元——乘累加单元(MAC)。作者通过实际调试案例揭示了MAC单元设计中的关键问题:定点数格式对齐、累加器位宽陷阱、流水线优化和多MAC同步方案。重点讨论了INT8量化中的边界条件处理、偏置项截断风险以及零值检测等实战经验,并提供了三点实用建议:建立精确的C模型、参考RISC-V P扩展指令集、仔细审查芯片规格书。文章强调硬件加速的实际瓶颈往往在于数据搬运而非计算单元本身,为NPU开发者提供了宝贵的工程实践参考。

m0_50546716的博客 298

hdu6070 二分+线段树 2017多校第四场1004

题意 题目转换后的意思其实就是给你n个数,让你求一个区间[l,r]使该区间内不同数的个数/区间长度最小并输出该值,精度范围是1e-4。题解 网上看了一些博客,都说是分数规划,我还没学,所以不知道。不过按网上来说:对于区间最优比率问题(分数规划问题),常规的解法是二分答案来求。我觉得这题最主要的其实就是怎么想到用二分,这个很关键。 二分为mid时,如果一个区间满足size(l,r)/(r-l+1

WilliamSun0122的博客 789

化工设计软件:AVEVA E3D二次开发_(8).管道系统设计

在 AVEVA E3D Design 中,管道规格的定义是确保设计一致性和标准化的关键。通过二次开发,可以自动生成并管理管道规格。下面是一个示例,展示如何通过编写脚本来定义和管理管道规格。# 导入必要的库 import clr。

kkchenjj的博客 978

hdu 4614 Vases and Flowers(线段树加二分查找)

周赛题1/*2线段树+二分查找3处理比较麻烦,关键在用二分查找配合query()操作找从左往右第一个0和从右往左第一个045卡到的地方:61、区间更新不熟练72、关键点没想到83、低级错误位运算<<写成>>9*/10#include<cstdio>11#include<cstring&gt...

weixin_30947043的博客 81

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

hdu 4614 线段树+二分~

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

skyline 1482

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

hdu4614 线段树+二分

/* hdu4614 线段树裸题 题意 有n个花瓶,两种操作: 1 L R 表示有R朵花,从L开始放,如果遇到有花的瓶子就跳过知道n这个瓶子,输出放花的起始点的花瓶下标 2 L R 表示清空L~R这之间的花瓶中的花,输出有多少支花被扔掉 1、花瓶下标是从0~n-1 2、把空瓶记为1,有花的瓶子记为0 线段树维护区间和,这样就可以直接得出区间空瓶树,然后二分查找出放花的起始点花瓶下标...

甦萌的博客 363

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

hdu4614——线段树+二分

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

mumei的博客 1349

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

hdu4614 线段树区间覆盖和区间查询

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4614 Vases and Flowers Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 5201Accepted Subm...

Source_Roc 665

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

/* HDU 4614 Vases and Flowers 二分 + 线段树 */ #include #include #include using namespace std; #define lson (pos<<1) #define rson (pos<<1|1) const int maxn = 55555; int n,m,pos_x,pos_y; struct Node{ in

花月阁 520

HDU4614 Vases and Flowers(线段树+二分)

给出一些花瓶,有两种操作,1.从x位置向后插入y朵花,遇见已经有的就跳过,直到最后一个花瓶为止,输出第一和最后一个花瓶的位置,2.将x和y之间的花瓶清空输出花数。 线段树的写法差不多一致,关键是用二分来确定每次查询的左右端点。 #include #include #include using namespace std; const int N=500005; struct node {

HOrchard 377

hdu 4614 线段树+二分

题目 这题我们的线段树储存的是区间内空的树有几个,这样就很好做了。如果区间内没有空的那肯定输出那个字符串,然后二分去找k=1的l和r,k=2就用区间长度减去区间询问就好了,其实也不难。 #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<vector> #include<cmath> #include<map>

qq_37073764的博客 841

HDU 4614 线段树+二分查找

Vases and Flowers 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4614 Problem Description   Alice is so popular that she can receive many flowers everyday. She has N vases numbered from 0 to N-1. When...

weixin_30404405的博客 235

Vases and Flowers (HDU - 4614,线段树 + 二分 + 思维)

一.题目链接: HDU-4614 二.题目大意: 有 N个花盆,起初都没有花. 1 个花盆只能插 1 朵花. 有 m 次 2 种操作. ① 1 A F:从第 A 花盆开始插 F 朵花,多余的丢弃. 若一朵花都无法插入,则输出 "Can not put any one." 否则,输出插花的起点、终点. ② 2 A B:将 A ~ B 花盆中的花丢弃,并输出所丢弃的花的个数. 三...

The___Flash的博客 374
上一篇: HDU 5634 Rikka with Phi
下一篇: HDU 5493 Queue (线段树)2015合肥赛区网络赛
just_sort
博客等级 码龄11年 2357粉丝 1667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值