CDOJ 1284 苦恼的郭大侠 map启发式合并
题目连接:
http://acm.uestc.edu.cn/#/problem/show/1284
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
Hint
题意
题解:
map启发式合并就好了
对于每个点暴力统计答案就好了
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+7;
vector<int> E[maxn];
map<int,int> H[maxn];
int pre[maxn];
long long ans = 0;
void uni(int x,int y)
{if(H[x].size()<H[y].size())swap(H[x],H[y]);map<int,int>::iterator it;while(H[y].size()){it=H[y].begin();H[x][it->first]+=it->second;H[y].erase(it);}
}
void dfs(int x,int fa,int val)
{H[x][val]++;for(int i=0;i<E[x].size();i++){int v = E[x][i];if(v == fa)continue;dfs(v,x,val^v);for(auto a:H[v]){int t = a.first^x;if(H[x].count(t))ans+=1ll*H[x][t]*a.second;}uni(x,v);}
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<n;i++){int x,y;scanf("%d%d",&x,&y);E[x].push_back(y);E[y].push_back(x);}dfs(1,0,1);cout<<ans<<endl;
}
转载于:https://www.cnblogs.com/qscqesze/p/5261616.html
CDOJ 1284 苦恼的郭大侠 map启发式合并相关推荐
- [UESTC1284] 郭大侠的苦恼
Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行廖的叮嘱,摆出了阵型,准备带着部队与天行廖相逢于雷霆崖. 但郭大侠实在是没有把握,这个阵型是真的如天行廖所言,所向 ...
- 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi CDOJ 1334 优先队列
J - 郭大侠与Rabi-Ribi 就是有N只兔子,每只兔子会存在a[i]秒,价值为v[i],然后每秒只能取一只兔子,问能取的兔子总价值的最大值是多少 用一个堆/优先队列维护就好了 首先我们先把兔子按 ...
- 【CDOJ 1334】 郭大侠与Rabi-Ribi
http://acm.uestc.edu.cn/#/problem/show/1334 最近郭大侠迷上了玩Rabi-Ribi这个游戏. Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在 ...
- 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组
K - 郭大侠与甲铁城 有一个区间,长度1e5,每个点有一种颜色,颜色属于[1,1000],离线询问某个区间的颜色种树,询问次数也少1e5 我的做法是离线树状数组 首先把区间保存下来,按右端点升序排序 ...
- 2016 UESTC Training for Data Structures F - 郭大侠与“有何贵干?” CDOJ 1335 线段树 扫描线 离散化
F - 郭大侠与"有何贵干?" 就是给一个三维空间,和N个长方体,问覆盖K次的体积 x和y都是1e9,但是z是[1,3],所以可以把这个分为两个二维平面,求被覆盖K次的面积,最后加 ...
- cdoj 1334 郭大侠与Rabi-Ribi 贪心+数据结构
郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Su ...
- cdoj 1355 郭大侠与“有何贵干?”
题目传送门 郭大侠与"有何贵干?" 连当个值日生也能酷到迷死人,县立学文高中一年二班.这里,有个一入学就引起瞩目的学生,名叫郭大侠.其举手投足都蕴含着一股酷劲,不对,根本酷过头了. ...
- cdoj 1342 郭大侠与甲铁城 树状数组+离线
郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit St ...
- cdoj 1334 郭大侠与Rabi-Ribi Label:贪心+数据结构
郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 最近 ...
最新文章
- 教你动手推导Self-Attention!(附代码)
- SpringCloud导学
- 深入理解Redis系列之SpringBoot集成Redis
- 04-windows上安装Kibana
- Redis 6.0 源码阅读笔记(7) -- ZSet 数据类型源码分析
- 【Java6学习笔记】多线程编程中使用volatile保障原子性
- 服务器硬盘一直亮红灯怎么回事,请问:电脑的硬盘为何一直亮着红灯?且硬盘很 – 手机爱问...
- IMazing for Mac破解版永久激活方法
- 北航计算机本科生考研,和计算机考研的师弟师妹们分享一下经验本人本科北航...
- 计算机电源如何选配,自己组装电脑时,该怎么选择电源才合适?
- 免费比对工具DiffMerge
- 在互联网创业公司工作五年是一种怎样的体验?
- Mastering Selections in Photoshop CC Photoshop CC选区教程 Lynda课程中文字幕
- 2008年10月2号,星期四,晴。不患人之不己知,患不知人也。(孔子)
- 自己搭建内网可用的Jrebel License Server激活Jrebel
- ChatGPT能接入微信了
- oracle万能分页代码,Oracle万能分页法的存储过程
- 我们的实践:事理图谱,下一代知识图谱
- fopen函数的各种参数 r+ w+ a+ ab+
- 安装Bioconductor包和加载DESeq2包的报错问题解决