题解 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 ...
随机推荐
- js取得前2位字符
<label id="ab">0</label> <script language="javascript"> url=&q ...
- Biorhythms(中国剩余定理(模板题))
Description Some people believe that there are three cycles in a person's life that start the day he ...
- 13-EasyNetQ之发布者确认
AMQP发布消息默认情况下是非事务性的,不能确保你的消息真正送达代理.AMQP可以去指定事务性发布,但是RabbitMQ这样会非常慢,我们没有让EasyNetQ API去支持此功能.为了高效的确保投递 ...
- VS 配置外部DLL的引用路径【可执行文件的环境路径】
右键项目,属性->配置属性->调试->环境,在这里写入可执行文件运行时的环境路径,格式为:PATH=ABC,如PATH=$(SolutionDir)/env 这样,我们就可以把运行时 ...
- PHP数据结构之三 线性表中的单链表的PHP实现
线性表的链式存储:用一组任意的存储单元存储线性表中的数据元素.用这种方法存储的线性表简称线性链表. 链式存储线性表的特点:存储链表中结点的一组任意的存储单元可以是连续的,也可以是不连续的,甚至是零散分 ...
- JS中使用正则表达式
- 2-2+CPU多级缓存-乱序执行优化
- JAVA环境安装配置
dk1.6 64位是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序. jdk1.6 64位安装教程 jdk1.6 64位JDK的安装路径:D:\Program Fi ...
- intval()函数
获取变量的整数值 1.转换前转化后 原因:
- 实践作业3:白盒测试---细化明确任务DAY5
收到老师给我写的评论,感觉老师真的太认真,每个博客都有仔细的,参考了老师发给我的博客,我才明白老师想要的博客内容原来是具体实际的进展记录.我们组其实这些东西早就确定了,会议也开了,但是我之前不明白博客 ...