题目大意:

https://ac.nowcoder.com/acm/contest/272/B?&headNav=acm

给定一棵n个点的树,每个点有权值。定义表示  到  的最短路径上,所有点的点权异或和。

对于,求所有的异或和。
 
 
一棵树上经过某个节点u的路径数 = 路径总数 - 子节点往下的路径数 - 父节点往上的路径数 (无向)
路径总数 = n*(n-1),子节点往下的路径数 = sizeSon*(sizeSon-1)
则 父节点个数 = n-sizeU,父节点往上的路径树数 = (n-sizeU)*(n-sizeU-1)
即 res = n*(n-1) - sum( sizeSon*(sizeSon-1) ) - (n-sizeU)*(n-sizeU-1)
要求 ,即要求有向,有向路径 = 无向路径 / 2 = res / 2
 
  1. #include <bits/stdc++.h>
  2. #define LL long long
  3. #define mem(i,j) memset(i,j,sizeof(i))
  4. using namespace std;
  5. const int N=5e5+;
  6. LL n, w[N], ans;
  7. struct EDGE { int to,nt; }e[N<<];
  8. int head[N], tot;
  9. void addE(int u,int v) {
  10. e[tot].to=v;
  11. e[tot].nt=head[u];
  12. head[u]=tot++;
  13. }
  14. void init() {
  15. ans=0LL; tot=; mem(head,);
  16. }
  17.  
  18. LL dfs(int u,int fa) {
  19. LL siz=1LL, cnt=0LL;
  20. for(int i=head[u];i;i=e[i].nt) {
  21. int v=e[i].to;
  22. if(v==fa) continue;
  23. LL t=dfs(v,u);
  24. siz+=t;
  25. cnt+=t*(t-1LL)/;
  26. // 子节点往下的路径
  27. }
  28. cnt+=(n-siz)*(n-siz-1LL)/;
  29. // 父节点往上的路径
  30. cnt=n*(n-1LL)/-cnt;
  31. // 路径总数-以上路径=需要经过u节点的路径
  32. ans^=(cnt&)*w[u];
  33. // 偶数条路径即偶数次^w[u]=0 奇数条则计算1次^w[i]即可
  34. return siz;
  35. }
  36.  
  37. int main()
  38. {
  39. while(~scanf("%d",&n)) {
  40. init();
  41. for(int i=;i<n;i++) {
  42. int u,v; scanf("%d%d",&u,&v);
  43. addE(u,v); addE(v,u);
  44. }
  45. for(int i=;i<=n;i++) scanf("%d",&w[i]);
  46. dfs(,);
  47. printf("%d\n",ans);
  48. }
  49.  
  50. return ;
  51. }

牛客B-Xor Path /// 求所有Path( i->j )( j >= i )路径的异或和的更多相关文章

  1. 牛客网 牛客练习赛11 D.求距离

    D.求距离 链接:https://www.nowcoder.com/acm/contest/59/D来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言6 ...

  2. 牛客网机试题-求root(N,k)

    题目描述     N<k时,root(N,k) = N,否则,root(N,k) = root(N',k).N'为N的k进制表示的各位数字之和.输入x,y,k,输出root(x^y,k)的值 ( ...

  3. 牛客练习赛16 E - 求值

    题目大意: 链接:https://www.nowcoder.com/acm/contest/84/E 给定n个数字a1, a2, ..., an. 定义f(l, r) = al | al+1| ... ...

  4. 牛客 - 17968 - xor序列 - 线性基

    https://ac.nowcoder.com/acm/problem/17968 下面是错误的做法,因为题目要求必须使用x,而y在check的时候不一定用到等价于x的线性基来构成. 正确的做法是直接 ...

  5. 2020牛客暑期多校训练营(第五场)B - Graph (异或 最小生成树 分治 Trie)

    B - Graph 题目链接 每次操作不会改变两点之间的路径异或和 以 1 号点为起点,算出任意一点到 1 号点的异或值 dis[i](把该值当做 i 号点权值), 那么任意两点的异或值为 \(dis ...

  6. 2019牛客暑期多校训练营(第二场) - J - Go on Strike! - 前缀和预处理

    题目链接:https://ac.nowcoder.com/acm/contest/882/C 来自:山东大学FST_stay_night的的题解,加入一些注释帮助理解神仙代码. 好像题解被套了一次又一 ...

  7. 2019牛客暑期多校训练营(第二场)J.Subarray

    题意:给你一个n 表示有n段连续的1序列 现在问你 在总长度为0~1e9-1的范围内有多少个大于0的子段 思路:假设我们统计了当前的前缀和 我们显然可以用树状数组维护一下前缀和 这样我们可以nlogn ...

  8. 2019牛客暑期多校训练营(第二场)J

    题意 给一个长度为1e9的只包含1和-1的数列,1的个数不超过1e7,计算有多少对\((l,r)\)满足\(\sum_{i=l}^r a[i]>0\) 分析 dp求出每段连续的1最右端为右端点的 ...

  9. PACM Team(牛客第三场多校赛+dp+卡内存+打印路径)

    题目链接(貌似未报名的不能进去):https://www.nowcoder.com/acm/contest/141/A 题目: 题意:背包题意,并打印路径. 思路:正常背包思路,不过五维的dp很容易爆 ...

随机推荐

  1. linux基础知识汇总(四)--ps grep命令

    转:http://www.cnblogs.com/allen8807/archive/2010/11/10/1873843.html http://www.cnblogs.com/end/archiv ...

  2. java 简单 SocketPool

    package org.rx.socks; import lombok.extern.slf4j.Slf4j; import org.rx.common.LogWriter; import org.r ...

  3. 0620 ALT选择竖排 虚函数的优缺点 浅拷贝深拷贝 操作系统

    1.word按住ALT可以选择整列文字 2.虚函数优点:http://blog.163.com/jianhuali0118@126/blog/static/3774997020083610434091 ...

  4. leetcode.字符串.205同构字符串-Java

    1. 具体题目 给定两个字符串 s 和 t,判断它们是否是同构的.如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的.所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不 ...

  5. poj 1905 图形推算+二分

    参考博客: 题意: 一根两端固定在两面墙上的杆 受热弯曲后变弯曲 求前后两个状态的杆的中点位置的距离 分析:见博客 代码: #include<stdio.h> #include<io ...

  6. LCA的 Trajan 算法

    参考博客 参考博客 根据博客的模拟,就可以知道做法和思想. 现在就是实现他. 例题 :hdu  2586  题意:m 个询问,x  到  y  的距离,我们的思想就是求出:x到根的距离+y到根的距离- ...

  7. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

  8. 从零开始学Jqueue

    http://www.cnblogs.com/zhangziqiu/archive/2009/04/30/jQuery-Learn-1.html

  9. docker Dcokerfile学习---构建nginx环境

    1.创建项目目录并上传包 $ mkdir docker_nginx $ cd docker_nginx 下载nginx包 $ wget http://nginx.org/download/nginx- ...

  10. java访问https绕过证书信任

    package com.xing.test; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...