博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1103 [POI2007]大都市meg(树状数组+dfs序)
阅读量:4592 次
发布时间:2019-06-09

本文共 789 字,大约阅读时间需要 2 分钟。

 

【题目链接】 

 

【题目大意】

  给出一棵树,每条边的经过代价为1,现在告诉你有些路不需要代价了, 以A x y形式给出,表示x到y的路不再需要代价,同时还有查询操作W x, 查询1到x的路径需要多少代价。

 

【题解】

  我们对树做一遍dfs,保存得到的dfs序,我们发现如果对dfs序列进行操作,

  对同一个点在进入位置设置1,出点位置设置-1, 那么查询1到x的代价就是dfs序到x入点位置的前缀和。 而对于取消代价的操作只要在出点位置+1,进入位置-1即可。

  单点修改,前缀查询可以用树状数组维护。

 

【代码】

#include 
#include
using namespace std;const int N=500005;int x,y,T,n,m,top,c[N],st[N],f[N],l[N],r[N];vector
v[N];char op[10];void update(int x,int val){while(x<=n+n)c[x]+=val,x+=x&-x;}int query(int x){int res=-1;while(x)res+=c[x],x-=x&-x;return res;}void dfs(){ st[++top]=1; while(top){ int x=st[top],fx=f[top--]; if(!l[x]){ l[x]=++T; st[++top]=x; for(int i=0;i

  

转载于:https://www.cnblogs.com/forever97/p/bzoj1103.html

你可能感兴趣的文章
【转载】《Flexpaper二次开发入门教程》(十) Flexpaper简单使用-第一个Flexpaper例子(4.1节) ......
查看>>
如何深入思考
查看>>
用逗号隔开简单数据保存为csv
查看>>
POJ-1860 Currency Exchange SPFA判断环
查看>>
xampp+eclipse环境下使用phpunit
查看>>
python的类和对象(1)
查看>>
一个动态内存管理模块的实现
查看>>
url 编码(percentcode 百分号编码)
查看>>
队列课下作业
查看>>
【一本通】欧拉回路
查看>>
【LeetCode】290. Word Pattern 解题小结
查看>>
DataGrid CollectionViewSource Refresh性能问题
查看>>
数据库字符集(AL32UTF8)和客户端字符集(2%)是不同的
查看>>
关于在CMD中数据库操作中文乱码问题
查看>>
机器学习之路: python 决策树分类DecisionTreeClassifier 预测泰坦尼克号乘客是否幸存...
查看>>
R语言做正态性检验
查看>>
linux用户组管理
查看>>
Console-算法[for]-输出等腰三角形
查看>>
随机数产生方法小知识点
查看>>
Angular2.js——表单(上)
查看>>