博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UOJ #192. 【UR #14】最强跳蚤
阅读量:5225 次
发布时间:2019-06-14

本文共 1065 字,大约阅读时间需要 3 分钟。

Description

一棵树,给每一条边一个权值 \(w_i\),求出所有满足权值之积为完全平方数的路径的条数

Sulotion

是完全平方数的充要条件是质因子出现次数为偶数,那么我们给每一个质因子一个随机一个权值,那么满足条件的路径就是异或和为 \(0\) 的路径

\(dsu\) 做一下就好了(别管我这个傻逼)

#include
using namespace std;typedef long long ll;const int N=1e5+10,M=1e4+10;int n,prime[M],num=0,t[N];bool vis[M];int head[N],nxt[N*2],to[N*2],NUM=0;ll c[N*2],sed=41,LIM=1e15,ans=0,b[N];inline void link(int x,int y,ll z){ nxt[++NUM]=head[x];to[NUM]=y;head[x]=NUM;c[NUM]=z; nxt[++NUM]=head[y];to[NUM]=x;head[y]=NUM;c[NUM]=z;}inline void priwork(){ for(int i=2;i
A;inline ll seed(){return sed=(sed*41+99241)%LIM;}inline ll F(int x){ if(A.find(x)!=A.end())return A[x]; return A[x]=seed();}inline ll getval(int x){ ll ret=0; for(int i=1;i<=num;i++){ if(x
1)ret^=F(x); return ret;}int sz[N],son[N];ll dis[N];inline void dfs1(int x){ sz[x]=1; for(int i=head[x],u;i;i=nxt[i]){ if(sz[u=to[i]])continue; dis[u]=dis[x]^c[i];dfs1(u);sz[x]+=sz[u]; if(sz[son[x]]

转载于:https://www.cnblogs.com/Yuzao/p/8733876.html

你可能感兴趣的文章
- C#编程大幅提高OUTLOOK的邮件搜索能力!
查看>>
InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
查看>>
Windows 8.1 应用再出发 - 几种布局控件
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
[WebMatrix] 如何将SQL Compact 4.0 移转至SQL Server 2008 Express
查看>>
Java内部类详解
查看>>
验证码类[置顶] SSO单点登录系列5:cas单点登录增加验证码功能完整步骤
查看>>
冒泡排序
查看>>
python-基础
查看>>
《SQL Server 监控和诊断》
查看>>
《算法竞赛入门经典》札记1
查看>>
吴裕雄--天生自然 PYTHON3开发学习:多线程
查看>>
吴裕雄--天生自然C语言开发:数组
查看>>
吴裕雄 python 数据处理(1)
查看>>
区块链钱包应用如何开发
查看>>
HDU_3746 Cyclic Nacklace(KMP)
查看>>
Android爬坑之旅:软键盘挡住输入框问题的终极解决方式
查看>>
POJ 3301 Texas Trip (三分)
查看>>
java(配置eclipse )
查看>>
python - 简明 性能测试
查看>>