bzoj4196: [Noi2015]软件包管理器

SigmaStudio进阶技巧:如何用ADAU1701实现60段EQ与防啸叫算法 本文深入探讨了如何在ADAU1701 DSP芯片上实现专业级音频处理系统。通过精密的资源规划与架构设计,详细讲解了构建高达60段参数均衡器(EQ)的有效方法,并集成了移频与自适应陷波双策略的智能防啸叫算法。内容涵盖从SigmaStudio工程优化、算法模块组合到系统联调实战的全流程,旨在帮助中高级开发者充分利用ADAU1701性能,打造稳定、高效的音频处理解决方案。 阅读详情

传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=4196

思路:裸裸的树链剖分。设已安装的为1,未安装的为0。

对于安装操作,就是询问x到0的路径上0的个数,然后把这个路径赋为1

对于卸载操作,就是询问x的子树中1的个数,然后把子树赋为0。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ls (p<<1)
#define rs ((p<<1)|1)
#define mid ((l+r)>>1)
const int maxn=200010,maxt=maxn<<2;
using namespace std;
int n,Q,last[maxn],pre[maxn],now[maxn],son[maxn],tot,a[maxn],cnt,w[maxn],size[maxn],hson[maxn],top[maxn],fa[maxn],dep[maxn];
char op[12];
 
struct Tree{
    int sum[maxt],cov[maxt],size[maxt];
    void down(int p){
        if (cov[p]!=-1){
            sum[ls]=size[ls]*cov[p],sum[rs]=size[rs]*cov[p];
            cov[ls]=cov[rs]=cov[p],cov[p]=-1;
        }
    }
    void build(int p,int l,int r){
        if (l==r){sum[p]=0,cov[p]=-1,size[p]=1;return;}
        build(ls,l,mid),build(rs,mid+1,r);
        sum[p]=sum[ls]+sum[rs],size[p]=size[ls]+size[rs];
    }
    void change(int p,int l,int r,int a,int b,int v){
        if (l==a&&r==b){sum[p]=v*size[p],cov[p]=v;return;}
        down(p);
        if (b<=mid) change(ls,l,mid,a,b,v);
        else if (a>mid) change(rs,mid+1,r,a,b,v);
        else change(ls,l,mid,a,mid,v),change(rs,mid+1,r,mid+1,b,v);
        sum[p]=sum[ls]+sum[rs];
    }
    int query(int p,int l,int r,int a,int b){
        if (l==a&&r==b){return sum[p];}
        down(p);
        if (b<=mid) return query(ls,l,mid,a,b);
        else if (a>mid) return query(rs,mid+1,r,a,b);
        else return query(ls,l,mid,a,mid)+query(rs,mid+1,r,mid+1,b);
    }
}Seg;
 
void add(int a,int b){pre[++tot]=now[a],now[a]=tot,son[tot]=b;}
void dfs(int x){
    size[x]=1;
    for (int y=now[x];y;y=pre[y])
        if (son[y]!=fa[x]){
            fa[son[y]]=x,dep[son[y]]=dep[x]+1;
            dfs(son[y]),size[x]+=size[son[y]];
            if (size[son[y]]>size[hson[x]]) hson[x]=son[y];
        }
}
 
void btree(int x,int tp){
    w[x]=++cnt,a[cnt]=0,top[x]=tp;
    if (hson[x]) btree(hson[x],tp);
    for (int y=now[x];y;y=pre[y])
        if (son[y]!=fa[x]&&son[y]!=hson[x])
            btree(son[y],son[y]);
    last[x]=cnt;
}
 
void answer(int a,int b){
    int f1=top[a],f2=top[b],sum=0,num=dep[b]-dep[a]+1;
    while (f1!=f2){
        if (dep[f1]<dep[f2]) swap(f1,f2),swap(a,b);
        //printf("sum%d %d %d\n",sum,f1,a);
        sum+=Seg.query(1,1,n,w[f1],w[a]);
         
        Seg.change(1,1,n,w[f1],w[a],1);
        //puts("fuck");
        a=fa[f1],f1=top[a];
    }
    if (dep[a]>dep[b]) swap(a,b);
    sum+=Seg.query(1,1,n,w[a],w[b]);
   // printf("%d %d\n",num,sum);
    Seg.change(1,1,n,w[a],w[b],1);
    printf("%d\n",num-sum);
}
 
int main(){
    scanf("%d",&n);
    for (int i=2,x;i<=n;i++) scanf("%d",&x),x++,add(x,i);
    dfs(1),btree(1,1),Seg.build(1,1,n);
    //for (int i=1;i<=n;i++) printf("%d %d\n",w[i],last[i]);
    scanf("%d",&Q);
    for (int i=1,x;i<=Q;i++){
        scanf("%s%d",op,&x),x++;
        if (op[0]=='i') answer(1,x);
        else{
            printf("%d\n",Seg.query(1,1,n,w[x],last[x]));
            Seg.change(1,1,n,w[x],last[x],0);
        }
    }
    return 0;
}


从零配置EtherCAT IGH主站:手把手教你处理内核版本与实时性优化的那些坑 本文详细指导如何从零配置EtherCAT IGH主站,涵盖内核版本适配、实时性优化及常见问题解决方案。通过精确匹配内核头文件、应用实时补丁和优化网卡驱动,帮助开发者实现微秒级响应,适用于工业自动化、机器人控制等高精度场景。 阅读详情

相关推荐

CRISPR筛选全流程指南:从文库构建到数据分析实战

功能基因组学研究需要高效解析基因型与表型的关联,高通量筛选技术是其中的关键工具。基于CRISPR系统的筛选方法通过大规模sgRNA文库扰动基因功能,结合慢病毒递送和测序分析,能够系统鉴定影响细胞增殖、耐药、病毒感染的候选基因。与RNAi或化学小分子筛选相比,CRISPR筛选具有覆盖全基因组、脱靶率低、信号清晰等优势,已广泛应用于药物靶点发现、合成致死和免疫治疗机制研究。本文围绕实验设计与操作中的核心要点展开,涵盖文库扩增、病毒滴度控制、MOI把握、筛选模式选择以及基于MAGeCK的sgRNA丰度分析,并针对

weixin_31188927的博客 277

NOI2015B. 软件包管理器 (Package Manager)

NOI2015B. 软件包管理器 (Package Manager)

yaosichengalpha的博客 333

STC32G电调调试血泪史:从TPH1R403NL MOS管烧毁到PWM信号异常排查全记录

本文详细记录了STC32G无刷电调调试过程中的常见问题与解决方案,包括MOS管烧毁、PWM信号异常等关键故障排查。通过电源系统检测、驱动电路验证及三相平衡调试等实战经验,帮助硬件爱好者快速定位问题,提升电调调试效率。特别针对TPH1R403NL等MOS管的保护措施进行了重点分析。

weixin_33736048的博客 551

Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification

对比式视觉-语言预训练,也称为CLIP,通过大规模的图像-文本对来学习视觉表示,为zero-shot知识迁移展示了新的范式。它在下游任务上展现出令人瞩目的性能,实现了zeri-shot的知识迁移。为了进一步增强CLIP的适应能力,现有方法提出了微调可学习模块的方法,显著提高了少样本情况下的性能,但也引入了额外的训练时间和计算资源。在本文中,我们提出了一种适用于CLIP的无需训练的少样本分类方法,称为Tip-Adapter。

qq_43800752的博客 1162

HALCON实战:用两个工业相机实现无缝大视野拼接(附完整代码与避坑指南)

本文详细介绍了使用HALCON软件实现双工业相机图像无缝拼接的完整解决方案,涵盖硬件配置、相机标定、坐标系转换和图像拼接等关键步骤。通过高精度标定和矩阵变换技术,可构建大视野检测系统,适用于液晶面板、PCB等工业检测场景,显著提升检测效率和精度。

weixin_29050513的博客 190

P2146 [NOI2015]软件包管理器

很好的树剖板子题: 操作一:求点x到0的最短路径 经过的结点个数-路径上已安装的软件包的总个数,同时将经过的路径上的所有点标记为已安装。 操作二:将子树代表的那段存安装包个数的区间清空(或者是说将其sum值赋值为0)。 此处为了实现标记已安装和清空,我们用了一个标记add: add[i]=1:线段树上的点i及其子区间全被赋值为len[]; add[i]=2:线段树上的点i及其子区间全被赋...

guapi2333的博客 231

初识Classic AUTOSAR开发工具链

在过去,软件和硬件之间具有很强的耦合性,阻碍了软件组件在不同硬件平台上的可移植性和重用性。而AUTOSAR作为汽车电子行业的标准,提供标准的软件接口定义,工程师可以根据需求将软件组件分配到汽车的ECU中,实现标准软件组件的可重用性。

怿星科技的博客 8092

[NOI2015] 软件包管理器

通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。而且,由于你之前的工作,除 00 号软件包以外,在你的管理器当中的软件包都会依赖一个且仅一个软件包,而 00 号软件包不依赖任何一个软件包。注意,安装一个已安装的软件包,或卸载一个未安装的软件包,都不会改变任何软件包的安装状态,即在此情况下,改变安装状态的软件包数为 0。同时,如果想要卸载软件包 b,则必须卸载软件包 a。

m0_61949623的博客 959

python语言下使用opencv接口cv2.VideoCapture()接口调用海康机器人工业相机

文章目录 目录 文章目录 前言 一、opencv接口介绍 二、调用海康机器人工业相机 1.使用海康机器人工业相机的前提 2.调用海康机器人工业相机进行显示 3.调用海康机器人工业相机进行存图 4.调用海康机器人工业相机存视频 5.调用海康机器人工业相机进行简单图像处理 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下.

qq_39570716的博客 1万+

把 ABAP 经验装进 GitHub Copilot 的按需大脑,Agent Skills 如何改变 ABAP 开发

2026 年 8 月,SAP Community 上出现了一次很有代表性的 ABAP 实验。开发者把标准 Flight Model 里的复制成自己的测试类,删除原有 ABAP Unit Test,再让 GitHub Copilot Agent 为方法重新生成测试代码。真正有意思的地方并不是 Copilot 会不会写,而是开发者给 Copilot 准备了两个专门的 Agent Skills,一个负责 ABAP Unit Test 的通用规则,一个负责 ABAP Test Double Framework。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 153

[NOI2015] 软件包管理器 (树剖+线段树)

树剖+线段树

NEFU AB-IN's Blog 424

C#实现每日定时执行制定程序(附完整源码)

C#实现每日定时执行制定程序(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 863

bzoj4196【NOI2015】软件包管理器

树链剖分+线段树

AaronPolaris 1866

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

BZOJ 4196: [Noi2015]软件包管理器

二次联通门 :BZOJ 4196: [Noi2015]软件包管理器 /* BZOJ 4196: [Noi2015]软件包管理器 树链剖分 树链剖分 , 用线段树维护链上的和与子树的和 对于1操作, 每次预先查询待修改点x点的深度 后查询1到x这条链上有多少已安装的, 然后...

weixin_30338461的博客 88

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【NOI2015】BZOJ4196软件包管理器

4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 704 Solved: 411 Description Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软

DCrusher's blog 775

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

bzoj4196[NOI2015]软件包管理器

4196: [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 1168  Solved: 672 Description  Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(

keshuqi的博客 543

【NOI2015】【BZOJ4196】软件包管理器

DescriptionLinux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。Debian/Ubuntu使用的apt-get,Fedora/CentOS使用的yum,以及OSX下可用的homebrew都是优秀的软件包管

CreationAugust is 14 years old forever 923

【bzoj 4196】 软件包管理器 【Noi2015】

Description  Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。Debian/Ubuntu使用的apt-get,Fedora/CentOS使用的yum,以及OSX下可用的homebrew都是优秀的...

TLECODE的博客 370

【BZOJ4196】【Noi2015】软件包管理器

原题传送门 题意: 给你一棵树,有2种操作:   1.使得某个点到根节点路径上的所有点权值赋为1。   2.使得某节点的子树中所有节点权值赋为0. 每次操作要求输出权值更改的节点个数。 解题思路:   显然是用树剖来解决问题,考虑用区间赋值的线段树维护区间内1的个数,然后直接按题意树剖求解即可。     操作1的时间效率为\( O ( \log^{2} n) \) ,操作...

dizhongchen2809的博客 87

[bzoj4196][Noi2015]软件包管理器 树链剖分

4196: [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MB [Submit][Status][Discuss] Description  Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安

Unlimited Code Works 339

【bzoj4196】【noi2015】软件包管理器

题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。Debian/Ubuntu使用的apt-get,Fedora/CentOS使用的yum,以及OSX下可用的homebrew都是优秀的软件包...

anweiyun4308的博客 151

[BZOJ4196][NOI2015]软件包管理器 做题笔记

题目来源:http://www.lydsy.com/JudgeOnline/problem.php?id=4196 Orz BZOJ终于回来了。。。 Description Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其

mhlwsk的博客 612

【BZOJ4196】[Noi2015]软件包管理器 树链剖分

[Noi2015]软件包管理器 树链剖分 Description Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。Debian/Ubuntu使用的apt-get,Fedora/CentOS...

aodanchui1057的博客 125

BZOJ 4196 [Noi2015]软件包管理器

题目传送门:2333333 还是裸的树剖题。 每个点0=没下载,1=已下载 下载就是查找这个点到零的路径上有几个0,再把整条路修改成1。 卸载就是查找这个点子树中有几个1,再把整棵子树改为0。 再发现一颗子树在dfs序里面是连续的一串(自己脑补), 所以就变成了线段树区间赋值+求和,随便就过了。 #include #include #include #inclu

YYMHL 309
上一篇: bzoj3992: [SDOI2015]序列统计
下一篇: hdu2222 Keywords Search & AC自动机学习小结
thy_asdf
博客等级 码龄12年 16粉丝 186原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值