降智好题。本蒟蒻VP时没想到怎么做被题面迷惑了,只会20分的“好”成绩。简直自闭了。

首先显然度为0的点是白给的,根据等比数列求和公式即可求得。然后考虑这个树如果是一颗外向树,就是每个点先父亲再自己。然后直接DP,令f[i][j]表示子树i内Σw=j的概率,转移时直接用背包转移一发即可。边是正向的直接转移,反向的加上去掉该限制的答案,并减去反向的答案。复杂度显然是O(n2)

#include<bits/stdc++.h>
using namespace std;
const int N=,mod=;
int n,cnt,ans,p[N][],f[N][N*],g[N*],sz[N],inv[N*],hd[N],v[N<<],nxt[N<<],w[N<<];
void add(int&x,int y){x=x+y>=mod?x+y-mod:x+y;}
int qpow(int a,int b)
{
int ret=;
while(b)
{
if(b&)ret=1ll*ret*a%mod;
a=1ll*a*a%mod,b>>=;
}
return ret;
}
void adde(int x,int y)
{
v[++cnt]=y,w[cnt]=,nxt[cnt]=hd[x],hd[x]=cnt;
v[++cnt]=x,w[cnt]=,nxt[cnt]=hd[y],hd[y]=cnt;
}
void dfs(int u,int fa)
{
f[u][]=;
for(int i=hd[u];i;i=nxt[i])
if(v[i]!=fa)
{
dfs(v[i],u);
for(int j=;j<=sz[u]+sz[v[i]];j++)g[j]=;
for(int j=;j<=sz[u];j++)
for(int k=;k<=sz[v[i]];k++)
{
int val=1ll*f[u][j]*f[v[i]][k]%mod;
if(w[i])add(g[j+k],val);else add(g[j+k],mod-val),add(g[j],val);
}
sz[u]+=sz[v[i]];
for(int j=;j<=sz[u];j++)f[u][j]=g[j];
}
memset(g,,sizeof g);
for(int i=;i<=sz[u];i++)
for(int j=;j<=;j++)
add(g[i+j],1ll*f[u][i]*p[u][j]%mod*j%mod*inv[i+j]%mod);
sz[u]+=;
for(int i=;i<=sz[u];i++)f[u][i]=g[i];
}
int main()
{
scanf("%d",&n);
for(int i=,x,y,z,sum;i<=n;i++)
{
scanf("%d%d%d",&x,&y,&z);
sum=qpow(x+y+z,mod-);
p[i][]=1ll*x*sum%mod,p[i][]=1ll*y*sum%mod,p[i][]=1ll*z*sum%mod;
}
inv[]=inv[]=;for(int i=;i<=n*;i++)inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
for(int i=,x,y;i<n;i++)scanf("%d%d",&x,&y),adde(x,y);
dfs(,);
for(int i=;i<=*n;i++)add(ans,f[][i]);
printf("%d",ans);
}

[CTS2019]氪金手游(容斥+树形背包DP)的更多相关文章

  1. Luogu5405 CTS2019氪金手游(容斥原理+树形dp)

    考虑外向树怎么做.显然设f[i][j]为i子树中出现权值和为j的合法方案的概率,转移做树形背包即可. 如果树上只有一条反向边,显然可以先不考虑该边计算概率,再减去将整棵树看做外向树的概率.于是考虑容斥 ...

  2. [CTS2019]氪金手游

    [CTS2019]氪金手游 各种情况加在一起 先考虑弱化版:外向树,wi确定 i合法的概率就是wi/sw sw表示子树的w的和,和子树外情况无关 这些概率乘起来就是最终合法的概率 如果都是外向树, f ...

  3. LOJ3124 CTS2019 氪金手游 概率、容斥、树形DP

    传送门 D2T3签到题可真是IQ Decrease,概率独立没想到然后就20pts滚粗了 注意题目是先对于所有点rand一个权值\(w\)然后再抽卡. 先考虑给出的关系是一棵外向树的情况.那么我们要求 ...

  4. [LOJ#3119][Luogu5405][CTS2019]氪金手游(DP+容斥)

    先考虑外向树的做法,显然一个点在其子树内第一个出现的概率等于它的权值除以它子树的权值和.于是f[i][j]表示i的子树的权值和为j时,i子树内所有数的相互顺序都满足条件的概率,转移直接做一个背包卷积即 ...

  5. 题解-CTS2019氪金手游

    Problem \(\mathtt {loj-3124}\) 题意概要:给定 \(n\) 个点,\(w_i\) 分别有 \(p_{i,1},p_{i,2},p_{i,3}\) 的概率取 \(1,2,3 ...

  6. p5405 [CTS2019]氪金手游

    题目大意 题意狗屁不通 看毛子语都比看这个题面强 分析 我们假设这棵树是一个内向树 那么我们可以轻易的得到dp[x][i]表示x点子树和为i的期望 转移只需枚举当前期望大小和子树期望大小即可 但是由于 ...

  7. 【题解】Luogu P5405 [CTS2019]氪金手游

    原题传送门 我们珂以先考虑一条链的情况,设\(sum\)为所有\(w_i\)的总和,\(Sw_i\)表示\(\sum_{j=i}^nw_i\) \[1 \rightarrow 2 \rightarro ...

  8. 「CTS2019」氪金手游

    「CTS2019」氪金手游 解题思路 考场上想出了外向树的做法,居然没意识到反向边可以容斥,其实外向树会做的话这个题差不多就做完了. 令 \(dp[u][i]\) 表示单独考虑 \(u\) 节点所在子 ...

  9. Loj #3124. 「CTS2019 | CTSC2019」氪金手游

    Loj #3124. 「CTS2019 | CTSC2019」氪金手游 题目描述 小刘同学是一个喜欢氪金手游的男孩子. 他最近迷上了一个新游戏,游戏的内容就是不断地抽卡.现在已知: - 卡池里总共有 ...

随机推荐

  1. hibernate 插入date值到postgresql,丢失时分秒

    用hibernate插入java.util.Date数据时发现 时分秒 会丢失.如 2014-05-30 15:59:16.921 在postgresql数据库中显示2014-05-30 00:00: ...

  2. python 变量搜寻顺序法则LEGB之E注意事项

    众所周知,在python中,变量不需要事先声明,赋值后,即可调用使用.而调用的法则遵从LEGB法则,其中L为local,E为enclosing,G为Global,B为built-in,即变量首先在局部 ...

  3. 用豆瓣加速安装pandas、numpy、matplotlib(画图)

    安装pandas.numpy会同时被安装 #pthony2.x,用豆瓣加速安装pandas pip install -i https://pypi.doubanio.com/simple/ panda ...

  4. 吴裕雄--天生自然Django框架开发笔记:Django 模板

    使用 django.http.HttpResponse() 来输出 "Hello World!".该方式将数据与视图混合在一起,不符合 Django 的 MVC 思想. Djang ...

  5. Aspectj切入点语法定义

    例如定义切入点表达式  execution (* com.sample.service.impl..*.*(..)) execution()是最常用的切点函数,其语法如下所示: 整个表达式可以分为五个 ...

  6. 【转帖】使用容器化和 Docker 实现 DevOps 的基础知识

    使用容器化和 Docker 实现 DevOps 的基础知识 https://www.kubernetes.org.cn/6730.html 2020-02-24 15:20 灵雀云 分类:容器 阅读( ...

  7. XCOM串口助手打印不出数据

    本次实验是在基于原子的战舰开发板上的做定时器捕获实验,程序源码下载到板子上运行正常.指示灯正常显示,打开XCOM识别不来串口,原因:硬件上没有插USB转串口线: 连接上USB转串口线,软件上以显示CH ...

  8. CSS 选择器权重计算规则(转)

    其实,CSS有自己的优先级计算公式,而不仅仅是行间>内部>外部样式:ID>class>元素. 一.样式类型 1.行间 <h1 style="font-size: ...

  9. navicat for mysql连接数据库报错1251

    使用Navicat for mysql 连接数据库,报如下错误 原因:数据库安装的是8.0版本,新的mysql采用了新的加密方式,导致连接失败 解决办法:数据库执行如下命令 改密码加密方式:用管理员身 ...

  10. PAT Advanced 1069 The Black Hole of Numbers (20) [数学问题-简单数学]

    题目 For any 4-digit integer except the ones with all the digits being the same, if we sort the digits ...