牛客练习赛32 B题 Xor Path
链接:https://ac.nowcoder.com/acm/contest/272/B
来源:牛客网
题目描述
输入描述:
输出描述:
输出一个整数,表示所有
的异或和,其中
。
输入例子:
4
1 2
1 3
1 4
1 2 3 4
输出例子:
5
-->
备注:
题解:
考虑每个点的经过次数sum=子树经过该点到另一个子树+子树上的点经过该点到外面的点+该点到其他点(就是n-1);
如果sum为奇数则对答案有贡献,偶数没有贡献;最后将是奇数的点的权值异或即可;
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define clr(a,val) memset(a,val,sizeof(a))
#define RI register int
#define eps 1e-6
typedef long long ll;
const int INF=0x3f3f3f3f;
inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-') f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int maxn=1e6+;
ll n,u,v,tot,head[maxn],val[maxn];
ll cnt[maxn],ans;
struct Edge{
ll u,v,nxt;
} edge[maxn];
inline void Init() {clr(head,-);ans=;tot=;clr(cnt,);}
inline void addedge(ll u,ll v)
{
edge[tot].u=u;
edge[tot].v=v;
edge[tot].nxt=head[u];
head[u]=tot++;
}
inline void dfs(ll t,ll pre)
{
cnt[t]=; ll sum=;
for(ll i=head[t];~i;i=edge[i].nxt)
{
ll v=edge[i].v;
if(v!=pre)
{
dfs(v,t);
sum+=cnt[v]*(cnt[t]-);
cnt[t]+=cnt[v];
}
}
sum+=(cnt[t]-)*(n-cnt[t])+n-;
if(sum&) ans^=val[t];
}
int main()
{
n=read(); Init();
for(ll i=;i<n-;++i) { u=read(),v=read();addedge(u,v);addedge(v,u);}
for(ll i=;i<=n;++i) val[i]=read();
dfs(,);
printf("%lld\n",ans);
return ;
}
牛客练习赛32 B题 Xor Path的更多相关文章
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛44 B题 (思维)
链接:https://ac.nowcoder.com/acm/contest/634/B 来源:牛客网 给出n条线段,第i条线段的长度为ai, 每次可以从第i条线段的j位置跳到第i + 1条线段的j+ ...
- 牛客练习赛38 D 题 出题人的手环 (离散化+树状数组求逆序对+前缀和)
链接:https://ac.nowcoder.com/acm/contest/358/D来源:牛客网 出题人的手环 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他 ...
- 牛客练习赛51 D题
链接:https://ac.nowcoder.com/acm/contest/1083/D来源:牛客网 有一个草原可以用一个1~400的数轴表示.有n头羊和q个查询.每头羊的编号分别是1,2,3…n. ...
- 牛客练习赛53 B题调和级数
https://ac.nowcoder.com/acm/contest/1114/B 这题时间卡的比较死,多了一个快速幂的logn就过不了这题. #include<bits/stdc++.h&g ...
- 牛客练习赛 26 C题 城市规划【贪心】
<题目链接> 题目描述 小a的国家里有n个城市,其中第i和第i - 1个城市之间有无向道路连接,特殊的,第1个城市仅与第2个城市相连为了减轻道路维护负担,城市规划局局长MXT给出了m个要求 ...
- 牛客练习赛 26 B题 烟花【DP】(经典)
<题目链接> 题目描述 小a有个烟花,每个烟花代表着互不相同的颜色,对于第个烟花,它有的概率点燃,现在小a要去点燃它们,他想知道产生颜色的期望个数 及 产生恰好产生种颜色的概率 输入描述: ...
- 牛客练习赛32 A/B/C
https://ac.nowcoder.com/acm/contest/272/A v<=k时 答案就是k个1 否则贪心的从中间向两边添加1 #include<bits/stdc++.h ...
- 牛客练习赛10 E题 数列查找 (分块思想 + 莫队算法)
题目链接 数列查找 考虑分块然后跑莫队, 设$c[i]$为$i$在当前维护的区间内出现的次数, $g[i]$为在当前维护的区间内有多少个数出现次数为$i$, $bg[i]$把出现次数分块,$bg[i ...
随机推荐
- 构建大型 Vue.js 项目的10条建议
下面是我在开发大型 Vue 项目时的最佳实践.这些技巧将帮助你开发更高效.更易于维护和共享的代码. 今年做自由职业的时候,我有机会开发了一些大型 Vue 应用程序.我所说的这些项目,Vuex stor ...
- IP网段的判断
一. OSI七层模型 表示 说明 作用 应用层 HTTP.ftp 协议 表示层 UTF-8 将应用层协议翻译成计算机可识别的语言 会话层 管理传输层 传输层 TCP/UDP 建立以及断开连接 网 ...
- 原来JS是这样的 - 原型链
上一篇提到属性描述符 [[Get]] 和 [[Put]] 以及提到了访问描述符 [[Prototype]],看它们的特性就会很容易的让人想到经典的面向对象风格体系中对类操作要做的事情,但带一些 int ...
- Spring注解@Configuration是如何被处理的?
从SpringApplication开始 一般情况下启动SpringBoot都是新建一个类包含main方法,然后使用SpringApplication.run来启动程序: @SpringBootApp ...
- Redis 工具 redis-port 使用
redis-port 是一个 Redis 工具,通过解析 rdb 文件,实现 Redis 主节点和从节点的数据同步. 摘要: 一个可以将redis主从集群,cluster上的数据实时迁移到 cod ...
- ubuntu触摸板双指滑动,页面滚动方向
setting——mouse & Touchpad——Natural scrolling 跟我的另一台本子一样了-
- 突破至暗时刻,HCIE-RS的6个月成就之路
我是今年四月份报的HCIE培训,到考完面试总共六个月的时间,对于HCIE整个考试的流程来说,六个月的时间不短,但也不是很长.尤其是面试,需要花费大量的时间和精力,下面我就把我整个备考历程做个简单的分享 ...
- ubuntu 16.04上源码编译libjpeg-turbo和使用教程 | compile and use libjpeg-turbo on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/9f626e7a/,欢迎阅读! compile and use libjpeg-turbo on ubuntu 16.04 Seri ...
- MySQL常用的查询语句回顾
让你快速复习语句的笔记宝典. create table users( username varchar(20) primary key, userpwd varchar(20) ) alt ...
- nginx 负载均衡简单配置
配置要求: 三台服务器 127.0.0.1 主负载(把访问请求分给主机池) 127.0.0.2 主机2 127.0.0.3 主机3 第一步: 配置127.0.0.1 ...