题目链接

这道题首先是要看看该如何化简,先把三元组化成二元组。

之后统计经过某条边的 次数$*$权值  的和。

最后除以总基数 $tot$

其中,每条边被计算的次数为 子树的点数$*$非子树的点数 (自己想想)

然后就没了。

ps:一定要注意$n$个节点的树有$n-1$条边,本宝宝调了一下午+一晚上。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct data{int v;int value;int nxt;}edge[];
int alist[];int cnt;
void add(int u,int v,int value)
{
edge[++cnt].nxt=alist[u];
edge[cnt].v=v;
edge[cnt].value=value;
alist[u]=cnt;
} int len[];
int num[];
int n,m;
int in[];int out[]; double ans;double tot;
void dfs(int x,int f)
{
num[x]=;
for(int i=alist[x];i!=-;i=edge[i].nxt)
{
int v=edge[i].v;
if(v==f) continue;
dfs(v,x);
num[x]+=num[v];
ans+=(double)edge[i].value*num[v]*(n-num[v])/tot;
}
} int u,v,value;
int main()
{
scanf("%d",&n);
memset(alist,-,sizeof(alist));
for(int i=;i<n;i++)
{
scanf("%d%d%d",&u,&v,&value);
in[i]=u;
out[i]=v;
len[i]=value;
add(u,v,value);
add(v,u,value);
}
tot=(double)n*(n-)/6.0;
dfs(,-);
scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&u,&v);
value=min(num[in[u]],num[out[u]]);
ans-=(double)(len[u]-v)*value*(n-value)/tot;
len[u]=v;
printf("%.8lf\n",ans);
}
return ;
}

题解 CF500D 【New Year Santa Network】的更多相关文章

  1. cf500D New Year Santa Network

    D. New Year Santa Network time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  2. Good Bye 2014 D. New Year Santa Network 图论+期望

    D. New Year Santa Network   New Year is coming in Tree World! In this world, as the name implies, th ...

  3. Codeforces 500D. New Year Santa Network

    题目大意 给你一颗有\(n\)个点的树\(T\),边上有边权. 规定,\(d(i,j)\)表示点i到点j路径上的边权之和. 给你\(q\)次询问,每次询问格式为\(i, j\),表示将按输入顺序排序的 ...

  4. D. New Year Santa Network 解析(思維、DFS、組合、樹狀DP)

    Codeforce 500 D. New Year Santa Network 解析(思維.DFS.組合.樹狀DP) 今天我們來看看CF500D 題目連結 題目 給你一棵有邊權的樹,求現在隨機取\(3 ...

  5. Codeforces 500D New Year Santa Network(树 + 计数)

    D. New Year Santa Network time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  6. 【CF500D】New Year Santa Network(树上统计)

    ..]of longint; z:..]of extended; n,i,m,tot,x1:longint; ans,fenmu,y1:extended; procedure add(a,b:long ...

  7. CF 500D New Year Santa Network tree 期望 好题

    New Year is coming in Tree World! In this world, as the name implies, there are n cities connected b ...

  8. 【codeforces 500D】New Year Santa Network

    [题目链接]:http://codeforces.com/problemset/problem/500/D [题意] 有n个节点构成一棵树; 让你随机地选取3个不同的点a,b,c; 然后计算dis(a ...

  9. cf 500 D. New Year Santa Network

    直接按边分,2个点在边的一边,1个在另一边,组合出来就是这个边对答案的贡献,权值换了就再重新算个数而已. #include <bits/stdc++.h> #define LL long ...

随机推荐

  1. Kali下Ahmyth的使用

    项目地址:https://github.com/AhMyth/AhMyth-Android-RAT 下载后打开 安装nodejs,nodejs在官网下载,下载完后解压,切到bin目录下 设置全局 ro ...

  2. js中的Math

    js中的Math Math.round 取最接近的整数 Math.round(-2.7) // -3 Math.ceil 向上取整 Math.ceil(1.1) // 2 Math.floor 向下取 ...

  3. scikit-learn和tensorflow的区别

    1.功能不同 Scikit-learn(sklearn)的定位是通用机器学习库,而TensorFlow(tf)的定位主要是深度学习库.一个显而易见的不同:tf并未提供sklearn那种强大的特征工程, ...

  4. angularJS笔记之Promise

    Promise是一种模式,以同步操作的流程形式来操作异步事件,避免了层层嵌套,可以链式操作异步事件. 我们知道,在编写javascript异步代码时,callback是最最简单的机制,可是用这种机制的 ...

  5. 关于微信公众号内嵌网页的几个meta标签

    最近在做微信公众平台内嵌app,其实也就是web app="=,不过就是基于微信内置浏览器(safari加了一个WeixinJS对象),稍微记一下几个html的meta标签(web app通 ...

  6. ubuntu下源码方式安装php5.4

    一.安装前准备 下载php-5.4.13.tar.gz最新版本放到/user/src目录下 二.安装 因为在安装php过程中,会依赖安装很多库,为了不让你反复安装,建议按步骤操作 安装autoconf ...

  7. 535. Encode and Decode TinyURL 长短URL

    [抄题]: TinyURL is a URL shortening service where you enter a URL such as https://leetcode.com/problem ...

  8. Mips下交叉编译dropbear

    1. 编译zlib-1.2.8 在编译dropbear的时候,会遇到“configure: error: *** zlib missing - install first or check confi ...

  9. Java生产者消费者问题

    1. package interview.thread; import java.util.LinkedList; import java.util.Queue; import org.apache. ...

  10. Log4J 配置 详解

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...