BZOJ 4631: 踩气球 线段树+vector

本文介绍了一种使用线段树进行区间更新和查询的优化算法,通过为每个节点维护一个vector来存储额外信息,实现了高效的数据结构操作。文章详细解释了如何构建线段树、更新区间元素及查询过程,并提供了完整的代码实现。

对于每个节点开一个 vector 就好了. 

code: 

#include <cstdio> 
#include <vector>  
#include <string> 
#include <cstring>
#include <algorithm>  

#define N 100006 
#define lson now<<1 
#define rson now<<1|1  

using namespace std; 

namespace IO { 

    void setIO(string s) 
    {
        string in=s+".in"; 
        string out=s+".out"; 
        freopen(in.c_str(),"r",stdin); 
        // freopen(out.c_str(),"w",stdout); 
    }

}; 
 
int ans;  

int sum[N],A[N];  

struct node {    
    int sum; 
    vector<int>v;   
}s[N<<2];           

void push(int l,int r,int now,int L,int R,int p) 
{  
    if(l>=L&&r<=R) 
    {  
        ++sum[p];   
        s[now].v.push_back(p);  
        return; 
    }
    int mid=(l+r)>>1;  
    if(L<=mid)  push(l,mid,lson,L,R,p); 
    if(R>mid)   push(mid+1,r,rson,L,R,p);  
}  

void build(int l,int r,int now) 
{ 
    if(l==r)  
    {
        s[now].sum=A[l];  
        return; 
    } 
    int mid=(l+r)>>1;  
    build(l,mid,lson); 
    build(mid+1,r,rson); 
    s[now].sum=s[lson].sum+s[rson].sum;  
} 

void update(int l,int r,int now,int p) 
{    
    --s[now].sum;                     
    if(!s[now].sum) 
    {
        for(int i=0;i<s[now].v.size();++i) 
        {
            --sum[s[now].v[i]];          
            if(!sum[s[now].v[i]]) ++ans;  
        }
    }
    if(l==r) return;   
    int mid=(l+r)>>1;   
    if(p<=mid)  update(l,mid,lson,p); 
    else update(mid+1,r,rson,p);  
}

int main() 
{ 
    // IO::setIO("input");  
    int i,j,n,m; 
    scanf("%d%d",&n,&m); 
    for(i=1;i<=n;++i)  scanf("%d",&A[i]);    
    build(1,n,1); 
    for(i=1;i<=m;++i) 
    {      
        int l,r; 
        scanf("%d%d",&l,&r);    
        push(1,n,1,l,r,i);  
    }
    int q; 
    scanf("%d",&q); 
    while(q--) 
    {     
        int x; 
        scanf("%d",&x); 
        x=(x+ans-1)%n+1;  
        update(1,n,1,x);    
        printf("%d\n",ans);  
    }
    return 0; 
}

  

当前,全球经济格局深刻调整,数字化浪潮席卷各行各业,智能物流作为现代物流发展的必然趋势和关键支撑,正迎来前所未有的发展机遇。以人工智能、物联网、大数据、云计算、区块链等前沿信息技术的快速迭代与深度融合为驱动,智能物流不再是传统物流的简单技术叠加,而是正在经历一场从自动化向智能化、从被动响应向主动预测、从信息孤岛向全面互联的深刻变革。展望2025年,智能物流系统将不再局限于提升效率、降低成本的基本目标,而是要构建一个感知更全面、决策更精准、执行更高效、协同更顺畅的智慧运行体系。这要求我们必须超越传统思维定式,以系统化、前瞻性的视角,全面规划和实施智能物流系统的建设。本实施方案正是基于对行业发展趋势的深刻洞察和对未来需求的精准把握而制定。我们的核心目标在于:通过构建一个集成了先进感知技术、大数据分析引擎、智能决策算法和高效协同平台的综合智能物流系统,实现物流全链路的可视化、透明化和智能化管理。这不仅是技术层面的革新,更是管理模式和服务能力的全面提升。本方案旨在明确系统建设的战略方向、关键任务、技术路径和实施步骤,确保通过系统化部署,有效应对日益复杂的供应链环境,提升整体物流韧性,优化资源配置效率,降低运营成本,并最终为客户创造更卓越的价值体验。我们致力于通过本方案的实施,引领智能物流迈向更高水平,为构建现代化经济体系、推动高质量发展提供强有力的物流保障。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值