P2634 [国家集训队]聪聪可可

淀粉质点分治板子

边权直接 mod 3

直接点分治统计出所有的符合条件的点对再和总方案数约分

至于约分.....gcd搞搞就好辣

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
inline int Max(int a,int b){return a>b?a:b;}
void read(int &x){
static char c=getchar();x=;
while(c<''||c>'') c=getchar();
while(''<=c&&c<='') x=x*+(c^),c=getchar();
}
#define N 20005
inline int M(int x){return x<?x:x-;}
int n,rt,sum,ans,tot,mxd[N],siz[N],dis[N],ra[N],rb[];bool vis[N];
int cnt,hd[N],nxt[N<<],ed[N],poi[N<<],val[N<<];
void adde(int x,int y,int v){
nxt[ed[x]]=++cnt; hd[x]=hd[x]?hd[x]:cnt;
ed[x]=cnt; poi[cnt]=y; val[cnt]=v;
}
void getrt(int x,int fa){
siz[x]=; mxd[x]=;
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
if(to==fa||vis[to]) continue;
getrt(to,x);
siz[x]+=siz[to];
mxd[x]=Max(mxd[x],siz[to]);
}mxd[x]=Max(mxd[x],sum-siz[x]);
if(mxd[x]<mxd[rt]) rt=x;
}
void getdis(int x,int fa){
ra[++ra[]]=dis[x];
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
if(to==fa||vis[to]) continue;
dis[to]=M(dis[x]+val[i]);
getdis(to,x);
}
}
void calc(int x){
rb[]=;
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
if(vis[to]) continue;
ra[]=; dis[to]=val[i];
getdis(to,x);
for(int i=ra[];i;--i)
ans+=rb[ra[i]?-ra[i]:];
for(int i=ra[];i;--i) ++rb[ra[i]];
}rb[]=rb[]=rb[]=;
}
void solve(int x){
vis[x]=; calc(x);
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
if(vis[to]) continue;
sum=siz[to]; rt=;
getrt(to,x); solve(rt);
}
}
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int main(){
read(n); register int i; int q1,q2,q3;
for(i=;i<n;++i){
read(q1),read(q2),read(q3); q3%=;
adde(q1,q2,q3); adde(q2,q1,q3);
}mxd[rt=]=n+; sum=n; getrt(,); solve(rt);
ans=ans*+n; tot=n*n;
int g=gcd(ans,tot); ans/=g; tot/=g;
printf("%d/%d",ans,tot);
return ;
}

bzoj2152 / P2634 [国家集训队]聪聪可可(点分治)的更多相关文章

  1. 洛谷 P2634 [国家集训队]聪聪可可 解题报告

    P2634 [国家集训队]聪聪可可 题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)--遇到这种问题,一 ...

  2. 洛谷 P2634 [国家集训队]聪聪可可-树分治(点分治,容斥版) +读入挂+手动O2优化吸点氧才过。。。-树上路径为3的倍数的路径数量

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

  3. P2634 [国家集训队]聪聪可可(题解)(点分治)

    P2634 [国家集训队]聪聪可可(题解)(点分治) 洛谷题目 #include<iostream> #include<cstdlib> #include<cstdio& ...

  4. 模板—点分治A(容斥)(洛谷P2634 [国家集训队]聪聪可可)

    洛谷P2634 [国家集训队]聪聪可可 静态点分治 一开始还以为要把分治树建出来……• 树的结构不发生改变,点权边权都不变,那么我们利用刚刚的思路,有两种具体的分治方法.• A:朴素做法,直接找重心, ...

  5. 洛谷P2634 [国家集训队]聪聪可可 (点分治)

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

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

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

  7. 洛谷-P2634 [国家集训队]聪聪可可 点分治

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

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

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

  9. P2634 [国家集训队]聪聪可可

    淀粉质 第二道点分治的题 关于点分治的一点理解: 所谓点分治,其实就是把要求的问题(一般与路径有关)划分成两种情况 1.路径经过rt(根节点) 2.路径在根节点的子树内 我们只需要处理情况1,因为情况 ...

随机推荐

  1. 新发现:排序算法时间复杂度只有O(3n),命名为"wgw"排序法

    思路:首先在待排序数组i[]中找出最大的值,以(最大值+1)的大小创建一个空数组kk[],然后遍历待排序数组i[]中的值n,其值n对应数组kk[]中的第n个元素加1.最后再把数组kk[]排好序的值赋回 ...

  2. "pip3 install requests"

    后续设置参考 “selenium python3” https://www.cnblogs.com/jpr-ok/p/10108231.html

  3. MJExtension代码解释

    Runtime 是什么? objective-C会把函数调用的转换为消息发送,objc_MsgSend(receiver, msg), 注意,recevier指的是消息的接受者.那么self, sup ...

  4. Hadoop2.6的DataNode启动不了

    2016-05-04 18:14:51,990 INFO org.apache.hadoop.ipc.Server: IPC Server Responder: starting 2016-05-04 ...

  5. SVM、LR、决策树的对比

    一.LR LR,DT,SVM都有自身的特性,首先来看一下LR,工业界最受青睐的机器学习算法,训练.预测的高效性能以及算法容易实现使其能轻松适应工业界的需求.LR还有个非常方便实用的额外功能就是它并不会 ...

  6. Pycharm进行版本管理

    即然pycharm为python提供了这么强大的IDE,那么,我们代码管理,没理由不用版本管理工具Git,SVN等等 在pychram中使用GitHub进行代码管理;需要准备: 1)GitHub帐号: ...

  7. SQL Server之获取下周一的日期

    今天项目中需要得到下周一的日期,故想到了一种解决办法,用slq语句解决了.当然实现方法肯定不只有这一种. -(select DATEPART(weekday,getdate())) /*下周一差几天 ...

  8. Solaris 10主机名和IP地址步骤

    1.修改主机名: hostname newname vi /etc/hosts vi /etc/hostname.e1000g0 vi /etc/nodename init 6 #重启 --confi ...

  9. HDU 2276 Kiki & Little Kiki 2(矩阵位运算)

    Kiki & Little Kiki 2 转载自:点这里 [题目链接]Kiki & Little Kiki 2 [题目类型]矩阵位运算 &题意: 一排灯,开关状态已知,每过一秒 ...

  10. JavaScript数组去重方法总结

    一.双重遍历去重 function onlyFigure(arr) { let newarr = []; const length = arr.length for (let i = 0; i < ...