博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2152 聪聪可可
阅读量:6251 次
发布时间:2019-06-22

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

题目描述

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

他们的爸爸快被他们的争吵烦死了,所以他发明了一个新游戏:由爸爸在纸上画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。

题解

  然后从今天开始学习点分

  这应该算是个板子?

  先用点分计算出路径长度,把路径长度对$%3$,然后用$sum[1],sum[2],sum[0]$表示模数是$1,2,3$的情况的总数,那么就是$ans+=sum[1]*sum[2]*2+sum[0]*sum[0]$,最后答案就是$ans/(n*n)$

  

1 //minamoto 2 #include
3 #include
4 #define ll long long 5 #define inf 0x3f3f3f3f 6 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 7 char buf[1<<21],*p1=buf,*p2=buf; 8 template
inline bool cmax(T&a,const T&b){
return a
1<<20)Ot();if(x<0)sr[++C]=45,x=-x;23 while(z[++Z]=x%10+48,x/=10);24 while(sr[++C]=z[Z],--Z);25 }26 const int N=20005,mod=3;27 int head[N],Next[N<<1],edge[N<<1],ver[N<<1];ll ans=0;28 int sz[N],son[N],sum[4],vis[N];29 int size,mx,rt,n,tot;30 inline void add(int u,int v,int e){31 ver[++tot]=v,Next[tot]=head[u],head[u]=tot,edge[tot]=e;32 ver[++tot]=u,Next[tot]=head[v],head[v]=tot,edge[tot]=e;33 }34 void getrt(int u,int fa){35 sz[u]=1,son[u]=0;36 for(int i=head[u];i;i=Next[i]){37 int v=ver[i];38 if(vis[v]||v==fa) continue;39 getrt(v,u);40 sz[u]+=sz[v];41 cmax(son[u],sz[v]);42 }43 cmax(son[u],size-sz[u]);44 if(son[u]

 

转载于:https://www.cnblogs.com/bztMinamoto/p/9476329.html

你可能感兴趣的文章
干货型up主
查看>>
文件与二进制流互转
查看>>
获取页面中所有dropdownlist类型控件
查看>>
【转自ITPUB】SYNONYM关于underlying table权限的小小发现
查看>>
halcon图像合并(贴图到指定位置)
查看>>
stark组件(2):提取公共视图函数、URL分发和设置别名
查看>>
android——使用Interceptor设置缓存来给服务器减负
查看>>
样式独立性的解决方案
查看>>
刷leetcode是什么样的体验?【转】
查看>>
linux内核数据结构之kfifo【转】
查看>>
c++学习笔记(新手学习笔记,如有错误请与作者联系)
查看>>
java集合复制和反转
查看>>
记录openlaw的反爬
查看>>
Matlab数据转化至python端,并写入数据库
查看>>
json字符串与json对象的相互转换
查看>>
APM最佳实践:Web 2.0和AJAX四大优化战略
查看>>
Java优先队列一些问题
查看>>
percona-toolkit 工具集安装
查看>>
mooc-IDEA 项目/文件之间跳转--002
查看>>
iOS的项目目录结构
查看>>