3631. [JLOI2014]松鼠的新家【树形DP】
Description
Input
Output
Sample Input
1 4 5 3 2
1 2
2 4
2 3
4 5
Sample Output
2
1
2
1
HINT
2<= n <=300000
可能连树形DP都不算……
就一个裸的前缀和,竟然还是紫题(逃)
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #define N (300000+100) 5 using namespace std; 6 7 struct node 8 { 9 int to,next; 10 }edge[N*2]; 11 int Father[N],a[N],Depth[N],f[N][21]; 12 int head[N],num_edge,n,sum[N]; 13 14 void add(int u,int v) 15 { 16 edge[++num_edge].to=v; 17 edge[num_edge].next=head[u]; 18 head[u]=num_edge; 19 } 20 21 void Dfs(int x) 22 { 23 Depth[x]=Depth[Father[x]]+1; 24 for (int i=head[x];i!=0;i=edge[i].next) 25 if (edge[i].to!=Father[x]) 26 { 27 Father[edge[i].to]=x; 28 f[edge[i].to][0]=x; 29 Dfs(edge[i].to); 30 sum[x]+=sum[edge[i].to]; 31 } 32 } 33 34 int LCA(int x,int y) 35 { 36 if (Depth[x]<Depth[y]) swap(x,y); 37 for (int i=19;i>=0;--i) 38 if (Depth[f[x][i]]>=Depth[y]) 39 x=f[x][i]; 40 if (x==y) return x; 41 for (int i=19;i>=0;--i) 42 if (f[x][i]!=f[y][i]) 43 { 44 x=f[x][i]; 45 y=f[y][i]; 46 } 47 return Father[x]; 48 } 49 50 int main() 51 { 52 int x,y; 53 scanf("%d",&n); 54 for (int i=1;i<=n;++i) 55 scanf("%d",&a[i]); 56 for (int i=1;i<=n-1;++i) 57 { 58 scanf("%d%d",&x,&y); 59 add(x,y); add(y,x); 60 } 61 Dfs(1); 62 for (int i=1;i<=19;++i) 63 for (int j=1;j<=n;++j) 64 f[j][i]=f[f[j][i-1]][i-1]; 65 for (int i=1;i<=n-1;++i) 66 { 67 x=a[i],y=a[i+1]; 68 int lca=LCA(x,y); 69 sum[x]++;sum[y]++; 70 sum[lca]--;sum[Father[lca]]--; 71 } 72 Dfs(1); 73 for (int i=2;i<=n;++i) 74 sum[a[i]]--; 75 for (int i=1;i<=n;++i) 76 printf("%d\n",sum[i]); 77 }
转载于:https://www.cnblogs.com/refun/p/8680800.html
3631. [JLOI2014]松鼠的新家【树形DP】相关推荐
- bzoj 3631: [JLOI2014]松鼠的新家(LCA+树上差分)
3631: [JLOI2014]松鼠的新家 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2059 Solved: 1030 [Submit][S ...
- 3631: [JLOI2014]松鼠的新家
3631: [JLOI2014]松鼠的新家 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 707 Solved: 342 [Submit][Sta ...
- bzoj 3631 [JLOI2014]松鼠的新家
题目 传送门 题解 看到某Yuta的树总结觉得LCA+树上差分挺好写而且差分没写过准备水一发结果水了一上午qwq.因为第一次写树上差分和树剖求LCA,结果树剖版子某处打错了..(而且差分点和差分边还是 ...
- 【BZOJ 3631】 [JLOI2014]松鼠的新家
3631: [JLOI2014]松鼠的新家 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 681 Solved: 329 [Submit][Statu ...
- [Luogu 3258] JLOI2014 松鼠的新家
[Luogu 3258] JLOI2014 松鼠的新家 LCA + 树上差分. 我呢,因为是树剖求的 LCA,预处理了 DFN(DFS 序),于是简化成了序列差分. qwq不讲了不讲了,贴代码. #i ...
- P3258 [JLOI2014]松鼠的新家
文章目录 题意: 题解: 树上差分 代码: 树链剖分 代码: P3258 [JLOI2014]松鼠的新家 题意: n个点,n-1条边,给出每个点的拜访顺序,问每个点经过几次(最后一次移动不算拜访) 题 ...
- 洛谷 P3258 [JLOI2014]松鼠的新家 解题报告
P3258 [JLOI2014]松鼠的新家 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他 ...
- 洛谷 P3258 [JLOI2014]松鼠的新家 树上差分
缘起 [1]中我们学习了树上差分,并且a了一个裸的点差分. 现在继续树上差分~ 洛谷 P3258 [JLOI2014]松鼠的新家 分析 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房 ...
- P3258[JLOI2014]松鼠的新家(LCA 树上差分)
P3258 [JLOI2014]松鼠的新家 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他 ...
最新文章
- spring中的BeanFactoryPostProcessor
- lvs和keepalives
- 反激式开关电源中PC817与TL431的配合电路探讨
- 经struts2中的action后,jsp中css失效的问题
- 牛客 - tokitsukaze and Inverse Number(树状数组+逆序对定理)
- 上班第一天(6)--一个程序员的成长史(15)
- matlab将二值图像与原图重叠_图像处理matlab及图像融合图像镶嵌图像拼接
- 设计公共API的六个注意事项
- dsniff 和 Ettercap 和 bettercap 详解 - 网络嗅探工具包
- 商淘多b2b2c商城系统怎么在个人电脑上安装_企业怎么做好b2b2c商城网站建设?...
- mysql error report,ECSHOP网店系统提示MYSQL SERVER ERROR REPORT的解决方法
- 医咖会免费SPSS教程学习笔记—组内相关系数ICC
- 局域网计算机怎样注销用户名,win10系统取消局域网共享用户名密码的解决办法...
- 台式计算机 如何组装,如何自行组装台式计算机?组装台式计算机主机的教程...
- 指数型组织:未来组织发展的必然趋势
- 分类问题:如何解决样本分布不均衡
- Mac软件推荐:Soulver原来这么好用
- 量化派周灏:从物理博士到科技公司 CEO,不变的是“格物致理”
- 找不到工作的测试员一大把,大厂却招不到优秀软件测试员?高薪难寻测试工程师。
- 输出大写英文字母(附带总结)