题意传送门

思路:基本的点分治思路,num数组记录从u点开始路径长度分别为1或者2或者3的路径长度(取模3意义下),然后做一个简单的容斥就好了。

  为了避免计数的麻烦,<u,u>这样的点单独计算,也就是最后的答案加上n就可以了。

  bzoj不支持c14,我的代码是在洛谷交的。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define dep(i,b,a) for(int i=b;i>=a;--i)
#define clr(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define pii pair<int,int >
using namespace std;
typedef long long ll;
ll rd()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int maxn=;
const int inf=0x3f3f3f3f;
int T,n,m;
struct edge{
int to,w;
};
vector<edge >ve[maxn];
ll ans=;
int rt,mx,dis[maxn];
ll num[];
int siz[maxn],size;
bool vis[maxn];
int u,v,w;
void getrt(int u,int p){
siz[u]=;
int tmp=;
for(auto &st:ve[u]){
int v=st.to;
if(vis[v]||v==p)continue;
getrt(v,u);
siz[u]+=siz[v];
tmp=max(tmp,siz[v]);
}
tmp=max(size-siz[u],tmp);
if(tmp<mx){
mx=tmp;
rt=u;
}
}
void getdis(int u,int p){
dis[u]%=;
num[dis[u]]++;
for(auto &st:ve[u]){
int v=st.to,w=st.w;
if(v==p||vis[v])continue;
dis[v]=(dis[u]+w)%;
getdis(v,u);
}
}
ll cal(int u,int val){
dis[u]=val;
clr(num,);
getdis(u,);
ll sum=*num[]*num[]+*(num[]-)+(num[]-)*(num[]--);
return sum;
}
void dfs(int u){
vis[u]=;
ans+=cal(u,);
for(auto &st:ve[u]){
int v=st.to,w=st.w;
if(vis[v])continue;
ans-=cal(v,w);
size=siz[v];
mx=inf;
getrt(v,);
dfs(rt);
}
}
int main(){
cin>>n;
rep(i,,n-){
u=rd(),v=rd(),w=rd();
w=w%;
ve[u].pb({v,w});
ve[v].pb({u,w});
}
size=n;
mx=inf;
getrt(,);
dfs();
ans+=n;
ll an2=1ll*n*n;
ll gc=__gcd(an2,ans);
printf("%lld/%lld\n",ans/gc,an2/gc);
}

BZOJ2152 聪明可可 点分治的更多相关文章

  1. BZOJ2152 [国家集训队] 聪聪可可 [点分治]

    题目传送门 聪聪可可 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 5237  Solved: 2750[Submit][Status][Discuss ...

  2. [bzoj2152][聪聪和可可] (点分治+概率)

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

  3. BZOJ2152[国家集训队]聪聪可可——点分治

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

  4. [BZOJ2152]聪聪可可 点分治/树形dp

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

  5. 【bzoj2152】聪聪可可 点分治

    [bzoj2152]聪聪可可 2014年9月7日3,5472 Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是 ...

  6. bzoj2152: 聪聪可可 点分治

    链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2152 luogu爆搜都能过,总时间超过100ms就是写错了 思路 直接mod上面跑点分治就行 ...

  7. bzoj2152: 聪聪可可 树分治

    sb树分治 /************************************************************** Problem: 2152 User: walfy Lang ...

  8. [bzoj2152]聪聪可可——点分治

    Brief Descirption 给定一棵带权树,您需要统计路径长度为3的倍数的路径长度 Algorithm Analyse 点分治. 考察经过重心的路径.统计出所有deep,统计即可. Code ...

  9. BZOJ 2152: 聪聪可可 树分治

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

随机推荐

  1. Python面试题之阅读下面的代码,写出A0,A1至An的最终值

    A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5))) A1 = range(10) A2 = [i for i in A1 if i in A0] A3 ...

  2. Centos下的 docker安装

    安装一些必要的系统工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2 添加软件源信息:sudo yum-config ...

  3. SYSTEM_HANDLE_TABLE_ENTRY_INFO

    typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO { USHORT UniqueProcessId; USHORT CreatorBackTraceInde ...

  4. 【HDOJ】P1007 Quoit Design (最近点对)

    题目意思很简单,意思就是求一个图上最近点对. 具体思想就是二分法,这里就不做介绍,相信大家都会明白的,在这里我说明一下如何进行拼合. 具体证明一下为什么只需要检查6个点 首先,假设当前左侧和右侧的最小 ...

  5. 完美编译街机模拟器MAME(Android版)基于MAME4all

    重新编译MAME4droid源码 github上开源项目MAME4all可将MAME模拟器运行在iOS和Android上,还有一个比较有名的叫MAME4droid(MAME for android), ...

  6. linux redis安装及JAVA使用jedis

    一.redis安装 1.安装redis 将redis安装包放到指定目录下.并用tar -zxvf redis.*****.tar.gz解压2.想把redis安装到哪里,就在哪里创建redis文件夹. ...

  7. BeanUtils.copyProperties用法

    spring的BeanUtils.copyProperties用法 原创 2010年06月03日 13:43:00 标签: spring / struts / 数据库 / 工具 / action 一. ...

  8. web storem破解

    话不多说 直接跳地址 http://idea.lanyus.com/ 再加个附带汉化包,使用方法已经放在压缩包里面 网盘链接: https://pan.baidu.com/s/1aEA6SSbDuRg ...

  9. python编程学习day04

    1.函数名是变量名 “=”是内存指向,等号赋值操作,内存指向操作 变量——可赋值,可作为列表元素 函数名可以作为返回值返回 函数名可作为参数传递 2.闭包 内层函数使用了外层函数的变量 作用:可以让一 ...

  10. 【JZOJ6403】a

    description analysis 考虑\((0,0,0)\)走到某个点\((i,j,k)\)的贡献,相当于插板问题 \(i+j\)个空插\(k\)个板可以有空,\(i\)个空插\(j\)个板可 ...