Description
花开雷霆崖,血染伊吕波。
公元1772年。
郭大侠终于照着天行廖的叮嘱,摆出了阵型,准备带着部队与天行廖相逢于雷霆崖。
但郭大侠实在是没有把握,这个阵型是真的如天行廖所言,所向披靡,于是准备在于天行廖相逢前再确认一遍。
按照天行廖的叮嘱说,这个阵型得满足以下两个要求才能发挥最大威力:
1.这个阵型是一颗树,即n个点,n-1条边,任意两点之间都能互相到达。
2.这个阵型满足好朋友的对数大于n对,好朋友即满足P(u,v)=0,P(u,v)表示从u点到v点的简单路径上点编号的异或和。注意P(u,v)和P(v,u)视作一样,只计数一次。
郭大侠的士兵的的确确摆出了一颗树,但是点数太多了,很难统计好朋友的对数。
这可怎么办?
现在郭大侠找到了你,希望你能帮助憔悴的郭大侠解决这个问题,希望你能够数出这棵树上究竟有多少对好朋友。

Input
第一行n,表示点的数量,(1<=n<=100000)
接下来n-1行,每行两个整数u,v,表示点u与点v之间连有一条边(1<=u,v<=n)

保证是一棵树
Output

输出这棵树上究竟有多少对好朋友。

Sample Input

17
9 8
9 11
9 13
9 15
9 16
11 10
13 12
15 14
16 17
8 1
1 5
5 4
4 6
6 7
7 2
2 3

Sample Output

18

题解:
对于一个dfs,根节点的map维护之前遍历过的子树的每个异或值的个数,然后当前的儿子节点继续往下dfs,在回溯到这里的时候,这个节点上的map就已经维护好了以它为根的各个异或值的个数,接着统计个数就直接相乘就可以了。。
(虽然感觉已经很好了但是100ms的时限是什么玩意?就是卡不过。。)

代码

#include<iostream>
#include<map>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<vector>
#define LiangJiaJun main
using namespace std;
long long res=0;
int n , ne , h[100004];
struct edge{int to , next ;
}e[200004];
void insert(int u,int v){e[++ne].to = v;e[ne].next = h[u];h[u] = ne;
}map<int , int > A[100004];map<int , int >::iterator it;void unmap(int x, int y){if(A[x].size() < A[y].size())swap(A[x],A[y]);while(A[y].size()){it = A[y].begin();A[x][it->first] += it->second;A[y].erase(it);}}void dfs(int x,int FA, int val){A[x][val] ++;for(int i=h[x];i;i=e[i].next){if(e[i].to == FA){continue;}dfs(e[i].to , x , val^e[i].to);for(it = A[e[i].to].begin(); it != A[e[i].to].end(); it ++){int now = (it->first) ^ x;if(A[x].count(now)){res += 1LL * A[x][now] * (it->second);}}unmap(x,e[i].to);}}
int LiangJiaJun(){memset(h,0,sizeof(h));scanf("%d",&n);for(int i=1;i<n;i++){int u,v;scanf("%d%d",&u,&v);insert(u,v);insert(v,u);}dfs(1,0,1);cout<<res<<endl;return 0;
}

[UESTC1284] 郭大侠的苦恼相关推荐

  1. CDOJ 1284 苦恼的郭大侠 map启发式合并

    苦恼的郭大侠 题目连接: http://acm.uestc.edu.cn/#/problem/show/1284 Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行 ...

  2. cdoj1342郭大侠与甲铁城

    地址:http://acm.uestc.edu.cn/#/problem/show/1342 题目: 郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     ...

  3. cdoj1338郭大侠与英雄学院

    地址:http://acm.uestc.edu.cn/#/problem/show/1338 思路: 郭大侠与英雄学院 Time Limit: 6000/2000MS (Java/Others)    ...

  4. 郭大侠与Rabi-Ribi(优先队列)

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  5. 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi CDOJ 1334 优先队列

    J - 郭大侠与Rabi-Ribi 就是有N只兔子,每只兔子会存在a[i]秒,价值为v[i],然后每秒只能取一只兔子,问能取的兔子总价值的最大值是多少 用一个堆/优先队列维护就好了 首先我们先把兔子按 ...

  6. 【CDOJ 1334】 郭大侠与Rabi-Ribi

    http://acm.uestc.edu.cn/#/problem/show/1334 最近郭大侠迷上了玩Rabi-Ribi这个游戏. Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在 ...

  7. 郭大侠与线上游戏(set)

    思路:这道题目要求你在一个排好序的数列找中位数,所以可以开两个set去做,一个保存<(tail-head)/2,一个则是>=(tail-head),每次输出储存右边的最小值就是中位数了. ...

  8. 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组

    K - 郭大侠与甲铁城 有一个区间,长度1e5,每个点有一种颜色,颜色属于[1,1000],离线询问某个区间的颜色种树,询问次数也少1e5 我的做法是离线树状数组 首先把区间保存下来,按右端点升序排序 ...

  9. cdoj1337郭大侠与阴阳家

    地址:http://acm.uestc.edu.cn/#/problem/show/1337 思路: 郭大侠与阴阳家 Time Limit: 3000/4000MS (Java/Others)     ...

最新文章

  1. 道路检测 | SNE-RoadSeg论文阅读
  2. centos7 mysql 1064_【mysql报错】1064 - You have an error in your SQL syntax;
  3. Microsoft Windows Workflow Foundation 入门:开发人员演练
  4. 【Python自然语言处理】中文分词技术——统计分词
  5. 开发函数计算的正确姿势——tensorflow serving
  6. Java:File.separator作用相当于 ‘ \ ‘
  7. centos安装mysql卡住_CentOS 6.4安装MySQL的过程中出现的bug
  8. 奔腾双核linux服务器,Dell推出双核心奔腾服务器
  9. shedlock源码解析
  10. 13、MVC 设计思想
  11. 中文核心期刊是什么?
  12. 应用于电力电子变压器的双向DC_DC变换器综述(学习笔记)
  13. Vue使用Emoji表情
  14. 仿真软件proteus构建LCD1602四线驱动实验
  15. matlab自定义colormap保存不,matlab自定义colormap
  16. 前端 - bootstrap树形菜单
  17. Lora模块(SX1278)
  18. Python 入门学习路线
  19. 战列舰机械计算机,问个事,二战时期的战列舰可以装备垂直稳定仪么?
  20. 消除VMware启动虚拟机时的floppy0提示的方法

热门文章

  1. 蓝牙语音遥控器低功耗蓝牙5.1芯片XY51S03B
  2. DB2数据库联邦(跨库查询)
  3. 计算机组成原理课件蒋本珊,计算机组成原理(蒋本珊)教师用书
  4. 【UnityC#】写了一个事件分发器
  5. 抄袭与转载之思考(3)
  6. 员工入职背景调查需要查哪些内容?
  7. 沐风:最好的微信运营软件系统
  8. 超级马力欧计算机谱子,《超级马里奥BGM 第一首,钢琴谱》总十五首,Koji Kondo(五线谱 钢琴曲 指法)-弹吧|蛐蛐钢琴网...
  9. Apollo2.0自动驾驶quickstart文件夹之apollo_2_0_hardware_system_installation_guide_v1.md
  10. 从ZETA无线通信技术特点出发选择合适的物联网协议