BZOJ_3772_精神污染_主席树
BZOJ_3772_精神污染_主席树
Description
Input
Output
Sample Input
1 2
2 3
3 4
2 5
3 5
2 5
1 4
Sample Output
样例解释
可以选择的路径对有(1,2),(1,3),(2,3),只有路径1完全覆盖路径2。
HINT
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 100050
typedef long long ll;
int head[N],to[N<<1],nxt[N<<1],cnt,n,m,root[N],maxn;
int fa[N],top[N],siz[N],son[N],dep[N],dfn[N],S[N],out[N],t[N*39],tot,ls[N*39],rs[N*39];
inline void add(int u,int v) {to[++cnt]=v; nxt[cnt]=head[u]; head[u]=cnt;
}
void insert(int &y,int x,int l,int r,int v,int c) {y=++tot; t[y]=t[x]+c;if(l==r) return ;int mid=(l+r)>>1;if(v<=mid) rs[y]=rs[x],insert(ls[y],ls[x],l,mid,v,c);else ls[y]=ls[x],insert(rs[y],rs[x],mid+1,r,v,c);
}
int query(int a,int b,int c,int d,int l,int r,int x,int y) {if(x<=l&&y>=r) return t[a]+t[b]-t[c]-t[d];int mid=(l+r)>>1,re=0;if(x<=mid) re+=query(ls[a],ls[b],ls[c],ls[d],l,mid,x,y);if(y>mid) re+=query(rs[a],rs[b],rs[c],rs[d],mid+1,r,x,y);return re;
}
void dfs1(int x,int y) {S[++S[0]]=x; dfn[x]=++maxn;int i; dep[x]=dep[y]+1; fa[x]=y; siz[x]=1;for(i=head[x];i;i=nxt[i]) if(to[i]!=y) {dfs1(to[i],x); siz[x]+=siz[to[i]];if(siz[to[i]]>siz[son[x]]) son[x]=to[i];}out[x]=++maxn;
}
void dfs2(int x,int t) {top[x]=t; int i; if(son[x]) dfs2(son[x],t);for(i=head[x];i;i=nxt[i]) if(to[i]!=fa[x]&&to[i]!=son[x]) dfs2(to[i],to[i]);
}
int lca(int x,int y) {while(top[x]!=top[y]) {if(dep[top[x]]>dep[top[y]]) swap(x,y);y=fa[top[y]];}return dep[x]<dep[y]?x:y;
}
ll gcd(ll x,ll y) {return y?gcd(y,x%y):x;
}
int main() {scanf("%d%d",&n,&m);int i,x,y,j;for(i=1;i<n;i++) {scanf("%d%d",&x,&y);add(x,y); add(y,x);}dfs1(1,0);dfs2(1,1);memset(head,0,sizeof(head)); cnt=0;for(i=1;i<=m;i++) {scanf("%d%d",&x,&y);add(x,y);}for(j=1;j<=n;j++) {x=S[j];root[x]=root[fa[x]];for(i=head[x];i;i=nxt[i]) {y=to[i];insert(root[x],root[x],1,maxn,dfn[y],1);insert(root[x],root[x],1,maxn,out[y],-1);}}ll ans=0,dev=1ll*m*(m-1)/2;;for(x=1;x<=n;x++) {for(i=head[x];i;i=nxt[i]) {y=to[i];int l=lca(x,y);ans+=query(root[x],root[y],root[l],root[fa[l]],1,maxn,dfn[l],dfn[x]);ans+=query(root[x],root[y],root[l],root[fa[l]],1,maxn,dfn[l],dfn[y]);ans-=query(root[x],root[y],root[l],root[fa[l]],1,maxn,dfn[l],dfn[l]);ans--;}}ll tmp=gcd(ans,dev);printf("%lld/%lld\n",ans/tmp,dev/tmp);
}
转载于:https://www.cnblogs.com/suika/p/8967726.html
BZOJ_3772_精神污染_主席树相关推荐
- [BZOJ3772]精神污染
[BZOJ3772]精神污染 试题描述 兵库县位于日本列岛的中央位置,北临日本海,南面濑户内海直通太平洋,中央部位是森林和山地,与拥有关西机场的大阪府比邻而居,是关西地区面积最大的县,是集经济和文化于 ...
- BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析、启发式合并、线段树合并、主席树)...
标签那么长是因为做法太多了... 题目链接: (bzoj 3277) https://www.lydsy.com/JudgeOnline/problem.php?id=3277 (bzoj 3473) ...
- HDU - 7084 Pty loves string kmp + fail树 + 主席树
传送门 文章目录 题意: 思路: 题意: 给你一个字符串sss,有qqq个询问,每次给x,yx,yx,y代表取sss的前xxx个字符和后yyy个字符拼接起来得到ttt,输出ttt在sss中出现的次数. ...
- hdu5111 树链剖分,主席树
hdu5111 链接 hdu 思路 先考虑序列上如何解决. 1 3 2 5 4 1 2 4 5 3 这个序列变成 1 2 3 4 5 1 3 5 5 2 是对答案没有影响的(显然). 然后查询操作\( ...
- NOI数据结构:主席树
主席树详解 主席树详解_西红柿爱炒番茄-CSDN博客 最详细的主席树(不修改,待修改) BZOJ 1901 最详细的主席树(不修改,待修改) BZOJ 1901_Bartholomew_的博客-CSD ...
- Luogu4755 Beautiful Pair 最值分治、主席树
传送门 整天做一些模板题感觉药丸 设\(val_i\)表示第\(i\)个位置的值 看到区间最大值考虑最值分治.对于当前的区间\([l,r]\),找到区间最大值\(mid\),递归\([l,mid-1] ...
- 【BZOJ1926】【SDOI2010】粟粟的书架(DP,主席树,二分)
Description 幸福幼儿园B29班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢Thomas H. Cormen的文章.粟粟家中有一个R行C列的巨型书架,书架的每一个位 ...
- 线。段。树--树状数组-主席树
简单了解一下线段树 以前写过的内容,搬运过来 线段树的应用场景:满足区间加法性质且多次查询,什么是区间加法性质,比如最大值,求和,树状数组.线段树.主席树依次. 线段树框架:建树--查询--更新... ...
- HDU 4348 To the moon(主席树区间修改)
题意 给你一个区间,支持如下操作: 在一段区间内加上一个值,并生成一个历史版本 查询某个版本下一段区间内的和 回到一个历史版本上并舍弃之后的版本 做法 这就是主席树区间修改裸题啦QwQ 上一篇博客我讲 ...
- SPOJ - COT Count on a tree [LCA+主席树]【数据结构】
题目链接:http://www.spoj.com/problems/COT/en/ -------------------------------------- COT - Count on a tr ...
最新文章
- mysql递归sql_SQL如何实现MYSQL的递归查询,SQL实现MYSQL递归
- Verilog初级教程(21)Verilog中的延迟控制语句
- 创建第一个IOS项目
- 飞向天国:儿童智力单机游戏6岁-8岁
- 动手实验:继承条件下的构造方法调用
- 特斯拉地图数据服务以后由百度地图提供
- python带参数怎么运行_如何运行带参数的python脚本
- eclipse远程调试tomcat
- SpringCloud-Config通过Java访问URL对敏感词加密解密
- 大数据外部性案例分析_大数据外部性案例分析
- 使用 Arduino 烧录全新的 ATmega328P
- flutter压缩图片上传
- 美国第二位CTO Todd Park将离职
- Tslib移植与分析
- 使用cookie进行模拟登陆
- NIO与Netty编程(三)之Netty编程
- Android FingerPrint之指纹识别
- 软件产品登记证书申请程序 软件产品登记证书用途
- 解读:企微面向服务商进行平台收费模式调整的说明
- 工具集电子书等4G资料免费分享(IT 信安菜鸟入门必备)