J题
题解:该题有好多种做法,我的比较low,因为正向的去推是不可行的,我们可以反向考虑每一条边权异或值为0的路径所产生的贡献,我们先把整棵树的根节点固定为1,然后我们可以考虑将满足条件的路径再细分为两类:一类是该条路径的LCA不是它们中的一个,另一类是该条路径的LCA是它们中的其中一个,(之所以这样分类,是因为便于我们进行dfs统计贡献),对于第一类路径我们可以在dfs所有子树之后再将mp[pre]+=siz[u],这样可以按照dfs的便利顺序做到不重不漏的统计所有情况,对于第二种情况我们可以枚举深度较深的节点为(满足条件路径的一端),我们从上往下dfs的时候:例如我们从u到to,我们需要先将sum-=(siz[to]),这样一来u子树的所有节点对于节点u的贡献都可以直接求了。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod=1e9+7;
const LL maxn=1e5+10;
map<LL,LL> mp;
LL n;
vector<pair<LL,LL> >G[maxn];
LL siz[maxn];
LL ans,sum;
void dfs(LL u,LL fa)
{siz[u]=1;LL len=G[u].size();for(LL i=0;i<len;i++){LL to=G[u][i].first;if(to==fa)continue;dfs(to,u);siz[u]+=siz[to];}
}
void dfs1(LL u,LL fa,LL pre)//链上两点都不是LCA
{ans=(ans+mp[pre]*siz[u]%mod);ans%=mod;LL len=G[u].size();for(LL i=0;i<G[u].size();i++){LL to=G[u][i].first;LL cap=G[u][i].second;if(to==fa)continue;dfs1(to,u,pre^cap);}mp[pre]=(mp[pre]+siz[u])%mod;
}
void dfs2(LL u,LL fa,LL pre)//链上两点其中一点是LCA
{ans=(ans+mp[pre]*siz[u]%mod)%mod;LL len=G[u].size();for(LL i=0;i<len;i++){LL to=G[u][i].first;LL cap=G[u][i].second;if(to==fa)continue;sum=(sum+siz[u]-siz[to])%mod;mp[pre]=(mp[pre]+sum)%mod;dfs2(to,u,pre^cap);mp[pre]=(mp[pre]-sum)%mod;sum=(sum-siz[u]+siz[to])%mod;}
}
int main()
{scanf("%lld",&n);for(LL i=2;i<=n;i++){LL fi,wi;scanf("%lld%lld",&fi,&wi);pair<LL,LL> pre=make_pair(fi,wi);G[i].push_back(pre);pre=make_pair(i,wi);G[fi].push_back(pre);}dfs(1,0);mp.clear();dfs1(1,0,0);mp.clear();dfs2(1,0,0);printf("%lld\n",ans);return 0;
}

The 2019 ACM-ICPC China Shannxi Provincial Programming Contest( J. And And And)相关推荐

  1. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest (西安邀请赛重现) J. And And And...

    链接:https://nanti.jisuanke.com/t/39277 思路: 一开始看着很像树分治,就用树分治写了下,发现因为异或操作的特殊性,我们是可以优化树分治中的容斥操作的,不合理的情况只 ...

  2. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest题解

    以下所有AC题解程序来自"仙客传奇"团队. A. Tasks AC的C++语言程序: /* JSK-39268 Tasks */#include <bits/stdc++.h ...

  3. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest

    原题链接:https://www.jisuanke.com/contest/2625?view=challenges A. Tasks #include<bits/stdc++.h> us ...

  4. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest C.Angel's Journey(计算几何基础)

    题目 T(T<=500)组样例,每组样例给出rx,ry,r,x,y(-100<=rx,ry,x,y<=100,0<r<=100) 代表被救的人在(rx,ry-r)位置,且 ...

  5. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest J.And And And(启发式合并)

    题目 n(n<=1e5)个点的树,是一棵点1为根的有根树, 每条边有一边权w(0<=w<=1e18) 简化题意,如果u<v,且树上(u,v)之间的边权异或和为0, 则如果把(u ...

  6. E. Tree(The 2019 ACM-ICPC China Shannxi Provincial Programming Contest)(树链剖分+线段树)

    4000ms 262144K judge:计蒜客 Description Ming and Hong are playing a simple game called nim game. They h ...

  7. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest C.Angel's Journey

    题意: T(T<=500)组样例,每组样例给出rx,ry,r,x,y(-100<=rx,ry,x,y<=100,0<r<=100) 代表被救的人在(rx,ry-r)位置, ...

  8. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest-L.Swap

    https://nanti.jisuanke.com/t/39279 题意:给一个数组操作1:前后部分调换(n为偶数中间的不变):操作2: 偶数位置与前面位置的交换(n为奇数最后一个不变) 思路:打表 ...

  9. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area

    A: 给你一个矩阵求'/' 和 '\' 围成的图形,简单签到题,有一些细节要考虑. 题解:一行一行的跑,遇到'/'和'\' 就加0.5, 在面积里面的'.' 就加1.用一个flag来判断是否在围住的图 ...

最新文章

  1. s7day2学习记录
  2. Stage划分和Task最佳位置
  3. android webview远程调试
  4. 强大的图片浏览器---------增强、降低透明度、切换下一张
  5. hMailServer之发送附件大小限制
  6. 使用CURL抓取https网页报错的一种解决方法
  7. 七月的尾巴,我不是狮子座
  8. 量化交易系统用例图(一)
  9. 【转帖】年轻人不讲武德=白piao接口测试知识还白piao接口测试工具会员
  10. html 点击展开显示全部,多行溢出省略号显示及点击展开(css/js)实现!
  11. C语言-printf打印的用法
  12. Python+Vue计算机毕业设计基于微服务的闪聚支付系统设计vwt4i(源码+程序+LW+部署)
  13. 利好消息!康复肺炎患者抗体血浆有助于拯救危重病人!捐献号召一呼百应
  14. 【java基础】——一维数组和二维数组存储占用内存大小问题
  15. 安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】
  16. 如何在 Windows 中重新安装或修复 Internet Explorer
  17. [数据与处理]归一化(连续值和离散值)
  18. linux开发环境基础搭建
  19. 游戏邦成立以来部分游戏设计观点回顾
  20. 计算机专业学电路分析,计算机专业电路系列课程教学改革调查分析

热门文章

  1. Intel 760P NVMe SSD安装UBuntu 16.04 所遇到的问题
  2. excel设置坐标轴起始值
  3. BIM家装族库丨柜子族
  4. 【Adobe Premiere】将视频的每一帧导出
  5. 快速掌握numpy.hanning、numpy.outer、numpy.meshgrid函数
  6. Java 的四大引用(强、软、弱、虚)
  7. 华为数通HCIE面试项目题——网关是放在接入还是汇聚?
  8. 京东android面试题,Android面试题—校招—京东
  9. 【leetcode刷题大作战】本周整理
  10. 2021年煤炭生产经营单位(安全生产管理人员)考试题库及煤炭生产经营单位(安全生产管理人员)免费试题