题解 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 ...
随机推荐
- PHP函数(一)-变量
1.全局变量 <?php $a = 1; $b = 2; function test(){ echo $a + $b."<br>"; //运行结果为0 } tes ...
- Oracle11gR2--静默安装数据库软件
1.安装相关的包(略) 2.建oracle用户 组 groupadd oinstall --$ORACLE HOME/rdbms/lib/config.c groupadd dba chattr -i ...
- Android的设置界面及Preference使用
一般来说,我们的APP都会有自己的设置页面,那么其实我们有非常简单的制作方法.老样子,先看效果图. 然后就是看源代码了. 第一步,先在res文件夹中新建一个xml文件夹,用来存放preferences ...
- Cannot+use+T4+templates+inside+a+.NET+Core+project,NetCore2.0无法使用T4模板解决方法
Cannot+use+T4+templates+inside+a+.NET+Core+project,NetCore2.0无法使用T4模板解决方法 请见:https://csharp.wekeepco ...
- centos 中没有 ifcfg-eth0 配置文件的解决办法
用 CentOS-6.5-i386-LiveDVD.iso 镜像安装好CentOS 6.5系统后(已经把系统写入硬盘),发现ip在每次重启后都会还原,用ifconfig查看是有eth0网卡的(也有可能 ...
- C# XML 操作
1 xml文件格式 <?xml version="1.0" encoding="utf-8"?> <userInfo> <user ...
- python调用Go代码
Go 1.5发布了,其中包含了一个特性:可以编译生成动态链接库,经试验,生成的.so文件可以被python加载并调用.下面举个例子: 先写一个go文件main.go: package main imp ...
- python中descriptor的应用
[python中descriptor的应用] 1.classmethod. 1)classmethod的应用. 2)classmethod原理. 2.staticmethod. 1)staticmet ...
- How To Create SharePoint 2010 Site Collection In Its Own DB
在SharePoint 2010中可以使用Management Shell 为新建的Site Collection 创建自己的DB. 在 Shell中执行如下命令: 1. $w = get-spweb ...
- Android输入法部分遮挡UI的问题(与EditText框相切)
首先,我们来看看遇到问题的图片 遇到的问题是,当点击输入框之后,输入法会切到红线的位置,理想状态应该是在绿线位置 那么,是什么原因造成的呢? 问题其实很简单,是因为drawableleft图片比该输入 ...