The 2019 ACM-ICPC China Shannxi Provincial Programming Contest( J. And And And)
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)相关推荐
- The 2019 ACM-ICPC China Shannxi Provincial Programming Contest (西安邀请赛重现) J. And And And...
链接:https://nanti.jisuanke.com/t/39277 思路: 一开始看着很像树分治,就用树分治写了下,发现因为异或操作的特殊性,我们是可以优化树分治中的容斥操作的,不合理的情况只 ...
- The 2019 ACM-ICPC China Shannxi Provincial Programming Contest题解
以下所有AC题解程序来自"仙客传奇"团队. A. Tasks AC的C++语言程序: /* JSK-39268 Tasks */#include <bits/stdc++.h ...
- The 2019 ACM-ICPC China Shannxi Provincial Programming Contest
原题链接:https://www.jisuanke.com/contest/2625?view=challenges A. Tasks #include<bits/stdc++.h> us ...
- 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)位置,且 ...
- 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 ...
- 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 ...
- 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)位置, ...
- The 2019 ACM-ICPC China Shannxi Provincial Programming Contest-L.Swap
https://nanti.jisuanke.com/t/39279 题意:给一个数组操作1:前后部分调换(n为偶数中间的不变):操作2: 偶数位置与前面位置的交换(n为奇数最后一个不变) 思路:打表 ...
- ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area
A: 给你一个矩阵求'/' 和 '\' 围成的图形,简单签到题,有一些细节要考虑. 题解:一行一行的跑,遇到'/'和'\' 就加0.5, 在面积里面的'.' 就加1.用一个flag来判断是否在围住的图 ...
最新文章
- s7day2学习记录
- Stage划分和Task最佳位置
- android webview远程调试
- 强大的图片浏览器---------增强、降低透明度、切换下一张
- hMailServer之发送附件大小限制
- 使用CURL抓取https网页报错的一种解决方法
- 七月的尾巴,我不是狮子座
- 量化交易系统用例图(一)
- 【转帖】年轻人不讲武德=白piao接口测试知识还白piao接口测试工具会员
- html 点击展开显示全部,多行溢出省略号显示及点击展开(css/js)实现!
- C语言-printf打印的用法
- Python+Vue计算机毕业设计基于微服务的闪聚支付系统设计vwt4i(源码+程序+LW+部署)
- 利好消息!康复肺炎患者抗体血浆有助于拯救危重病人!捐献号召一呼百应
- 【java基础】——一维数组和二维数组存储占用内存大小问题
- 安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】
- 如何在 Windows 中重新安装或修复 Internet Explorer
- [数据与处理]归一化(连续值和离散值)
- linux开发环境基础搭建
- 游戏邦成立以来部分游戏设计观点回顾
- 计算机专业学电路分析,计算机专业电路系列课程教学改革调查分析
热门文章
- Intel 760P NVMe SSD安装UBuntu 16.04 所遇到的问题
- excel设置坐标轴起始值
- BIM家装族库丨柜子族
- 【Adobe Premiere】将视频的每一帧导出
- 快速掌握numpy.hanning、numpy.outer、numpy.meshgrid函数
- Java 的四大引用(强、软、弱、虚)
- 华为数通HCIE面试项目题——网关是放在接入还是汇聚?
- 京东android面试题,Android面试题—校招—京东
- 【leetcode刷题大作战】本周整理
- 2021年煤炭生产经营单位(安全生产管理人员)考试题库及煤炭生产经营单位(安全生产管理人员)免费试题