题解 CF500D 【New Year Santa Network】
这道题首先是要看看该如何化简,先把三元组化成二元组。
之后统计经过某条边的 次数$*$权值 的和。
最后除以总基数 $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】的更多相关文章
- cf500D New Year Santa Network
D. New Year Santa Network time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- 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 ...
- Codeforces 500D. New Year Santa Network
题目大意 给你一颗有\(n\)个点的树\(T\),边上有边权. 规定,\(d(i,j)\)表示点i到点j路径上的边权之和. 给你\(q\)次询问,每次询问格式为\(i, j\),表示将按输入顺序排序的 ...
- D. New Year Santa Network 解析(思維、DFS、組合、樹狀DP)
Codeforce 500 D. New Year Santa Network 解析(思維.DFS.組合.樹狀DP) 今天我們來看看CF500D 題目連結 題目 給你一棵有邊權的樹,求現在隨機取\(3 ...
- 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 ...
- 【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 ...
- 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 ...
- 【codeforces 500D】New Year Santa Network
[题目链接]:http://codeforces.com/problemset/problem/500/D [题意] 有n个节点构成一棵树; 让你随机地选取3个不同的点a,b,c; 然后计算dis(a ...
- cf 500 D. New Year Santa Network
直接按边分,2个点在边的一边,1个在另一边,组合出来就是这个边对答案的贡献,权值换了就再重新算个数而已. #include <bits/stdc++.h> #define LL long ...
随机推荐
- flask系列一之环境搭建包安装
一,python的安装 (1)python的安装 (2)虚拟环境的配置 参考:http://www.cnblogs.com/bfwbfw/p/7995245.html 1,虚拟环境的建立 (1)使用p ...
- c盘不能新建文件的解决办法
来自为知笔记(Wiz) 附件列表
- Spring Cloud Zuul 2(基于配置中心的动态API网关)
在大体了解了API Zuul 和 配置中心Config后我们来尝试完成一个基于配置中心的动态API网关 创建项目 命名为api-gateway-dynamic-route并加入config 和 Zuu ...
- python中shuffleSplit()函数
参数: n : int 数据集中的元素总数. n_iter : int (default 10) 重新洗牌和分裂迭代次数. test_size : float (default 0.1), int, ...
- Android访问中央气象台的天气预报API得到天气数据
最新说明:该接口已失效! 2014-03-04 可申请它公布的API,需申请:http://smart.weather.com.cn/wzfw/smart/weatherapi.shtml 在用A ...
- GO语言文件的创建与打开实例分析
本文实例分析了GO语言文件的创建与打开用法.分享给大家供大家参考.具体分析如下: 文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的.Golang 对文件的支持是在 os pack ...
- GCC笔记(警告.优化以及调试选项)
GCC提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-c ...
- Log4php使用指南
一.Log4php简介 Log4php是Log4xx系列日志组件之一,是Log4j迁移到php的版本,主要用来记录日志信息,支持多种输入目的地,包括:日志文件.日志回滚文件.数据库.日志服务器等等 ...
- suse配置dhcp服务器
Suse dhcp服务器安装在安装系统时勾选 Suse dhcp 默认配置文件 /etc/dhcpd.conf Suse dhcp 启动程序 /etc/init.d/dhcpd restart 配置 ...
- 面试题:hibernate 有用
1. Hibernate的工作流程? 答案: 1.通过Configuration对象读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory对象 3.打开session 4.创建事 ...