线段树练习5

别再只用跳层连接了!手把手教你用DASI和MDCR模块提升红外小目标检测精度 本文详细介绍了如何利用DASI和MDCR模块提升红外小目标检测精度。通过分析传统跳层连接的缺陷,提出维度感知的特征选择性融合(DASI)和多尺度感受野精炼器(MDCR)的创新方案,显著提升小目标检测性能。实验证明,该方法在多个场景下AP@0.5提升达15.4%,特别适用于安防监控和遥感图像分析。 阅读详情

线段树练习 5 codevs 4927

•闲话:今天调了一天的线段树,结果一下午一道题都没做QAQ,现在一看到代码就眼疼。。。感觉要很久才能恢复过来orz… 不过这个题对于线段树来说应该是个很好的模板题2333

题面

有n个数和5种操作: 
add a b c:把区间[a,b]内的所有数都增加c 
set a b c:把区间[a,b]内的所有数都设为c 
sum a b:查询区间[a,b]的区间和 
max a b:查询区间[a,b]的最大值 
min a b:查询区间[a,b]的最小值

输入描述 Input Description

第一行两个整数n,m,第二行n个整数表示这n个数的初始值
接下来m行操作,同题目描述

输出描述 Output Description

对于所有的sum、max、min询问,一行输出一个答案

样例输入 Sample Input

10 6
3 9 2 8 1 7 5 0 4 6
add 4 9 4
set 2 6 2
add 3 8 2
sum 2 10
max 1 7
min 3 6

样例输出 Sample Output

49
11
4

数据范围及提示 Data Size & Hint

10%:1<n,m<=10
30%:1<n,m<=10000
100%:1<n,m<=100000
保证中间结果在long long(C/C++)、int64(pascal)范围内

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;

#define ll long long 
const int MAXN=1e6+2;

struct Maple{
    ll l,r,minn,maxn,sum,add,flag;
}Tree[MAXN<<2];

ll N,M,x,y,z;
ll a[MAXN<<2];

void Dodata(ll n)
{
    Tree[n].minn=min(Tree[n<<1].minn,Tree[n<<1|1].minn);
    Tree[n].maxn=max(Tree[n<<1].maxn,Tree[n<<1|1].maxn);
    Tree[n].sum=Tree[n<<1].sum+Tree[n<<1|1].sum;
}
void build(ll l,ll r,ll n)
{
    Tree[n].l=l,Tree[n].r=r;
    int mid=(l+r)>>1;
    if(l==r)
    {
        Tree[n].sum=Tree[n].minn=Tree[n].maxn=a[l];
        return ;
    }
    build(l,mid,n<<1);
    build(mid+1,r,n<<1|1);
    Dodata(n);
}
ll DoSum(ll n,ll x)
{
    return (Tree[n].r-Tree[n].l+1)*x;
}
void Spread(ll n)
{
    ll &a=Tree[n].add;
    if(Tree[n].flag)
    {
       Tree[n<<1].add=Tree[n<<1].minn=Tree[n<<1].maxn=a;
       Tree[n<<1|1].add=Tree[n<<1|1].minn=Tree[n<<1|1].maxn=a;  
       Tree[n<<1].flag=Tree[n<<1|1].flag=1;
       Tree[n<<1].sum=DoSum(n<<1,a);
       Tree[n<<1|1].sum=DoSum(n<<1|1,a);
       Tree[n].add=Tree[n].flag=0;
       return ;
    }
    Tree[n<<1].add+=a;
    Tree[n<<1|1].add+=a;
    Tree[n<<1].sum+=DoSum(n<<1,a);
    Tree[n<<1|1].sum+=DoSum(n<<1|1,a);
    Tree[n<<1].minn+=a;
    Tree[n<<1|1].minn+=a;
    Tree[n<<1].maxn+=a;
    Tree[n<<1|1].maxn+=a;
    a=0;
}
ll Ask_Sum(ll n,ll l,ll r)
{
    ll L=Tree[n].l,R=Tree[n].r;
    if(l<=L&&r>=R)
       return Tree[n].sum;
    Spread(n);
    int mid=(L+R)>>1;
    ll Ans=0;
    if(l<=mid) Ans+=Ask_Sum(n<<1,l,r);
    if(r>mid)  Ans+=Ask_Sum(n<<1|1,l,r);
    return Ans;
}
void Add(ll l,ll r,ll n,ll x)
{
    ll L=Tree[n].l,R=Tree[n].r;
    if(l<=L&&r>=R)
    {
        Tree[n].add+=x;
        Tree[n].minn+=x;
        Tree[n].maxn+=x;
        Tree[n].sum+=DoSum(n,x);
        return ;
    }
    Spread(n);
    int mid=(L+R)>>1;
    if(l<=mid) Add(l,r,n<<1,x);
    if(r>mid)  Add(l,r,n<<1|1,x);
    Dodata(n);
}
ll Ask_Max(ll n,ll l,ll r)
{
    ll L=Tree[n].l,R=Tree[n].r;
    if(l<=L&&r>=R)
       return Tree[n].maxn;
    Spread(n);
    int mid=(L+R)>>1;
    ll Ans=-1*(1e+9);
    if(l<=mid) Ans=max(Ans,Ask_Max(n<<1,l,r));
    if(r>mid)  Ans=max(Ans,Ask_Max(n<<1|1,l,r));
    return Ans;
}
ll Ask_Min(ll n,ll l,ll r)
{
    ll L=Tree[n].l,R=Tree[n].r;
    if(l<=L&&r>=R)
       return Tree[n].minn;
    Spread(n);
    int mid=(L+R)>>1;
    ll Ans=1e+9;
    if(l<=mid) Ans=min(Ans,Ask_Min(n<<1,l,r));
    if(r>mid)  Ans=min(Ans,Ask_Min(n<<1|1,l,r));
    return Ans;
}
void Set(ll n,ll l,ll r,ll x)
{
    ll L=Tree[n].l,R=Tree[n].r;
    if(l<=L&&r>=R)
    {
        Tree[n].minn=Tree[n].maxn=Tree[n].add=x;
        Tree[n].sum=DoSum(n,x);
        Tree[n].flag=1;
        return ;
    }
    Spread(n);
    int mid=(L+R)>>1;
    if(l<=mid) Set(n<<1,l,r,x);
    if(r>mid)  Set(n<<1|1,l,r,x);
    Dodata(n);
}
int main()
{
    string S;
    scanf("%lld%lld",&N,&M);
    for(ll i=1;i<=N;++i)
      scanf("%lld",&a[i]);
    build(1,N,1); 
    for(ll i=1;i<=M;++i)
    {
        cin>>S;
        if(S=="sum") scanf("%lld%lld",&x,&y),
                     printf("%lld\n",Ask_Sum(1,x,y));
        if(S=="add") scanf("%lld%lld%lld",&x,&y,&z),
                     Add(x,y,1,z);
        if(S=="max") scanf("%lld%lld",&x,&y),
                     printf("%lld\n",Ask_Max(1,x,y));
        if(S=="min") scanf("%lld%lld",&x,&y),
                     printf("%lld\n",Ask_Min(1,x,y));
        if(S=="set") scanf("%lld%lld%lld",&x,&y,&z),
                     Set(1,x,y,z);
    }
    return 0;
}
48-OpenCVSharp —-Cv2.MatchTemplate() 函数功能(模板匹配)详解 是 OpenCV 中一个常见且简单的模板匹配算法,适用于目标检测和图像识别中的静态场景。它的优点是易于理解和实现,但在面对旋转、尺度变化、复杂背景或光照变化等挑战时,效果可能大打折扣。在这些情况下,结合多尺度图像、特征匹配算法(如 SIFT、SURF、ORB 等)以及深度学习模型可以显著提高匹配的鲁棒性和精度。模板匹配仍然是一个非常基础但强大的工具,适用于一些简单的图像匹配任务。对于更加复杂和动态的图像识别任务,我们通常会使用其他更加复杂的算法或者深度学习模型来处理。 阅读详情

相关推荐

用AI从0开始量化交易-制定学习计划安装学习环境

量化小白,利用AI从零开始学量化

weixin_52285994的博客 2112

[codevs4927] 线段树练习5(线段树)

题目 描述 有n个数和5种操作 add a b c:把区间[a,b]内的所有数都增加c set a b c:把区间[a,b]内的所有数都设为c sum a b:查询区间[a,b]的区间和 max a b:查询区间[a,b]的最大值 min a b:查询区间[a,b]的最小值 输入 第一行两个整数n,m,第二行n个整数表示这n个数的初始值 接下来m行操作,同题目描述

PhantomAgony 495

InfiniteTalk (Wan2.1) 数字人 A800 落地实战:从依赖地狱到完美运行的保姆级指南

摘要:本文详细记录了在A800(80GB)服务器上部署InfiniteTalk开源数字人项目的完整流程。该项目基于阿里Wan2.1视频生成模型,支持无限时长流式生成,但环境配置极其复杂。作者总结了18个关键问题点,包括Python版本冲突、CUDA算子缺失等,并提供了黄金配置方案:使用Python3.10+PyTorch2.5.1环境,精准控制FlashAttention等核心库版本,以及针对A800的显存优化策略。最终实现480P视频30秒/步的生成速度,相比默认配置提升3.7倍性能。

软件工程师文艺 2042

ssl2648-线段树练习5【线段树】

正题 题意 经典线段树题,不过是单点修改。 解题思路 直接线段树 代码 #include&lt;cstdio&gt; using namespace std; struct treenode{ int l,r,cover; }tree[400000]; int n,m,x,y; char c; void build(int k,int a,int b)//线...

QuantAsk 429

SDM660电源部分配置:

SDM660电源部分配置: Panel power supplies 1、Reference power supplies Description Name Regulator Voltage (V) Panel power supply 0 vddio PMIC 660/L11 1.8 Panel power supply 1 Lab PMIC 660/lab 4.6 Panel power s...

weixin_41811215的博客 4728

嵌入式设备系统日志记录及调试技巧_嵌入式日志系统(1),如何成为杰出的程序员

这里面我使用的芯片为哈弗体系,全局常量存储编译器默认分配在flash,需要注意如果使用片内flash时,注意存储调试等级的flash块不要与代码区重合,要不然修改调试等级擦除flash块同时PC指针指向当前块的代码区,会导致仪器死机;这个也是之前用的比较多的,以上代码是模仿linux 内核的写法,可以比较好的做到日志信息分层,编译时相加对应的编译开关即可。但有个弊端就是,切换debug等级时,需要重新编译且需更新固件,而嵌入式设备出现异常后更新固件往往复位后,故障有时很难复现,调试起来比较浪费时间。

2401_84240431的博客 1293

[CodeVS 4927] 线段树练习5:两个Lazy Tag的线段树

题意:维护一个长为n(n<=100000)的数列,支持区间加减、区间赋值两种修改,区间最小值、区间最大值、区间求和三种查询。 发现自己记不清线段树区间赋值怎么写了,而且感觉自己的写法和刘汝佳老师的蓝书上的代码不一样,于是做一做这道题。 刘汝佳老师定义赋值标记的优先级高于累加标记,于是同时有两个标记的时候需要先考虑赋值标记,再加上累加标记的值。我的写法略有不同。

chrt's blog 763

MIPI信号的分析--结合示波器实际测试波形

如果排查的思路对你有帮助,请记住 消雨匆匆 or 大吊工。码字和排查很累,仅此而已 ,硬件不是抄电路,拿烙铁,懂点软件,细致分析,找问题和破案搜集线索是一样的。 部分内容来自于此博客的大神总结: http://www.elecfans.com/news/wangluo/20170323499614.html http://www.elecfans.com/yuanqijian/jieko...

消雨匆匆 4万+

线段树练习五(线段树)

线段树练习五 Description 一行N个方格,开始每个格子里的数都是0。现在动态地提出一些问题和修改:提问的形式是求某一个特定的子区间[a,b]中所有元素的和;修改的规则是指定某一个格子x,加上或者减去一个特定的值A。现在要求你能对每个提问作出正确的回答。1≤N≤100000,提问和修改的总数可能达到100000条。 Input 20 //方格个数 6 //有几组操作 M 1 1 //表示修改,第一个表示格子位置,第二个数表示在原来的基础上加上的数, M 2 2 M 3 4 M 3 -5 M 6 7

我很菜的好吧 984

基于BERTopic模型的英文20新闻数据集主题聚类及可视化

BERTopic是基于深度学习的一种主题建模方法。BERT是一种用于NLP的预训练策略,它成功地利用了句子的深层语义信息。

Cachel Wood的博客 1460

【STM32系统】基于STM32+手机APP设计的智能停车场系统

功能简介1、进出停车场时需要刷卡,进行一个记时、计费的功能。2、停车位配有超声波检测,主要识别车位是否被占用。3、车位区域配有OLED显示屏,用户可以通过显示屏看到空闲车位。4、车位配有车位灯。当用户找不到车位可以通过手机点亮车位灯5、停车场配有温湿度检测和烟雾检测模块。当环境发生异常状态。会触动紧急报警。6、停车场信息会通过Wi-Fi发送数据上传至阿里云。用户可以通过手机了解到停车场空闲车位和停车时间、费用。

嵌入式阿齐Archie 2万+

<线段树系列4> codevs 4927 线段树练习5

鉴于<线段树练习4>我还没有打 所以 <线段树系列4>就变成了 线段树练习5 w(゚Д゚)w 没错就是这样 ┭┮﹏┭┮—>题外话:调了两天才调好,忘了在下放标记时把儿子的flg标为1!!!!!codevs 4927 线段树练习5题目描述 Description 有n个数和5种操作 add a b c:把区间[a,b]内的所有数都增加c set a b c:把区间[a,b]内

Loi_LXTT 408

Dify框架面试内容整理-如何进行Dify的二次开发?

无论是轻量修改界面,还是深度集成自定义模型、Agent、知识库,你都可以很方便地进行二次开发。,你可以基于它的开源架构对功能进行扩展、集成第三方服务、修改界面风格,甚至定制新的AI工作流程。前端:Node.js >= 16,React + TypeScript + Tailwind。接入自己的模型API(如:调用LLaMA、Baichuan、ChatGLM)。修改路径:/api/app/services/providers/可接入你自己的向量数据库(Qdrant、Milvus、FAISS)

不务正业的猿 2003

形形色色的线段树练习——codevs线段树练习1-5:线段树,树状数组及分块模板

形形色色的线段树练习http://codevs.cn/problem/1080/线段树练习1//线段树版本 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; typedef long long ll; int t,n,m,pos,

东隅已逝,桑榆非晚~Loi_MurasameKatana 553

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

[codevs]线段树练习5

http://codevs.cn/problem/4927/ #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <string> using n...

weixin_30446613的博客 124

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

codevs 4927 线段树练习5

4927 线段树练习5 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述Description 有n个数和5种操作 add a b c:把区间[a,b]内的所有数都增加c set a b c:把区间[a,b]内的所有数都设为...

HJ921004的博客 190

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

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

4927 线段树练习5

4927 线段树练习5 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 有n个数和5种操作add a b c:把区间[a,b]内的所有数都增加cset a b c:把区间[a,b]内的所有数都设为csum a b:查询区间[a,b]的区间和max a b:查询区间[a,b]的最大值min

Mercury的博客 322

SSL2648 线段树练习题5【线段树】

这道题其实也是一道线段树模板题 但是这道题是动态查询和修改。 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; int n,m,x,js,l,r; char c; struct node { int l,r,cover; }tree[4000010]; void build(

JA_yichao欢迎你 cnblogs账号:https://www.cnblogs.com/mayichao/ 211

codevs4927 线段树练习5

题目描述 Description 有n个数和5种操作 add a b c:把区间[a,b]内的所有数都增加c set a b c:把区间[a,b]内的所有数都设为c sum a b:查询区间[a,b]的区间和 max a b:查询区间[a,b]的最大值 min a b:查询区间[a,b]的最小值 输入描述 Input Description 第一行...

dgoh41514的博客 164

codevs 4927 线段树练习5 线段树基本操作模板

4927 线段树练习5 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述Description 有n个数和5种操作 add a b c:把区间[a,b]内的所有数都增加c set a b c:把区间[a,b]内的所有数都设...

weixin_30344795的博客 144

codevs 4927 线段树练习5

                codevs 4927 线段树练习5 题目描述Description 有n个数和5种操作 add a b c:把区间[a,b]内的所有数都增加c set a b c:把区间[a,b]内的所有数都设为c sum a b:查询区间[a,b]的区间和 max a b:查询区间[a,b]的最大值 min a b:查询区间[a,b]的最小值...

weixin_30361641的博客 112

4927 线段树练习5【多重标记】

4927 线段树练习5 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述Description 有n个数和5种操作 add a b c:把区间[a,b]内的所有数都增加c set a b c:把区间[a,b]内的所有...

weixin_33831673的博客 188

codevs 4927 线段树练习5 题解

一、题目: codevs原题 二、思路: 这将是我NOIP2018前的最后一篇题解,从现在到NOIP我将进入总复习阶段。祝NOIP rp++。 那么这道题显然会有两个标记,一个add标记,一个set标记。那么怎样才能使这两个标记互不影响呢? 我们规定一个顺序,当set标记打过来时,我们首先将add标记清零,再打set标记。 改了改代码风格,具体请见博客置顶文章。 三、代码: /* * @Auth...

weixin_30929195的博客 150

Codevs 4927 线段树练习5

4927 线段树练习5 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有n个数和5种操作 add a b c:把区间[a,b]内的所有数都增加c set a b c:把区间[a,b]内的所有数都设为csum a b:查询区间[a,b]的区间和max a b:查询区间[a,b]的最大值min a b:查询区间[a,b]的最

苦鬼·。 392
上一篇: 神奇的幻方
下一篇: Remmarguts' Date POJ - 2449
Loi_Mapleleaf
博客等级 码龄10年 17粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值