[概率][lca][dfs][树形dp] Jzoj P4225 宝藏
Description
Input
Output
Sample Input
231 01 221 0 12 0 2 140 12 03 013 0 1 0 1
Sample Output
1.00005.0000<空行>11.0000
Data Constraint
题解
- 这题一看似成相识,就是这题树的小改
- 具体做法之前的博客已经讲了很清楚了
- 那么这题的话,就直接把其所有询问存下来,按顺序跑就好了
- 对于它保留小数点后4位数,其实呢,这个东东就是个摆设,直接输出“.0000”就好了
代码
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <cmath> 5 #define ll long long 6 #define N 1000010 7 using namespace std; 8 const ll mo=1e9+7; 9 struct edge {int to,from;}e[N*2]; 10 int n,q,head[N],cnt,T,Q,a[1010],lca; 11 ll sum,f[N][21],dep[N],ans,k1[N],k2[N]; 12 void insert(int x,int y) {e[++cnt].to=y; e[cnt].from=head[x]; head[x]=cnt;} 13 void dfs(int x,int fa) 14 { 15 f[x][0]=fa,dep[x]=dep[fa]+1,k1[x]=0; 16 for (int i=head[x];i;i=e[i].from) 17 if (e[i].to!=fa) 18 dfs(e[i].to,x),k1[x]=(k1[x]+k1[e[i].to]+1)%mo; 19 k1[x]=(k1[x]+1)%mo; 20 } 21 void dfs1(int x,int fa) 22 { 23 ll sum=0; 24 for (int i=head[x];i;i=e[i].from) if (e[i].to!=fa) sum=(sum+k1[e[i].to]+1)%mo; 25 else sum=(sum+k2[x]+1)%mo; 26 for (int i=head[x];i;i=e[i].from) 27 if (e[i].to!=fa) 28 k2[e[i].to]=((sum-k1[e[i].to])%mo+mo)%mo,dfs1(e[i].to,x); 29 } 30 void dfs2(int x,int fa) 31 { 32 k1[x]=(k1[x]+k1[fa])%mo,k2[x]=(k2[x]+k2[fa])%mo; 33 for (int i=head[x];i;i=e[i].from) if (e[i].to!=fa) dfs2(e[i].to,x); 34 } 35 int getlca(int u,int w) 36 { 37 if (dep[u]<dep[w]) swap(u,w); 38 int d=dep[u]-dep[w]; 39 if (d) for (int i=0;i<=log(n)/log(2)+1&&d;i++,d>>=1) if (d&1) u=f[u][i]; 40 if (u==w) return u; 41 for (int i=log(n)/log(2)+1;i>=0;i--) if (f[u][i]!=f[w][i]) u=f[u][i],w=f[w][i]; 42 return f[u][0]; 43 } 44 int main() 45 { 46 scanf("%d",&T); 47 while (T--) 48 { 49 scanf("%d",&n),memset(head,0,sizeof(head)),memset(k1,0,sizeof(k1)),memset(k2,0,sizeof(k2)),memset(f,0,sizeof(f)),memset(dep,0,sizeof(dep)); 50 for (int i=1,u,v;i<n;i++) scanf("%d%d",&u,&v),insert(u,v),insert(v,u); 51 dfs(1,-1),k1[1]=k2[1]=0,dfs1(1,-1),dfs2(1,-1); 52 for (int i=1;i<=log(n)/log(2)+1;i++) for (int j=1;j<=n;j++) f[j][i]=f[f[j][i-1]][i-1]; 53 scanf("%d",&Q); 54 while (Q--) 55 { 56 scanf("%d",&q),ans=0; 57 for (int i=1;i<=q+1;i++) scanf("%d",&a[i]); 58 for (int i=1;i<=q;i++) 59 lca=getlca(a[i],a[i+1]), 60 (ans+=(k1[a[i]]-k1[lca]+k2[a[i+1]]-k2[lca]+mo)%mo)%=mo; 61 printf("%.4lf\n",(double)ans); 62 } 63 printf("\n"); 64 } 65 }
转载于:https://www.cnblogs.com/Comfortable/p/10323712.html
[概率][lca][dfs][树形dp] Jzoj P4225 宝藏相关推荐
- [树形dp] Jzoj P5233 概率博弈
Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...
- 【牛客每日一题】4.15 Treepath 题解(树上dfs/树形DP)
题目链接:https://ac.nowcoder.com/acm/problem/14248 来源:牛客网 题目描述 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x ...
- [树形dp] Jzoj P1046 寻宝之旅
Description 探险队长凯因意外的弄到了一份黑暗森林的藏宝图,于是,探险队一行人便踏上了寻宝之旅,去寻找传说中的宝藏. 藏宝点分布在黑暗森林的各处,每个点有一个值,表示藏宝的价值.它们之间由一 ...
- [树形dp] Jzoj P3914 人品问题
Description 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.yzx不相信自己的人品为0.经过了许多研究后,yzx得出了一个更为科学的人品计 ...
- #树形dp#jzoj 1010 洛谷 3155 叶子的颜色
题目 对于每个叶结点u,定义c[u]为从u到根结点的简单路径上第一个有色结点的颜色.给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少. 分析 这道题可以用树形dp,f[x][0/1]f[x ...
- P4284-[SHOI2014]概率充电器【树形dp,换根法,数学期望】
正题 题目链接:https://www.luogu.com.cn/problem/P4284 题目大意 nnn个点的一棵树,每个点有pip_ipi概率通电,每个边有一定概率可以导电.求期望有电的节点 ...
- [LibreOJ 3124]【CTS2019】氪金手游【容斥原理】【概率】【树形DP】
Description Solution 首先它的限制关系是一个树形图 首先考虑如果它是一个外向树该怎么做. 这是很简单的,我们相当于每个子树的根都是子树中最早出现的点,概率是容易计算的. 设DP状态 ...
- GFOJ738:Cource--动态规划练习2 DFS+树形DP
XJY是一位勇敢的探险家,这一天他来到传说中的小谷围岛寻找宝藏.小谷围岛上有n个村庄和n-1条道路,且任意两个村庄可以相互到达.第i个村庄里有价值为Vi的大秘宝(取走之后就没有啦):对于第i条道路,X ...
- [树形dp] Jzoj P5814 树
Description 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中 ...
最新文章
- 独家 | 数据科学家应该避免的5种统计陷阱(附链接)
- java hashset 源码_Java集合源码分析-HashSet和LinkedHashSet
- 2017年智能家居行业发展脉络解析
- Django:Web框架,WSGI,WSGI实现浏览器与服务器通信,路由route,WSGI实现页面访问
- 360 x TiDB|性能提升 10 倍,360 如何轻松抗住双十一流量
- 查看本地计算机ip命令,查看你本机的IP信息的命令ipconfig详解【图】
- LaTeX IEEE 模板 图片引用编号为大写罗马数字问题
- 中国传媒大学GPA算法
- C#函数式编程风格-范型Filter,Map,Reduct函数的实现
- Java 读取src目录下的json文件
- post请求或get请求通过url传递参数
- IPSEC 的IKE协商过程,主模式和野蛮模式,AH和ESP
- 使用JAVA对象和JSON相互转换问题
- 千锋学习day09面向对象
- 展锐UDX710:MMC概述、SD Card驱动解析及调试
- This application has requested the Runtime to terminate it in an unusual way Please contact the....
- MP3磁盘错误!解决方法总结
- C语言从0到1算法小白训练营——day1
- 寄云科技获Pre-A轮千万元融资:开启云+大数据企业服务的征程
- 【SCADA】KingSCADA实现小车移动控制
热门文章
- 红帽子企业版linux 7,红帽企业 Red Hat Enterprise Linux 7.8 发布
- 计算机硬件知识大赛,计算机知识技能大赛.doc
- 在linux中docker安装mysql_Linux系统:用docker安装mysql。
- php写 被转移,php从windows往linux迁移注意事项
- Apriori算法+python实现
- hibernate运行很慢?查一张只有几条记录的表都要一俩分钟?[问题记录]
- UnityShader19.1:渲染纹理(下)之GrabPass
- 如何使用VS2012进行简单程序的DEBUG(入门级)
- 2017ICPC北京 J:Pangu and Stones(区间DP)
- bzoj 1660: [Usaco2006 Nov]Bad Hair Day 乱发节(单调栈)