【树上异或和计数】czr 太弱啦
【题目】:
给一棵树,求异或和为k的路径个数。
【题解】:
很遗憾比赛时做不出来,后来看别人题解做出来的。用于记录博客所用。
然后进行Dfs,得到从根节点到某一个节点的异或值,计算方案时只需要在map中查询w xor k的数量(如果路径不经过所选的根节点,那么其公共部分对答案无影响),不难发现这样计算不需要考虑k=0的特殊情况和重复的问题。
我们可以在O (nlogn)的时间完成这个过程。
值得一提的是,题目保证了直径不超过150000,意在防止Dfs导致爆栈。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+;
typedef struct Edge{
int to,next,w;
}Edge;
Edge e[N<<];
map<int,int>Mp;
int head[N],cnt,n,m,k;
long long ans;
void add_edge(int u,int v,int w){
e[cnt] = Edge{ v ,head[u],w};
head[u] = cnt ++ ;
}
void dfs(int u,int fa,int w){
ans = ans + Mp[w^k];
Mp[w] ++ ;
for(int i=head[u];~i;i=e[i].next){
int to = e[i].to;
if( to == fa ) continue;
dfs( to , u , w^e[i].w );
}
}
int main()
{
memset(head,-,sizeof head );
scanf("%d%d",&n,&k);
for(int i=,u,v,w;i<n;i++){
scanf("%d%d%d",&u,&v,&w);
add_edge(u,v,w);
add_edge(v,u,w);
}
dfs(,,);
printf("%lld\n",ans);
return ;
}
树上异或和为k的方案数
居然能让我找到一个类似的题目,真的太幸运了。
P2420 让我们异或吧
https://www.luogu.org/problem/P2420
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e5 + ;
typedef struct Edge{
int to,next,w;
//Edge() {}
Edge( int To = ,int Ne = - , int W = ):
to(To) , next(Ne) , w(W) {}
}Edge;
Edge e[N<<];
int head[N],dis[N],cnt;
void add_edge(int u,int v,int w){
e[cnt] = Edge( v,head[u],w);
head[u] = cnt ++ ;
} void dfs(int u,int Fa,int w){
dis[u] = w ;
for(int i=head[u];~i;i=e[i].next){
int to = e[i].to ;
if( to == Fa ) continue ;
dfs( to,u,w^e[i].w);
}
}
int main()
{
int n,m;
memset(dis,,sizeof dis);
memset(head,-,sizeof head);
scanf("%d",&n);
for(int i=,u,v,w;i<n;i++){
scanf("%d%d%d",&u,&v,&w);
add_edge(u,v,w);
add_edge(v,u,w);
}
dfs(,,); scanf("%d",&m);
for(int i=,u,v;i<=m;i++){
scanf("%d%d",&u,&v);
int ans = dis[u] ^ dis[v] ;
printf("%d\n",ans);
} }
P2420 让我们异或吧
【树上异或和计数】czr 太弱啦的更多相关文章
- POJ 3764 The xor-longest( 树上异或前缀和&字典树求最大异或)
In an edge-weighted tree, the xor-length of a path p is defined as the xor sum of the weights of edg ...
- POJ-1741 树上分治--点分治(算法太奇妙了)
给你1e5个节点的树,(⊙﹏⊙) 你能求出又几对节点的距离小于k吗??(分治NB!) 这只是一个板子题,树上分治没有简单题呀!(一个大佬说的) #include<cstdio> #incl ...
- Delphi的RTTI还分为对类和对象的判断,以及对普通属性的判断——相比之下,C++的RTTI实在太弱!
堂堂C++沦落到这个地步,也实在是够可怜的.
- hdu 2821 学习一点dfs的小技巧吧。。 还是自己太弱了
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int r,c ...
- 差分数组 and 树上差分
差分数组 定义 百度百科中的差分定义 //其实这完全和要讲的没关系 qwq 进去看了之后是不是觉得看不懂? 那我简单概括一下qwq 差分数组de定义:记录当前位置的数与上一位置的数的差值. 栗子 容易 ...
- 新浪计数业务之Redis
今天听一个同事说新浪使用的是Redis,于是自己将研究的过程整理出来以备后用. 我们都知道微博这玩意儿现在很火,新浪作为国内最早使用redis,并且是国内最大的redis使用者,当然备受人们关注.新浪 ...
- Pólya计数定理
我日啊..被cls的计数题虐得欲仙欲死...根本不会计数QAQ... 不懂数学啊... 前置技能 群 群是二元组\((G,*)\),满足 \(*:(G,G)\rightarrow G\) \(\exi ...
- HDU5779 Tower Defence (BestCoder Round #85 D) 计数dp
分析(官方题解): 一点感想:(这个题是看题解并不是特别会转移,当然写完之后看起来题解说得很清晰,主要是人太弱 这个题是参考faebdc神的代码写的,说句题外话,很荣幸高中和faebdc巨一个省,虽然 ...
- Android系统智能指针的设计思路(轻量级指针、强指针、弱指针)
本博客为原创,转载请注明出处,谢谢. 参考博文:Android系统的智能指针(轻量级指针.强指针和弱指针)的实现原理分析 C++中最容易出错的地方莫过于指针了,指针问题主要有两类,一是内存泄露,二是无 ...
随机推荐
- vue后台_登录权限
登录权限控制包含着这么几个方面的含义: 1)不同的权限对应不同的路由 2)侧边栏需要根据不同的权限,异步生成 登录:使用用户名和密码,登录成功后返回用户的token(防止XSS攻击),将此token存 ...
- elasticsearch java索引的增删改查
1.创建索引并插入数据 Map<String, Object> json = new HashMap<String, Object>(); json.put("use ...
- 牛顿法与拟牛顿法(四) BFGS 算法
转自 https://blog.csdn.net/itplus/article/details/21897443
- 在Winform中屏蔽UnityWebPlayer的右键以及自带Logo解决方案整理
根据项目的需要,对已经完成的Unity三维模型以及游戏要使用Winform进行包装,也就是使用Winform做一层外壳.因此在展示Unity的时候使用到了UnityWebPlayer这个插件,对于此插 ...
- err="etherbase address must be explicitly specified"
如果要初始化区块链的话就用创始区块 如果通过创世区块来初始化区块链的话,首先需要一个初始化区块链的json文件,如下. { "config": { "chainId& ...
- Async and Await (Stephen Cleary)
https://blog.stephencleary.com/2012/02/async-and-await.html Most people have already heard about the ...
- python hasattr()函数,getattr()函数, setattr()函数
1. hasattr(object, ‘属性名 or 方法名') 判断一个对象里面是否有某个属性或者某个方法,返回布尔值,有某个属性或者方法返回True, 否则返回False 2. getattr() ...
- 【I·M·U_Ops】------Ⅰ------ IMU自动化运维平台设想
说明本脚本仅作为学习使用,请勿用于任何商业用途.本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. #A 搞这个平台的初心 由于之前呆的单位所有IT相关硬件资源都要我们 ...
- RotateDrawable
用来对Drawable进行旋转,也是通过setLevel来控制旋转的,最大值也是:10000 相关属性如下: fromDegrees:起始的角度,,对应最低的level值,默认为0 toDegrees ...
- Oracle查询显示CLOB的内容
select dbms_lob.substr(note) from table