【树上异或和计数】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++中最容易出错的地方莫过于指针了,指针问题主要有两类,一是内存泄露,二是无 ...
随机推荐
- Mapreduce-实现webcount代码
参考博文:https://blog.csdn.net/qq_41035588/article/details/90514824 首先安装一个Hadoop-Eclipse-Plugin 方便来对于hdf ...
- POJ2689
题目 POJ2689 Prime Distance 原题传送门 主要思路 刚看到这题,心想:不就筛个 \(\left[2,U\right]\) 的质数表出来就可以了吗?一看数据范围: \(1<= ...
- Qt内的各种路径(让人迷惑)
Qt里面各种获取程序路径或者当前路径的写法,在此梳理一下,以防今后开发的程序中路径不统一 1.利用QDir获取路径 QDir::currentPath() 此路径是项目编译生成的路径即可执行文件所在目 ...
- 5.性能测试工具比较:Jmeter和LR
性能测试工具较多,无法一一进行介绍,感兴趣者可自行搜索资料学习.需要说明的是工具使用方法和原理都大同小异,掌握一个,其他皆可快速上手. 下面就以服务端的性能测试工具为例,对市场上最常用,知名度较高,也 ...
- ckpt convert to pb
import tensorflow as tf #from create_tf_record import * from tensorflow.python.framework import grap ...
- JAVA 基础编程练习题45 【程序 45 被 9 整除】
45 [程序 45 被 9 整除] 题目:判断一个素数能被几个 9 整除 package cskaoyan; public class cskaoyan45 { public static void ...
- 比特币 难度值(difficulty)
难度(Difficulty) 难度是对挖矿困难程度的度量,即指:计算符合给定目标的一个HASH值的困难程度.比特币网络有一个全局的区块难度,有效的区域必须有一个HASH值,该HASH值必须小于给定的目 ...
- iOS开发之—— 加密使用(MD5,base64,DES,AES)
基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash Algorithm ...
- Flutter 底部的renderflex溢出
一开始直接使用Scaffold布局,body:new Column 然后模拟器会提示捕获异常: 然后百度了一下Flutter的溢出问题,发现解决办法是使用SingleChildScrollView包 ...
- webdriver(chrome无头浏览器)
'''chrome无头浏览器''' from selenium.webdriver.chrome.options import Options # 导入相应的类 from selenium impor ...