[poj3321]Apple Tree_dfs序_树状数组

Apple Tree poj-3321

    题目大意:给你一个根固定的树,每一个点的点权是0或1,查询子树点权和。

    注释:$1\le n \le 10^5$。

      想法:刚刚学习dfs序,刷到水题偶哈哈。

        什么是dfs序?就是在遍历树的时候记录的每个点的出栈入栈序。这样就可以保证每一个节会出现两次且它的子树被其夹在中间。

      然后,子树信息就可以通过维护序列的鬼东西维护了qwq。

      紧接着,我们用树状数组维护被节点夹着的区间,就是端点节点的子树,用树状数组更新即可。

    最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 100010
using namespace std;
int tot,cnt;
int to[2*maxn],head[maxn],nxt[2*maxn];
int d[2*maxn];
int p1[maxn],p2[maxn];
int tree[4*maxn];
inline void add(int x,int y)
{to[++tot]=y;nxt[tot]=head[x];head[x]=tot;
}
int lowbit(int x)
{return x&(-x);
}
void dfs(int pos,int fa)//初始构造dfs序
{d[++cnt]=1;p1[pos]=cnt;for(int i=head[pos];i;i=nxt[i]){if(to[i]==fa) continue;dfs(to[i],pos);}p2[pos]=cnt;
}
void fix(int x,int ch)
{for(int i=x;i<=cnt;i+=lowbit(i)){tree[i]+=ch;}
}
int query(int x)
{int ans=0;for(int i=x;i;i-=lowbit(i)){ans+=tree[i];}return ans;
}
void original()
{cnt=tot=0;memset(tree,0,sizeof tree);memset(head,0,sizeof head);
}
int main()
{int n,m;while(~scanf("%d",&n)){original();for(int a,b,i=1;i<n;i++){scanf("%d%d",&a,&b);add(a,b);add(b,a);}dfs(1,0);for(int i=1;i<=n;i++)//别忘了建树{fix(p1[i],1);}// for(int i=1;i<=cnt;i++)// {// 	printf("%d ",query(i));// }// puts("");char s[20];scanf("%d",&m);for(int x,i=1;i<=m;i++){scanf("%s",s+1);if(s[1]=='C'){scanf("%d",&x);if(d[p1[x]]==1) fix(p1[x],-1);else fix(p1[x],1);d[p1[x]]^=1;}else{scanf("%d",&x);printf("%d\n",query(p2[x])-query(p1[x]-1));}}}return 0;
}
// int main()
// {
// 	int n;
// 	scanf("%d",&n);
// 	for(int a,b,i=1;i<n;i++)
// 	{
// 		scanf("%d%d",&a,&b);
// 		add(a,b);
// 		add(b,a);
// 	}
// 	dfs(1,0);
// 	for(int i=1;i<=cnt;i++)
// 	{
// 		printf("%d ",d[i]);
// 	}
// 	puts("");
// 	for(int i=1;i<=n;i++)
// 	{
// 		printf("%d %d\n",p1[i],p2[i]);
// 	}
// 	return 0;
// }

     小结:dfs序好东西好东西... ...

转载于:https://www.cnblogs.com/ShuraK/p/8710605.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

axure实现搜索功能_vue实现模糊搜索功能

首先写好一个列表写好的样式是这样滴操作来了在computed里面定义了一个search函数 使用filter过滤接下来在method 里面写一个sousuo1函数 进行一个判断 如果搜索这个输入框框里是空 就是展示原数据 如果这个不为空 就会展示搜索到的数据最后 很重要把list改为sousuo1()这个函数…

HOSTNAME问题 和yum配置163源的操作 安装lsb_release,KSH,CSH

HOSTNAME 在 /etc/hosts 里添加一行 127.0.0.1 yourhostname yum配置 来自http://www.cnblogs.com/wutengbiao/p/4188986.html 下载方法1&#xff1a; cd /etc/yum.repos.d/wget http://mirrors.163.com/.help/CentOS6-Base-163.repovi CentOS6-Base-163.repo 把文件里面的$rel…

开机自启动脚本_使用xtu降低笔记本(游戏本)cpu电压及功耗·游戏本延时(以及试着解决开机自启动的问题)...

&#xff08;额&#xff0c;这应该是我的第一篇真正意义上的博客吧&#xff08;&#xff1f;&#xff09;&#xff0c;虽然是发在了知乎上&#xff0c;上个月忙了一个月的建站方面的事情&#xff0c;但是服务器买在了国内&#xff0c;昂&#xff0c;然后就没了&#xff09;为什…

7000更换控制器电源步骤_开关电源控制环路(初级篇:上)

本文是 21Dianyuan 社区原创技术文章&#xff0c;作者 ctus220&#xff0c;感谢作者的辛苦付出。内容目录&#xff1a;1、环路和直流稳压电源的关系2、与环路相关的基本概念波特图&#xff0c;环路稳定性判据&#xff0c;传递函数&#xff0c;零极点3、常用的补偿控制器PI&…

thymeleaf 模板语言简介

参考网址: https://blog.csdn.net/mlin_123/article/details/51816533 1.1 Thymeleaf 在有网络和无网络的环境下皆可运行&#xff0c;而且完全不需启动WEB应用&#xff0c;即它可以让美工在浏览器查看页面的静态效果&#xff0c;也可以让程序员在服务器查看带数据的动态页面效果…

python实现排列组合公式算法_朴素贝叶斯算法的Python实现

朴素贝叶斯分类算法被广泛应用于文本分类场景中、包含垃圾邮件、互联网新闻等分类任务&#xff0c;属于有监督学习算法。它独立考量每一维度特征被分类的条件概率&#xff0c;然后综合这些概率对其所在的特征向量做出分类预测&#xff0c;即“假设各个维度上的特征被分类的条件…

c语言操作符总结

一.算术操作符 包括&#xff1a;、 - 、* 、 / 、 % 1.除了%操作符之外&#xff0c;其他的几个操作符可以作用与整数和浮点数。 2.对于/操作符&#xff0c;如果两个操作数都为整数&#xff0c;执行整数除法。而只要有浮点数执行的就是浮点数除法。 3.%操作符的两个操作数必须…

cdr怎么做文字路径_整理128张图片,告诉你文字少的PPT应该怎么做?

点击上方蓝字关注↑&#xff0c;下次看文更方便&#xff01;微信扫码观看全套Excel、Word、PPT视频作者&#xff1a;自律的音律 来源&#xff1a;自律的音律(ID&#xff1a;yinlvPPT)哈喽&#xff0c;又到周一干货时间。我经常被问到一个问题&#xff0c;PPT 字多的时候&#…

QT安装配置是注意事项

1、源码所在路径不能包含中文 2、构建目录必须和源码目录同级别&#xff08;在一个文件夹下&#xff09; 2.1 在 “项目”---构建设置--摘要--构建目录 中 设置构建目录 3、构建套件必须选择正确&#xff0c;否则无法编译 3.1 点击左下角 Debug图标&#xff0c;选择合适的构建…

网件rax40可以刷梅林_美国网件发布全系列Wi-Fi6家用无线路由器,部署未来家用产品市场...

5月25日&#xff0c;美国网件在深圳海上世界文化艺术中心发布全线WiFi 6产品&#xff0c;即RAX40、RAX80、RAX120、RAX200四款产品&#xff0c;重新布局WiFi市场&#xff0c;理论速度远远超出大多数家庭互联网连接所能提供的速度。新产品支持下一代Wi-Fi标准——802.11ax&#…

scikit-learn 学习笔记-- Generalized Linear Models (三)

Bayesian regression 前面介绍的线性模型都是从最小二乘&#xff0c;均方误差的角度去建立的&#xff0c;从最简单的最小二乘到带正则项的 lasso&#xff0c;ridge 等。而 Bayesian regression 是从 Bayesian 概率模型的角度出发的&#xff0c;虽然最后也会转换成一个能量函数的…

ios 部分string颜色_iOS-代码混淆加固方案

对于iOS来说&#xff0c;由于系统是封闭的&#xff0c;APP上架需要通过App Store&#xff0c;安全性来说相当高。但是对于大厂和知名APP而言&#xff0c;别人给的安全保障永远没有自己做的来得踏实。所以对于大厂、少部分企业级和金融支付类应用来说加固是相当重要的。下面是目…

Python入门基础之迭代和列表生成式

什么是迭代 在Python中&#xff0c;如果给定一个list或tuple&#xff0c;我们可以通过for循环来遍历这个list或tuple&#xff0c;这种遍历我们成为迭代&#xff08;Iteration&#xff09;。 在Python中&#xff0c;迭代是通过 for ... in 来完成的&#xff0c;而很多语言比如C或…

安川最小巧机器人_2020工博会,安川展品前瞻(机器人篇)

&#xff5e;基于YASKAWA(安川)核心产品和i-Mechatronics(i立方-机电一体化)概念&#xff0c;实现客户的生产改革&#xff5e;这次的中国国际工业博览会安川将展出至今为止最多的演示机数量。•提供现在重点关注的智能制造、半导体、汽车制造个性化解决方案•提供适用于所有生产…

EF关闭自动创建数据库表的方式

public class MyEF:DbContext{public MyEF():base("nameCodeFirstDb"){Database.SetInitializer<MyEF>(null);}} } 转载于:https://www.cnblogs.com/kangyuanjiang/p/8726182.html

如何调度spark程序_如何定时,周期性的运行程序?Python APScheduler实现任务灵活调度...

在我们的开发工作中&#xff0c;时常会有这样的开发需求&#xff0c;如需要定时或者周期性的运行某些程序&#xff0c;因此经常用到一些定时服务&#xff0c;如在 Linux系统中使用 Crond 服务实现程序的定时运行。在 Python中也有这样的一个模块&#xff0c;那就是 APScheduler…

caffe生成voc格式lmdb

要训练ssd基本都是在liu wei框架下改&#xff0c;生成lmdb这一关照葫芦画瓢总遇坑&#xff0c;记录之&#xff1a; 1. labelmap_voc.prototxt要根据自己的分类修改&#xff0c;比如人脸检测改成这样&#xff1a; item {name: "none_of_the_above"label: 0display_nam…

redis实现轮询算法_【07期】Redis中是如何实现分布式锁的?

点击上方“Java面试题精选”&#xff0c;关注公众号面试刷图&#xff0c;查缺补漏分布式锁常见的三种实现方式&#xff1a;数据库乐观锁&#xff1b;基于Redis的分布式锁&#xff1b;基于ZooKeeper的分布式锁。本地面试考点是&#xff0c;你对Redis使用熟悉吗&#xff1f;Redis…

prometheus 笔记

前言 prometheus 是监控应用软件类似于nagios. 安装 1.官网下载prometheus-2.2.0.linux-amd64压缩包&#xff0c;解压,执行./prometheus即可。这里重要的是配置文件。 a.如果要远程热加载配置文件,启动时加上--web.enable-lifecycle参数。 调用指令是curl -X POST http://local…

前端radio单选框默认选中_开发记录篇前端内容1

有段时间没有更新文章了&#xff0c;因为是用的公司电脑&#xff0c;没有虚拟机&#xff0c;所以就没法演示hadoop相关的东西了&#xff0c;而且大数据篇的东西需要花费一些时间和精力去收集整理内容&#xff0c;那大数据篇就先暂停一下。最近这段时间的话我可能会更新一些开发…