Comet OJ - Contest #14 (D转转的数据结构题) set+树状数组

本文介绍了一种类似珂朵莉树的数据结构在解决区间更新与查询问题中的巧妙应用,通过代码示例详细解释了如何使用该数据结构进行区间分割与更新操作,以高效解答算法竞赛中的复杂问题。

这个很像珂朵莉树啊 ~   

思路还是非常巧妙的.   

code:

#include <cstdio> 
#include <set> 
#include <map> 
#include <vector>
#include <algorithm>
#include <cstring>
#include <string>
#define N 500009 
#define ll long long 
#define setIO(s) freopen(s".in","r",stdin) 
using namespace std;           
namespace BIT 
{
    ll c[N]; 
    int lowbit(int t) { return t&(-t); }   
    ll query(int x) 
    { 
        ll re=0;   
        for(;x>0;x-=lowbit(x)) re+=c[x];   
        return re;  
    }     
    void update(int x,ll v) { for(;x<N;x+=lowbit(x)) c[x]+=v; }      
};        
int n,m,Q; 
ll answer[N];  
struct node 
{
    int l,r,v,d;  
    node(int l=0,int r=0,int v=0,int d=0):l(l),r(r),v(v),d(d){}  
    bool operator<(node b) const { return l<b.l; }   
}a[N],cn[N];          
set<node>se;          
set<node>::iterator t;         
struct ask{ int l,r,id;  }as[N];    
bool cmp(ask a,ask b) { return a.r<b.r; }        
void split(node a,int pos) 
{    
    if(a.l==a.r||pos<=a.l||pos>a.r) return;    
    node p=a;      
    se.erase(a);  
    p.l=pos,a.r=pos-1;          
    se.insert(a); 
    se.insert(p);                       
}
void Insert(node a) 
{     
    int l=a.l,r=a.r,v=a.v,d=a.d,tot=0;          
    set<node>::iterator itl,itr,it; 
    itl=se.lower_bound(node(l+1,0,0,0));                 
    if(itl!=se.begin()) --itl,split(*itl,l);                               
    itr=se.lower_bound(node(r+1,0,0,0));       
    if(itr!=se.begin()) --itr,split(*itr,r+1);    
    itl=se.lower_bound(node(l,0,0,0));  
    itr=se.lower_bound(node(r+1,0,0,0));       
    for(it=itl;it!=itr;it++)  
    {
        BIT::update((*it).d,-(ll)((*it).r-(*it).l+1)*(*it).v);            
        cn[++tot]=*it;  
    }   
    for(int i=1;i<=tot;++i) se.erase(cn[i]); 
    BIT::update(a.d,(ll)(a.r-a.l+1)*a.v);                                          
    se.insert(a);        
}              
int main() 
{ 
    // setIO("input");      
    int i,j; 
    scanf("%d%d%d",&n,&m,&Q);  
    for(i=1;i<=n;++i) scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].v),a[i].d=i;       
    for(i=1;i<=Q;++i) scanf("%d%d",&as[i].l,&as[i].r),as[i].id=i;   
    sort(as+1,as+1+Q,cmp);     
    for(j=i=1;i<=Q;++i) 
    {    
        for(;j<=n&&a[j].d<=as[i].r;++j) Insert(a[j]);  

        answer[as[i].id]=BIT::query(as[i].r)-BIT::query(as[i].l-1);        
    }         
    for(i=1;i<=Q;++i) printf("%lld\n",answer[i]);   
    return 0; 
}

  

 

内容概要:本文为《科技类企业品牌传播白皮书》,系统阐述了新闻媒体发稿、自媒体博主种草与短视频矩阵覆盖三大核心传播策略,并结合“传声港”平台的AI工具与资源整合能力,提出适配科技企业的品牌传播解决方案。文章深入分析科技企业传播的特殊性,包括受众圈层化、技术复杂性与传播通俗性的矛盾、产品生命周期影响及2024-2025年传播新趋势,强调从“技术输出”向“价值引领”的战略升级。针对三种传播方式,分别从适用场景、操作流程、效果评估、成本效益、风险防控等方面提供详尽指南,并通过平台AI能力实现资源智能匹配、内容精准投放与全链路效果追踪,最终构建“信任—种草—曝光”三位一体的传播闭环。; 适合人群:科技类企业品牌与市场负责人、公关传播从业者、数字营销管理者及初创科技公司创始人;具备一定品牌传播基础,关注效果可量化与AI工具赋能的专业人士。; 使用场景及目标:①制定科技产品全生命周期的品牌传播策略;②优化媒体发稿、KOL合作与短视频运营的资源配置与ROI;③借助AI平台实现传播内容的精准触达、效果监测与风险控制;④提升品牌在技术可信度、用户信任与市场影响力方面的综合竞争力。; 阅读建议:建议结合传声港平台的实际工具模块(如AI选媒、达人匹配、数据驾驶舱)进行对照阅读,重点关注各阶段的标准化流程与数据指标基准,将理论策略与平台实操深度融合,推动品牌传播从经验驱动转向数据与工具双驱动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值