博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[树形dp] 洛谷 P2634 聪聪可可
阅读量:4685 次
发布时间:2019-06-09

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

题目描述

聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经玩儿腻了这种低智商的游戏。

他们的爸爸快被他们的争吵烦死了,所以他发明了一个新游戏:由爸爸在纸上画n个“点”,并用n-1条“边”把这n个“点”恰好连通(其实这就是一棵树)。并且每条“边”上都有一个数。接下来由聪聪和可可分别随即选一个点(当然他们选点时是看不到这棵树的),如果两个点之间所有边上数的和加起来恰好是3的倍数,则判聪聪赢,否则可可赢。

聪聪非常爱思考问题,在每次游戏后都会仔细研究这棵树,希望知道对于这张图自己的获胜概率是多少。现请你帮忙求出这个值以验证聪聪的答案是否正确。

输入输出格式

输入格式:

 

输入的第1行包含1个正整数n。后面n-1行,每行3个整数x、y、w,表示x号点和y号点之间有一条边,上面的数是w。

 

输出格式:

 

以即约分数形式输出这个概率(即“a/b”的形式,其中a和b必须互质。如果概率为1,输出“1/1”)。

 

输入输出样例

输入样例#1:
51 2 11 3 21 4 12 5 3
输出样例#1:
13/25

说明

【样例说明】

13组点对分别是(1,1) (2,2) (2,3) (2,5) (3,2) (3,3) (3,4) (3,5) (4,3) (4,4) (5,2) (5,3) (5,5)。

【数据规模】

对于100%的数据,n<=20000。

题解

  • 可以考虑dp,设f[x][0/1/2]为在x的子树或距离x的距离在模3的意义下为0、1、2的个数有多少个
  • 转移的话,可以直接加边权%3后转移
  • 统计答案的话,要前面的子树的点到点x的距离与当前子树中的点到点x的距离在模3意义下为0

代码

1 #include 
2 #include
3 #define N 20010 4 using namespace std; 5 struct edge {
int to,from,v;}e[N*2]; 6 int n,cnt,ans,mx,f[N][3],head[N]; 7 void insert(int x,int y,int z) { e[++cnt].to=y,e[cnt].v=z,e[cnt].from=head[x],head[x]=cnt; } 8 int gcd(int a,int b){ return a==0?b:gcd(b%a,a); } 9 void dfs(int x,int fa)10 {11 f[x][0]=1;12 for (int i=head[x];i;i=e[i].from)13 if (e[i].to!=fa)14 {15 dfs(e[i].to,x);16 for (int j=0;j<3;j++) ans+=f[e[i].to][j]*f[x][((-j-e[i].v)%3+3)%3]*2;17 for (int j=0;j<3;j++) f[x][(j+e[i].v)%3]+=f[e[i].to][j];18 }19 }20 int main()21 {22 scanf("%d",&n);23 for (int i=1,x,y,z;i

 

转载于:https://www.cnblogs.com/Comfortable/p/9879496.html

你可能感兴趣的文章
CentOS7.3编译安装Nginx设置开机启动
查看>>
个数是如何用大数据做行为预测的?
查看>>
孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6
查看>>
Linux基础命令---chown
查看>>
一种解决h5页面背景音乐不能自动播放的方案
查看>>
R语言统计字符串的字符数ncahr函数
查看>>
golang--Redis最佳的Go语言驱动
查看>>
Python socket编程
查看>>
js常用方法集锦
查看>>
redis 中文文档
查看>>
sqli-lab(13)
查看>>
Flash Builder升级debug player方式
查看>>
Maven 与 IntelliJ IDEA 的完美结合<转>
查看>>
python 计算器
查看>>
JZOJ 2019.1.27——2019.1.30比赛小结
查看>>
端午节放假
查看>>
配置vuejs加载模拟数据
查看>>
ERROR: Can't get master address from ZooKeeper; znode data == null
查看>>
胜者先胜而后求战,败者先战而后求胜
查看>>
Spring MVC实现文件上传和下载
查看>>