HDU 1540 Tunnel Warfare(线段树区间合并)

FPGA赋能:从加权灰度均值到快速收敛的自动曝光实战 本文深入探讨了FPGA在工业视觉自动曝光算法中的应用,重点介绍了加权灰度均值法的优化实现与快速收敛策略。通过硬件友好的算法改造和流水线架构设计,FPGA方案能在1帧内完成曝光调整,显著提升处理速度和能效比,适用于复杂光照条件下的工业检测场景。 阅读详情

题意:

题目定义了3种操作
D代表破坏村庄,
R代表修复最后被破坏的那个村庄,
Q代表询问包括x在内的最大连续区间是多少

思路:

和前面几道线段树的区间合并一样,在线段树的区间内,我们要用三个变量记录左边连续区间,右边连续区间和最大连续区间。
这题主要的难点是怎么查询。
我的查询函数是这么写的。

int query(int o, int L, int R, int pos) {
    if(L == R) return 0;
    int M = MID;
    pushDown(o, L, R);
    if(M - mxR[ls] + 1 <= pos && pos <= M + mxL[rs])
        return mxR[ls] + mxL[rs]; 
    else if(pos <= M) return query(lson, pos);
    else return query(rson, pos);
}

判断当前的位置是否满足在左边连续和右边连续的区间之内。
如果满足返回当前该区间的长度,否则向下查找。

my code

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

int n, m;
int mxL[N<<2], mxR[N<<2], mx[N<<2], cov[N<<2];
vector<int> vec;

int max(int a, int b, int c) {
    return max(a, max(b, c));
}

void pushUp(int o, int L, int R) {
    int M = MID;
    mxL[o] = mxL[ls], mxR[o] = mxR[rs];
    mx[o] = max(mx[ls], mx[rs], mxR[ls] + mxL[rs]);

    if(mxL[ls] == LEN(L, M)) mxL[o] += mxL[rs];
    if(mxR[rs] == LEN(M+1, R)) mxR[o] += mxR[ls];

    if(cov[ls] == cov[rs]) cov[o] = cov[ls];
    else cov[o] = -1;
}

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

void build(int o, int L, int R) {
    cov[o] = -1;
    if(L == R) {
        mxL[o] = mxR[o] = mx[o] = cov[o] = 1;
        return ;
    }
    int M = MID;
    build(lson);
    build(rson);
    pushUp(o, L, R);
}

void modify(int o, int L, int R, int pos, int val) {
    if(L == R) {
        mxL[o] = mxR[o] = mx[o] = cov[o] = val;
        return ;
    }
    int M = MID;
    pushDown(o, L, R);
    if(pos <= M) modify(lson, pos, val);
    else modify(rson, pos, val);
    pushUp(o, L, R);
}

int query(int o, int L, int R, int pos) {
    if(L == R) return 0;
    int M = MID;
    pushDown(o, L, R);
    if(M - mxR[ls] + 1 <= pos && pos <= M + mxL[rs])
        return mxR[ls] + mxL[rs]; 
    else if(pos <= M) return query(lson, pos);
    else return query(rson, pos);
}

int main() {
    char op[10];
    int ql, qr, x;
    while(~scanf("%d%d", &n, &m)) {
        build(1, 1, n);
        vec.clear();
        while(m--) {
            scanf("%s", op);
            if(op[0] == 'D') {
                scanf("%d", &x);
                vec.push_back(x);
                modify(1, 1, n, x, 0);
            }else if(op[0] == 'Q') {
                scanf("%d", &x);
                int ans = query(1, 1, n, x);
                printf("%d\n", ans);
            }else if(op[0] == 'R') {
                x = vec.back();
                vec.pop_back();
                modify(1, 1, n, x, 1);
            }
        }
    }
    return 0;
}
新手避坑指南:从GEO数据库下载单细胞测序数据的5个关键步骤(附实操截图) 本文为单细胞测序数据下载新手提供5个关键避坑步骤,涵盖数据搜索准备、样本量评估、文件选择决策、元数据诊断及高效下载技术。通过实操截图和代码示例,帮助研究者快速锁定GEO数据库中的优质单细胞测序数据,避免常见错误。 阅读详情

相关推荐

从MATLAB到版图:手把手复现一篇16位1MSPS SAR ADC的完整设计流程(含Cadence与Verilog代码)

本文详细介绍了16位1MSPS SAR ADC的完整设计流程,从MATLAB行为级建模到Cadence电路实现,再到Verilog数字逻辑编码和版图生成。重点讲解了高精度逐次逼近型模数转换器的关键技术,包括电容阵列建模、校准算法实现、FFT性能验证以及混合信号仿真等,为工程师提供了实用的工业级设计指南。

weixin_28703507的博客 301

Tunnel Warfare --HDU1540&POJ2892(简单的暴力分块替换线段树区间合并)

Tunnel Warfare Time Limit:1000MS Memory Limit:131072K 题目链接http://poj.org/problem?id=2892 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensive...

孤风的博客 394

更多 LSTM 变种——应用于 CMAPSS 数据集

本文并模型介绍,只是把一些比较火的技术,像双向注意力机制,自注意力机制这样的比较火的内容,简单的和LSTM堆叠,结果发现效果都不如最基础的,这里作者将本人代码及实现结果,进行展示,给各位想更改LSTM的朋友一些。

2301_77491330的博客 1765

Tunnel Warfare(线段树+查找最大值最小值+模板)

Tunnel Warfare Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 27   Accepted Submission(s) : 7 Problem Description During the War of

sdau20163940的博客 482

信号完整性SI-PI

SI设计的主要难点在于需要综合信号的幅度、噪声、边沿、延时等影响信号质量的多种因素,并且这种因素常常相互依赖、互相影响,交叉在一起。1.1、信号过冲 (欠阻尼状态,可并联一个合适的电容):过冲会造成强烈的电磁干扰,另一方面会损伤后面的电路的输入及,甚至失效。信号完整性SI:是指电路系统中信号的质量,如果在要求的时间内,信号能不失真的从源端传输到接收端。优点:提供较慢的上升时间,减少反系量,产生更小的EMI,从而降低过冲,增加信号质量。导线之间的间距过小, 就会产生串扰,间距越小、串扰越大。

weixin_42304393的博客 4869

LLC型自驱动半桥谐振变换器:电压电流变化与自然换向解析

变换器的工作状态经历了多个阶段,从模态一的关断状态,到模态二和三的电流供电状态,每个阶段都得到了合理的设计和优化。的工作原理,尤其是在半个周期内的电压和电流变化。上图 展示了该变换器在工作时的电压和电流波形,它为我们揭示了变换器如何通过精确的电流和电压控制,优化性能并实现高效能转换。,并根据负载情况调整电流和电压的工作模式,能够极大提升变换器的效率,尤其是在零电压开通和自然换向的设计中,发挥着关键作用。这意味着,电流会随着时间周期的变化,呈现典型的振荡波形,从而达到良好的电流控制。是两个关键的电流变量。

weixin_43199439的博客 279

Tunnel Warfare(线段树)

Tunnel Warfare 题意:D t摧毁村庄t,R 重建最后一个摧毁的村庄, Q t查询与t村庄连接的村庄个数。 思路:线段树维护连续子区间,将未被破坏的村庄看成1,破坏的看成0,线段树维护3个信息,前缀最长1序列,后缀最长1序列,最长1序列。 #include<bits/stdc++.h> using namespace std; struct node{ int l...

天真有邪的博客 455

【微服务】SpringBoot 对接飞书审批流程使用详解

SpringBoot 对接飞书审批流程使用详解

congge_study的博客 3769

HDU1540 Tunnel Warfare(线段树区间合并)

HDU1540  Tunnel Warfare(线段树区间合并)During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast areas of north China Plain. Generally speaking, villages connected by...

GYH0730的博客 605

基于VLFM的中文指令视觉语言导航系统设计与实现

文章摘要 本文介绍了一个基于VLFM(视觉语言边界地图)的中文指令视觉语言导航系统设计与实现。该系统采用模块化架构,包含三维场景渲染、URDF机器人仿真、VLFM导航引擎、中文指令解析和PyQt图形界面五大核心模块。系统支持自定义GLB场景模型和URDF机器人模型,通过transformers和langchain实现中文自然语言指令解析,利用VLFM算法进行语义导航决策。技术实现上详细介绍了GLB模型加载器开发、URDF机器人控制、VLFM导航算法集成以及PyQt界面设计。该系统在Ubuntu环境下运行,依

AI的内部世界的博客 205

【数据分享】2012-2022年全国及各城市POI(兴趣点)数据(超20G)

POI(一般作为Point of Interest的缩写,也有Point of Information的说法),通常称作兴趣点,泛指互联网电子地图中的点类数据,基本包含名称、地址、坐标、类别四个属性;随着互联网电子地图服务与LBS应用的普及,POI无论从概念范畴,还是从信息纵深都有了长足发展,互联网各个风口或火山口都和POI有一定关系,如O2O、电商、社交、互联网金融、共享经济等。

J_Giser的博客 2732

hdu 1540 Tunnel Warfare 【线段树 区间合并】

Tunnel WarfareTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description During the War of Resistance Against Japan, tunnel warfare was carried out exten

lh的博客 421

Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图

其中,阵列方向图是评价阵列性能的重要参数之一。均匀面阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个圆盘。均匀线阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个矩形。本文将采用Matlab进行仿真,分别实现均匀面阵方向图、均匀线阵方向图和均匀圆阵方向图,并对三种阵列进行比较分析。通过以上代码仿真,我们可以对均匀面阵、均匀线阵和均匀圆阵进行方向图的绘制,进一步分析不同阵列在天线性能方面的差异。Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图。

2301_79326857的博客 3436

hdu1540 Tunnel Warfare(线段树区间合并详解)

http://acm.hdu.edu.cn/showproblem.php?pid=1540 题意:给你一些村庄,D代表毁灭该村,R代表恢复该村,Q代表和x村相连的未被毁灭的村庄。 前两者明显就是单点更新了,查询的时用到了区间合并。 区间合并果然麻烦,连想带懂几乎花了我将近三天,不过好在做掉了。 思路:注释都在代码里了,适合入门。总的来说,增加了三个域ls, r

Iguodala的博客 775

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HDU-1540-Tunnel Warfare(线段树单点修改,区间合并)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540 题目大意:给出n个村庄,m次操作,操作分为三种:D,Q,R D:炸毁pos位置的村庄。Q查询pos位置的村庄最多的联系村庄。R修好最近一个被炸毁的村庄 思路:线段树区间合并入门题。对于炸毁和修复的,将该点更新状态,维护区间左连续,右连续和中间连续合即可。 ACCode: #inclu...

永远鲜红の幼月的博客 207

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hdu1540-Tunnel Warfare 线段树区间合并

Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9013    Accepted Submission(s): 3479 Problem Description During the

wangheng 353

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HDU1540:Tunnel Warfare(线段树区间合并)

Problem Description During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast areas of north China Plain. Generally speaking, villages connected by tunnels la

ACM!荣耀之路! 9302

HDU-1540 Tunnel Warfare 线段树 区间合并

http://acm.hdu.edu.cn/showproblem.php?pid=1540 题意:  给出直线上一系列的村庄,如果相邻村庄都没有被破坏,  则两村庄是连接的,题目给出一系列的破坏操作,对指定号码的村庄进行破坏,  还有一系列的询问操作,询问与指定号码的村庄直接相连或间接相连的村庄有几个,  还有一个修复操作,是对最后破坏的村庄进行修复。  //线段树 定义三

菜鸟成长ing 896

HDU - 1540 Tunnel Warfare(线段树+区间合并)

题目链接:点击查看 题目大意:给定n个村庄,初始化全部连接为一条直线,需要依次执行m个操作,D表示摧毁第i个村庄的连接,R表示恢复最后一 个被摧毁的村庄的连接,Q表示询问包括本身在内,与第i个村庄相连接的有多少个村庄(间接连接也算) 题目分析:这个题需要用到区间合并的思想,并且用线段树来实现,应该算是个裸题了,把pushup的板子套进线段树里就OK, 不过这个题的query函数比较难写,我...

Falcon的博客 488

hdu 1540/POJ 2892 Tunnel Warfare 【线段树区间合并】

Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) 链接:hdu 1540        POJ 2892 Problem Description  During the War of Resistance Against Jap

Fighting! 2366

Tunnel Warfare HDU - 1540 线段树区间合并

During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast areas of north China Plain. Generally speaking, villages connected by tunnels lay in a line. Except t...

why932346109的博客 194

HDU 1540 Tunnel Warfare/线段树区间合并

这个他配了图,很快就看懂了

m0_73843712的博客 220

HDU1540 Tunnel Warfare 线段树区间合并

HDU1540 Tunnel Warfare 线段树区间合并

qq_44919369的博客 179

HDU1540 Tunnel Warfare【线段树区间合并、平衡树】

题目链接 题意 有一段连续的序列[1,2,3,...,n][1,2,3,...,n][1,2,3,...,n],有3种操作 删除数字 KKK,KKK的两边断开 询问数字 KKK 所在的连续段的长度(若KKK被删除则长度为0) 回撤上一次删除操作 题解 有两种做法 线段树区间合并,记录区间的最长左连续段长度和最长右连续段长度 平衡树记录删除的结点,询问的答案就是 KKK的后继-前驱-1 #include<iostream> #include<sstream> #include&

qq_50554695的博客 190

hdu1540 Tunnel Warfare 线段树区间合并

Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6565    Accepted Submission(s): 2527 Problem Description During the

EventQueue的博客 482

Tunnel Warfare(HDU1540+线段树+区间合并)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540 题目: 题意:总共有n个村庄,有q次操作,每次操作分为摧毁一座村庄,修复一座村庄,和查询与询问的村庄相连接的城市数量。 思路:线段树+区间合并。 代码实现如下: 1 #include <set> 2 #include <map> ...

di6499的博客 138
上一篇: HDU 2871 Memory Control(线段树区间合并+二分)
下一篇: CodeForces 46D Parking Lot(线段树区间合并)
HelloWorld10086
博客等级 码龄12年 88粉丝 614原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值