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 宝藏相关推荐

  1. [树形dp] Jzoj P5233 概率博弈

    Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...

  2. 【牛客每日一题】4.15 Treepath 题解(树上dfs/树形DP)

    题目链接:https://ac.nowcoder.com/acm/problem/14248 来源:牛客网 题目描述 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x ...

  3. [树形dp] Jzoj P1046 寻宝之旅

    Description 探险队长凯因意外的弄到了一份黑暗森林的藏宝图,于是,探险队一行人便踏上了寻宝之旅,去寻找传说中的宝藏. 藏宝点分布在黑暗森林的各处,每个点有一个值,表示藏宝的价值.它们之间由一 ...

  4. [树形dp] Jzoj P3914 人品问题

    Description 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.yzx不相信自己的人品为0.经过了许多研究后,yzx得出了一个更为科学的人品计 ...

  5. #树形dp#jzoj 1010 洛谷 3155 叶子的颜色

    题目 对于每个叶结点u,定义c[u]为从u到根结点的简单路径上第一个有色结点的颜色.给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少. 分析 这道题可以用树形dp,f[x][0/1]f[x ...

  6. P4284-[SHOI2014]概率充电器【树形dp,换根法,数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/P4284 题目大意 nnn个点的一棵树,每个点有pip_ipi​概率通电,每个边有一定概率可以导电.求期望有电的节点 ...

  7. [LibreOJ 3124]【CTS2019】氪金手游【容斥原理】【概率】【树形DP】

    Description Solution 首先它的限制关系是一个树形图 首先考虑如果它是一个外向树该怎么做. 这是很简单的,我们相当于每个子树的根都是子树中最早出现的点,概率是容易计算的. 设DP状态 ...

  8. GFOJ738:Cource--动态规划练习2 DFS+树形DP

    XJY是一位勇敢的探险家,这一天他来到传说中的小谷围岛寻找宝藏.小谷围岛上有n个村庄和n-1条道路,且任意两个村庄可以相互到达.第i个村庄里有价值为Vi的大秘宝(取走之后就没有啦):对于第i条道路,X ...

  9. [树形dp] Jzoj P5814 树

    Description 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中 ...

最新文章

  1. 独家 | 数据科学家应该避免的5种统计陷阱(附链接)
  2. java hashset 源码_Java集合源码分析-HashSet和LinkedHashSet
  3. 2017年智能家居行业发展脉络解析
  4. Django:Web框架,WSGI,WSGI实现浏览器与服务器通信,路由route,WSGI实现页面访问
  5. 360 x TiDB|性能提升 10 倍,360 如何轻松抗住双十一流量
  6. 查看本地计算机ip命令,查看你本机的IP信息的命令ipconfig详解【图】
  7. LaTeX IEEE 模板 图片引用编号为大写罗马数字问题
  8. 中国传媒大学GPA算法
  9. C#函数式编程风格-范型Filter,Map,Reduct函数的实现
  10. Java 读取src目录下的json文件
  11. post请求或get请求通过url传递参数
  12. IPSEC 的IKE协商过程,主模式和野蛮模式,AH和ESP
  13. 使用JAVA对象和JSON相互转换问题
  14. 千锋学习day09面向对象
  15. 展锐UDX710:MMC概述、SD Card驱动解析及调试
  16. This application has requested the Runtime to terminate it in an unusual way Please contact the....
  17. MP3磁盘错误!解决方法总结
  18. C语言从0到1算法小白训练营——day1
  19. 寄云科技获Pre-A轮千万元融资:开启云+大数据企业服务的征程
  20. 【SCADA】KingSCADA实现小车移动控制

热门文章

  1. 红帽子企业版linux 7,红帽企业 Red Hat Enterprise Linux 7.8 发布
  2. 计算机硬件知识大赛,计算机知识技能大赛.doc
  3. 在linux中docker安装mysql_Linux系统:用docker安装mysql。
  4. php写 被转移,php从windows往linux迁移注意事项
  5. Apriori算法+python实现
  6. hibernate运行很慢?查一张只有几条记录的表都要一俩分钟?[问题记录]
  7. UnityShader19.1:渲染纹理(下)之GrabPass
  8. 如何使用VS2012进行简单程序的DEBUG(入门级)
  9. 2017ICPC北京 J:Pangu and Stones(区间DP)
  10. bzoj 1660: [Usaco2006 Nov]Bad Hair Day 乱发节(单调栈)