poj 3321 Apple Tree 树状数组 dfs序

Win11专业版破解RDP限制:实现多用户远程桌面协同办公 本文详细介绍了如何在Windows 11专业版上破解RDP限制,实现多用户远程桌面协同办公。通过使用RDPWrap工具,用户可以绕过微软的授权限制,允许多个用户同时登录同一台电脑,提高硬件利用率和团队协作效率。文章包含详细的安装配置步骤、性能优化技巧及常见问题解决方案,适用于需要远程协作的办公场景。 阅读详情

题目链接


参考资料:

http://www.cnblogs.com/gj-Acit/p/3236843.html   ——再见~雨泉


题意:

给一棵树,初始时每个节点的 val 均为 1,现有一些操作,

Q:将某个节点的 val 取反

C:询问以某个节点为根的子树的 val 总和


思路:

dfs 一遍,将每个点的编号映射到 dfs 序,以 dfs 序来建树状数组。

每个点顺便记录两个值,le[ ] 为其自身的 dfs 序,ri[ ] 为其孩子中最大的 dfs 序。

那么查询某个节点为根的子树即为树上 le[ ] 到 ri[ ] 这连续的一段,直接用树状数组求两个前缀和作差即可。

关键的想法还是编号映射到 dfs 序。


Code:

#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 100010
using namespace std;
typedef long long LL;
struct Edge {
    int to, ne;
    Edge(int a = 0, int b = 0) : to(a), ne(b) {}
}edge[maxn * 2];
int le[maxn], ri[maxn], ne[maxn], c[maxn], tot, cnt, n;
bool flag[maxn];
inline int max(int a, int b) { return a > b ? a : b; }
void add(int u, int v) {
    edge[tot] = Edge(v, ne[u]);
    ne[u] = tot++;
}
void dfs(int u, int fa) {
    le[u] = ++cnt;
    int maxx = cnt;
    for (int i = ne[u]; i != -1; i = edge[i].ne) {
        Edge e = edge[i]; int v = e.to;
        if (v == fa) continue;
        dfs(v, u);
        maxx = max(maxx, ri[v]);
    }
    ri[u] = maxx;
}
inline int lowbit(int x) { return x & (-x); }
int query(int x) {
    int ret = 0;
    while (x) {
        ret += c[x];
        x -= lowbit(x);
    }
    return ret;
}
void modify(int x, int delta) {
    while (x <= n) {
        c[x] += delta;
        x += lowbit(x);
    }
}
void work() {
    memset(c, 0, sizeof(c)); memset(ne, -1, sizeof(ne)); tot = cnt = 0;
    for (int i = 1; i <= n; ++i) { modify(i, 1); flag[i] = 1; }
    for (int i = 1; i < n; ++i) {
        int x, y;
        scanf("%d%d", &x, &y);
        add(x, y); add(y, x);
    }
    dfs(1, -1);
    int q;
    scanf("%d", &q);
//    for (int i = 1; i <= n; ++i) printf("%d %d\n", le[i], ri[i]);
    while (q--) {
        char ch; int x;
        scanf("\n%c %d", &ch, &x);
        if (ch == 'Q') {
            printf("%d\n", query(ri[x]) - (le[x] == 1 ? 0 : query(le[x] - 1)));
        }
        else {
            x = le[x];
            if (flag[x]) modify(x, -1);
            else modify(x, 1);
            flag[x] ^= 1;
        }
    }
}
int main() {
//    freopen("in.txt", "r", stdin);
    while (scanf("%d", &n) != EOF) work();
    return 0;
}


PSIM联合VS--C++实现正弦波发生 在利用VS联合PSIM仿真中,想要用VS构建一个正弦波发生模块。可以利用Sin函数进行编写,重点是需要编写一个计数器程序。首先打算用for循环语句来构建计数器,但在for循环运行时无法跳出,不能实时获得计数器的值。同理,while循环也无法实现。最后将count变量设置为static型,解决了这一问题。 体现出对于c++程序的运行不够了解,需要多进行程序的编写和调试。 //时钟计数器 static int count = 0; count++; if (count > Sinfre) 阅读详情

相关推荐

ESP32—C3实现网页跳转

用户点击HTML页面中的按钮。浏览器根据按钮的href属性向服务器发送HTTP GET请求。服务器根据请求的URL调用相应的回调函数。服务器发送包含新页面HTML内容的HTTP响应。浏览器解析并显示新的HTML页面。这个过程对于用户来说是无缝的,看起来就像是直接从一个页面跳转到另一个页面。实际上,背后发生了HTTP请求和响应的过程。

qq_59527512的博客 1022

【POJ 3321】 Apple Tree 树状数组 + DFS序(详解)

Description There is an apple tree outside of kaka’s house. Every autumn, a lot of apples will grow in the tree. Kaka likes apple very much, so he has been carefully nurturing the big apple tree. The ...

待到山花烂漫时 657

深入解析Unity3D中PostLateUpdate突然占用大量时间的原因

在Unity3D的生命周期中,是一个在LateUpdate之后被调用的方法。它通常用于处理一些需要在所有更新(包括物理更新和动画更新)之后进行的逻辑。由于它在游戏循环的后期阶段被调用,因此它通常用于处理与渲染直接相关的任务,如相机调整、UI更新等。突然占用大量时间的问题可能由多种原因引起,包括复杂的逻辑处理、频繁的资源加载、不恰当的渲染优化、插件或第三方库的副作用以及内存泄漏或垃圾回收等。为了解决这个问题,开发者需要仔细审查和优化中的代码,同时利用Unity提供的工具来监控和分析游戏性能。

Yori_22的博客 979

Poj3321 Apple Tree dfs序 + 树状数组

Poj3321 Apple Tree dfs序 + 树状数组 单点加 区间询问 1 #include <cstdio> 2 #include <cmath> 3 #include <cstdlib> 4 #include <cstring> 5 #include <algorithm> 6 #i...

weixin_33842328的博客 157

【现代电路理论】【2】考尔法设计无源单口网络

夏 弥:其实你在冰面上看到鱼浮上来 明年冬天如果你还在那里,那鱼还是会上来换气 那时候你就可以带一把冰镐 把冰面砸开把鱼捞上来熬汤

痛苦的时候装出幸福相,这不是那么难做到的事 2886

STM32 Proteu直流电机正反转控制系统限位开关-0035

硬件组成:STM32F103C6单片机 +L298N电机控制电路+直流电机+3个按键(正转、反转、停止)+LED指示灯(正转、反转、停止)+限位开关(正限位 反限位) 1.通过3个按键(正转、反转、停止)控制电机的正转、反转、停止。 2.有3个LED指示灯,正转时正转指示灯亮。反转停止对应反转停止指示灯亮。 3.有自动正转反转停止功能,正转时当正限位按键按下时说明正转到最大距离。此时自动停止。反转一样。

zhaxiaobian_er的博客 2002

POJ3321 Apple Tree(树状数组+dfs序)

题意:有n个点,每个点都有苹果,操作1 查询 点x的子树上有又多少个苹果包括自身,操作2 若点x上有苹果则摘下,没有则长出一个 思路:用树状数组去维护苹果树上的苹果个数,dfs序建树获取树上子树和根的区间。 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<vector> //#incl

Ray.C.L的博客 494

下采样优化实战:用ADown显著提升YOLOv11的多尺度特征保持能力

ADown 以“可编程梯度信息+多分支特征融合”打破了传统下采样的性能壁垒,为 YOLOv11 带来了多尺度特征的精准传递能力。从原理到代码集成,本教程已为你铺就了一条“小目标检测精度跃升”的实战路径。现在就动手尝试吧——当你看到模型对极小目标也能精准识别,且特征图细节完整时,你会明白这份技术探索的价值。我很乐意在你实践过程中帮你解决任何问题,让我们一起推动目标检测在下采样领域的边界。

FJN110的博客 421

poj3321 Apple Tree 树状数组+dfs序

                                         Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 34141   Accepted: 10231 Description There is an apple tree outside of...

OOOak 317

UNet 改进(45):轻松集成Triplet Attention,让分割效果起飞!

本文介绍了一种在U-Net架构中集成CSRA残差注意力模块的方法。该模块通过结合通道注意力和空间注意力机制,在U-Net的瓶颈层对特征进行自适应重标定,使网络聚焦于关键区域。文章详细解析了代码实现,包括基础构建块DoubleConv、核心CSRA模块原理及其在U-Net中的战略位置集成。测试表明该模型能保持标准U-Net的输入输出维度,同时通过注意力机制提升特征选择能力。这种模块化设计便于在不同任务中应用,为图像分割领域提供了有效的注意力增强方案。

2401_82355416的博客 104

学Simulink--基于Simulink的无迹卡尔曼滤波(UKF)目标跟踪仿真建模示例

本文详细介绍了基于Simulink的无迹卡尔曼滤波(UKF)目标跟踪仿真建模方法。首先分析了UKF相比EKF在强非线性场景下的优势,包括无线性化误差、计算效率高和鲁棒性强等特点。接着阐述了UKF的核心原理,重点讲解了无迹变换(UT)的三个关键步骤:Sigma点生成、非线性传播和加权统计重构。文章还详细说明了二维机动目标的状态向量定义、非线性状态转移模型和雷达观测模型。 在Simulink实现部分,提供了完整的建模步骤和核心代码,包括目标运动模型、雷达传感器模型和UKF算法模块的实现。通过蛇形机动场景的仿真实

xiaoheshang_123的博客 89

Apple Tree POJ - 3321 dfs序+树状数组

There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in the tree. Kaka likes apple very much, so he has been carefully nurturing the big apple tree. The tree hasN...

wa的一声就哭了 307

RK3568平台开发系列讲解(DMA篇)DMA engine使用

DMA传输属于异步传输,在启动传输之前,slave driver需要将此次传输的一些信息(例如src/dst的buffer、传输的方向等)提交给dma engine(本质上是dma controller driver),dma engine确认okay后,返回一个描述符(由struct dma_async_tx_descriptor抽象)。DMA_PREP_PQ_DISABLE_P、DMA_PREP_PQ_DISABLE_Q、DMA_PREP_CONTINUE,PQ有关的操作,TODO。

内核笔记 1723

POJ 3321 Apple Tree 树状数组+dfs序

题目:http://poj.org/problem?id=3321 题意:给出一个苹果树,开始每个节点都有一个苹果,有2个操作 C:有苹果就吃掉,没有就会长出一个苹果 Q:查询包括x的子树上苹果的个数 这个题目的关键就是怎么把它从一颗树转化成一个数组 可以用dfs序重新编号,保存节点所维护的区间,然后用树状数组可以解决了 #include<iostream&g...

dengyaodan0206的博客 166

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POJ3321Apple Tree(DFS序 +树状数组)

Apple Tree 题意:给出一棵树,n个节点,根节点1。有两种操作,(1)Q,xQ,xQ,x。(2)C,xC,xC,x。 (1).查询第x个节点, (2). // poj3233 #include<iostream> #include<cstdio> #include<vector> #include<map> #include<queue> #include<cstring> using namespace std; typede

weixin_45363113的博客 442

老版QQ原生表情gif动态

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

POJ 3321-Apple Tree【树状数组+DFS序】

卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果。卡卡很喜欢苹果。树上有N个节点,卡卡给他们编号1到N,根的编号永远是1.每个节点上最多结一个苹果。卡卡想要了解某一个子树上一共结了多少苹果。 现在的问题是不断会有新的苹果长出来,卡卡也随时可能摘掉一个苹果吃掉。你能帮助卡卡吗? Input 输入数据:第一行包含一个整数N(N<= 100000),表示树上节点的数目。 接下来N-1...

独钓门前月 633

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[POJ - 3321] Apple Tree (树状数组+dfs序)

链接 http://poj.org/problem?id=3321 题意 给你一个nnn个节点的苹果树,开始这颗树上每个结点上都有一个苹果,现在需要你执行mmm次操作,操作分两种; C xC\ xC x,对结点xxx进行操作,如果结点xxx处有一个苹果就把它摘下来,如果没有它就重新生长出来一个; Q xQ\ xQ x,查询xxx所在子树苹果个数; 分析 ...

梧桐 293

Apple Tree POJ - 3321(dfs序树状数组)

There is an apple tree outside of kaka’s house. Every autumn, a lot of apples will grow in the tree. Kaka likes apple very much, so he has been carefully nurturing the big apple tree. The tree has N forks which are connected by branches. Kaka numbers the f

tomjobs的博客 690

【poj 3321】 Apple Tree 树状数组+dfs序

Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 23568 Accepted: 7118DescriptionThere is an apple tree outside of kaka’s house. Every autumn, a lot of apples will gro 树状数组+dfs

ATOD 1221

Apple Tree poj3321 树状数组+DFS序

Apple TreeTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 32666 Accepted: 9812DescriptionThere is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in the tree. ...

mayuqing98的博客 242

poj3321-Apple Tree-dfs序+树状数组

http://poj.org/problem?id=3321 给你一颗树,最初每个节点上都有一个苹果, 有两种操作:修改(即修改某一个节点值为0或1) 和查询(查询某一个节点的【子树】上有多少个苹果)   这个在树上跑一遍dfs,得到树的dfs序,每个节点管辖的区间就是in[x] - out[x] 这个区间上的节点都是 节点x的子节点,其中in[x]是x自身 那么接下来的对

缺氧 668

Apple Tree POJ3321 dfs序 + 树状数组

题意 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果。卡卡很喜欢苹果。树上有N个节点,卡卡给他们编号1到N,根的编号永远是1.每个节点上最多结一个苹果。卡卡想要了解某一个子树上一共结了多少苹果。现在的问题是不断会有新的苹果长出来,卡卡也随时可能摘掉一个苹果吃掉。你能帮助卡卡吗? 解题思路 此题我们的想法肯定是想将查询和修改都降为lognlognlogn的复杂度,这区间查询单点修改正好用树状数组或线段树解决即可。关键我们怎么将树转化为区间,即每颗子树都附上区间,dfsdfsdfs可以帮我们解决这个.

pursuit的博客 488

【题解】poj3321 Apple Tree dfs序+树状数组

题目链接 Description There is an apple tree outside of kaka’s house. Every autumn, a lot of apples will grow in the tree. Kaka likes apple very much, so he has been carefully nurturing the big apple t...

翻过这座山,他们就会听到你的故事 312

POJ-3321 Apple Tree (树状数组 前缀和 dfs序)

树状数组+dfs序。题意:一颗树有1e5个点,每个点上权值仅可为0或1。1e5次操作,要么修改某个点的权值,要么询问某结点包括所有其儿子的权值和。

hmc0411的博客 3081

【树状数组--dfs序转化】poj3321 Apple Tree

Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 29822   Accepted: 8881 Description There is an apple tree outside of kaka's house. Every autumn,

Hi_jiaxinwei的博客 1816

POJ -3321 Apple Tree(DFS序+树状数组)

题目链接:http://poj.org/problem?id=3321 题意:给你一棵初始时长满苹果的苹果树,有两种操作, (1)将一个节点的状态改变(有苹果就把这个苹果去掉,没有就加一个) (2)查询x及其子树一共有多少个苹果 思路:树上对子树的操作很麻烦,但是如果我们可以把树上操作转化为区间操作,那这一题就是一个单点更新,区间求和的题啦,那我们直接用树状数组(或者线段树)就可以直接求啦,但如何...

qq_43423395的博客 237
上一篇: 树状数组模板及poj几道简单题
下一篇: 2017多校四 1003题 hdu 6069 Counting Divisors 分解质因数
kkkkahlua
博客等级 码龄12年 4粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值