BZOJ 2152  Luogu 2634——聪聪可可

题意

求两点之间路径和为3的倍数占的概率(最简)

解题思路与BZOJ1468差不多,

不过本题在计算经过某个点的次数时用了个ans数组,

对路径长度模3,得到的是0或1或2,但仍需要去重。

返回的值应是ans[0]*ans[0]+ans[1]*ans[2]*2。

为什么呢?

题目要求是3的倍数,所以0+0还是三的倍数,1+2也是三的

倍数,但是这里必须乘2,可以(2,3),当然也可以(3,2)。

#include<cstdio>
#include<algorithm>
#include<cstring>
#define maxn 20010
using namespace std;
struct LINK{int to,next,v;
}e[maxn*2];
int deep[maxn],Distance[maxn],Maxsize[maxn],size[maxn],temp,tot,head[maxn],vis[maxn],root,k,ans[3],an;
inline char Getchar(){static char BUF[16384],*S=BUF,*T=BUF;return(S==T)&&(T=(S=BUF)+fread(BUF,1,16384,stdin),S==T)?EOF:*S++;
}
inline int read(){int w=0;char c=Getchar();while(c<'0'||c>'9') c=Getchar();while(c>='0'&&c<='9'){w=w*10+c-48;c=Getchar();}return w;
}
//inline int gcd(int x,int y){
//    int t;
//  while(y){
//      t=x%y;
//      x=y;y=t;
//  }
//  return x;
//}
inline int gcd(int a,int b)
{  return b==0?a:gcd(b,a%b);
}
inline void add(int x,int y,int w){tot++;e[tot].to=y;e[tot].next=head[x];e[tot].v=w;head[x]=tot;
}
inline void getroot(int x,int fa){size[x]=1;Maxsize[x]=0;for(int i=head[x];i;i=e[i].next){if(!vis[e[i].to]&&e[i].to!=fa){getroot(e[i].to,x);size[x]+=size[e[i].to];Maxsize[x]=max(Maxsize[x],size[e[i].to]);}}Maxsize[x]=max(Maxsize[x],temp-size[x]);if(Maxsize[x]<Maxsize[root]) root=x;
}
inline void getdeep(int x,int fa){ans[Distance[x]]++;for(int i=head[x];i;i=e[i].next){if(!vis[e[i].to]&&e[i].to!=fa){Distance[e[i].to]=(Distance[x]+e[i].v)%3;getdeep(e[i].to,x);}}
}
inline int answer(int x,int w){memset(ans,0,sizeof(ans));Distance[x]=w;getdeep(x,0);return ans[0]*ans[0]+ans[1]*ans[2]*2;
}
inline void solve(int x){an+=answer(x,0);vis[x]=1;for(int i=head[x];i;i=e[i].next){if(!vis[e[i].to]){an-=answer(e[i].to,e[i].v);temp=size[e[i].to];root=0;getroot(e[i].to,0);solve(root);}}
}
int main(){int n,i,x,y,v;n=read();for(i=1;i<n;i++){x=read();y=read();v=read();add(x,y,v%3);add(y,x,v%3);}Maxsize[0]=n+1;temp=n;getroot(1,0);solve(root);int l=gcd(n*n,an);printf("%d/%d",an/l,n*n/l);return 0;
}

聪聪可可

转载于:https://www.cnblogs.com/Fish-/p/8277010.html

BZOJ 2152 Luogu 2634——聪聪可可相关推荐

  1. BZOJ 2152 「国家集训队」聪聪可可(点分治)【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2152 是 hydro 的 BZOJ ...

  2. BZOJ 2152:聪聪可可

    BZOJ 2152:聪聪可可 题目 Time Limit: 3 Sec Memory Limit: 259 MB Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩 ...

  3. Bzoj 2152: 聪聪可可(点分治)

    2152: 聪聪可可 Time Limit: 3 Sec Memory Limit: 259 MB Submit: 2683 Solved: 1420 [Submit][Status][Discuss ...

  4. bzoj 2152: 聪聪可可(树的点分治)

    2152: 聪聪可可 Time Limit: 3 Sec  Memory Limit: 259 MB Submit: 3741  Solved: 1925 [Submit][Status][Discu ...

  5. [BZOJ 2152]聪聪可可(点分治)

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

  6. BZOJ 2152: 聪聪可可|点分治

    传送门 Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)--遇到这种问题,一般情况下石头剪 ...

  7. luogu P2634 [国家集训队]聪聪可可 点分治

    luogu P2634 [国家集训队]聪聪可可 点分治 没啥难度,只需将路径取模,开桶,统计 d[0],d[1],d[2] 的值即可. ans = d[1]*d[2]*d[2]+d[0]*d[0] C ...

  8. 【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)

    1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1640  Solved: 962 Description ...

  9. 2152: 聪聪可可

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

最新文章

  1. PyTorch 笔记(11)— Tensor内部存储结构(头信息区 Tensor,存储区 Storage)
  2. id: cannot find name for user ID xxx处理办法
  3. ORA-12518 TNS:监听程序无法分发客户机连接 解决办法
  4. win7 java闪退_win7 sdk manager 闪退
  5. 阿里算法工程师公开机器学习路线,你的路走对了吗?
  6. LinuX 硬盘分区细节详谈 【 整理至 LinuxSir BY FreeXploiT 】
  7. 蒙特卡罗方法 python 实现2
  8. 软件测试:APP测试点
  9. android 基站信息说明,安卓android手机查看基站信息
  10. 基于LM2596开关稳压电源控制设计(毕业设计整套资料)
  11. 设置共享后其他计算机无法访问,Win7局域网共享设置疑难大全(无法访问,没有访问权限,看不到共享电脑)...
  12. 【转】Linux下进程隐藏的常见手法及侦测手段
  13. win10开始菜单卡住没反应,其他都没问题 看视频也没问题。
  14. Groovy脚本基础全攻略
  15. android 自定义图片裁剪,Android图片裁剪工具封装
  16. 用微信开发者工具--打开微信小程序weui组件示例
  17. catalan 数。。
  18. 58同城|TEG技术工程平台群-闪电面试专场内推(12月7日)
  19. 数学基础:角度,弧度,三角函数
  20. Keras深度学习实战(26)——文档向量详解

热门文章

  1. 【数据库系统设计】关系数据库简介(关系模型、关系模式、关系完整性、关系代数)
  2. 【jQuery笔记Part1】01-jQuery简介集成
  3. Windows域控设置 AD域策略屏蔽端口 禁用端口【全域策略生效】
  4. csv导入sqlite(python)
  5. 那些拆中台的CTO,70%被裁了
  6. 财务报表开发实例分析:几个通用维度介绍与关键点
  7. 帆软报表重要Activator之DesignerInitActivator之一
  8. 一个好用的变换类TransformManager
  9. 关于生活的计算机试题,国家电网考试计算机类试题三
  10. html绘制城堡,HTML5动画 - 山谷城堡