【hihocoder 1511】树的方差
【题目链接】:http://hihocoder.com/problemset/problem/1511
【题意】
【题解】
有个方差的公式
V(X)=E(X2)−E(X)2
这里E(X)指的是X的期望;
显然所有树的度数的期望都是2*(n-1)/n
则问题转换成求E(X^2)了;
这里用到了树的prufer数列->关于prufer数列
即每一个prufer数列都对应了不同的树;
然后根据数列中的数字出现的次数和其在树中的度数的关系;
我们可以枚举每一个节点在prufer数列中出现的次数X;
在n-2个位置中选X个位置放这个节点->C(N-2,x)
则剩余n-2-x个位置,每个位置都有n-1种选择即(n-1)^(n-2-x)
然后它的度数就是X+1,因为求的是x方的期望,所以累加度数的时候加的是(x+1)^2
然后有n个节点,每个节点都可以这样,所以再乘个n;
这样我们就算出了;
所有n个节点的树;
所有节点的度数的平方的和;
则再除个n就是E(X^2)了;
分数的取模其实就是用乘法逆元搞;
和能整除的分数一样;
阶乘的乘法逆元求的时候只要求最大的那个,小的直接枚举就能得到;
【Number Of WA】
3
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1e6+100;
const LL MOD = 998244353;
LL fac[N],rfac[N],ans = 0,n,pre[N],ex;
LL ksm(LL x,LL y)
{
LL t = 1;x%=MOD;
while (y)
{
if (y&1) t = (t*x)%MOD;
x = (x*x)%MOD;y>>=1;
}
return t;
}
LL C(LL n,LL m)
{
return fac[n]*rfac[n-m]%MOD*rfac[m]%MOD;
}
int main()
{
//freopen("F:\\rush.txt","r",stdin);
ios::sync_with_stdio(false),cin.tie(0);//scanf,puts,printf not use
fac[0] = 1;
rep1(i,1,N-1) fac[i] = (fac[i-1]*i)%MOD;
rfac[N-1] = ksm(fac[N-1],MOD-2);
rep2(i,N-2,0)
rfac[i] = 1LL*rfac[i+1]*(i+1)%MOD;
cin >> n;
ex = 2*(n-1)%MOD;
ex = (ex*ex)%MOD;
ex = (ex*ksm(n,n-2))%MOD;
pre[0] = 1;
rep1(i,1,n-2)
pre[i] = pre[i-1]*(n-1)%MOD;
rep1(i,0,n-2)
{
LL x = 1LL*(i+1)*(i+1)%MOD;
ans = ans+C(n-2,i)*pre[n-2-i]%MOD*x%MOD*n%MOD;
}
ans = (ans+MOD-ex*ksm(n,MOD-2)%MOD)%MOD;
ans = ans*ksm(n,MOD-2)%MOD;
cout << ans << endl;
return 0;
}
【hihocoder 1511】树的方差的更多相关文章
- HihoCoder 1511: 树的方差(prufer序)
题意 对于一棵 \(n\) 个点的带标号无根树,设 \(d[i]\) 为点 \(i\) 的度数,定义一棵树的方差为数组 \(d[1..n]\) 的方差. 给定 \(n\) ,求所有带标号的 \(n\) ...
- hihoCoder挑战赛28 题目3 : 树的方差
题目3 : 树的方差 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 对于一棵 n 个点的带标号无根树,设 d[i] 为点 i 的度数. 定义一棵树的方差为数组 d[1. ...
- hihocoder 1391 树状数组
#1391 : Countries 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 There are two antagonistic countries, countr ...
- hihoCoder 1014trie树(字典树)
hihoCoder 1014 题目提示已经很清楚了~ 贴代码…… #include <iostream> #include <cstdio> #include <cstr ...
- HihoCoder——Trie树
本文出自:http://blog.csdn.net/svitter 原题:http://hihocoder.com/contest/hiho2/problem/1 题解:使用Trie树..基础题目.一 ...
- #1014 : Trie树 HihoCoder(字典树)
描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题: ...
- HihoCoder - 1715 树的连通问题
题面在这里! 正式告别文化课回归的第一题QWQ,然鹅半个月之后还是要退役QWQWQWQWQ 好像很久之前就见过的一个题,当时只会打一打 O(N^2) 的暴力QWQ,正好今天又写了遍这个暴力用来对拍23 ...
- hihoCoder#1322(树的判定)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个包含 N 个顶点 M 条边的无向图 G ,判断 G 是不是一棵树. 输入 第一个是一个整数 T ,代表测试数据的组 ...
- hihocoder 1193 树堆 解题报告
题目大意:给出一棵有根树(根为 \(0\) ),点有点权.可以删除点(非根),并将其子树接到其父亲上.我们称一个树为树堆当前仅当树上每个点都满足其权值大于等于其子树中所有点的点权.现在对于每个点要求其 ...
随机推荐
- 抓包分析TCP的三次握手和四次握手
问题描写叙述: 在上一篇<怎样对Android设备进行抓包>中提到了,server的开发者须要我bug重现然后提供抓包给他们分析.所以抓好包自己也试着分析了一下.发现里面全是一些TCP协议 ...
- Struts2 自己定义下拉框标签Tag
自己定义标签主要包含三个步骤: 1.编写java类,继承TagSupport类. 2.创建tld文件,影射标签名和标签的java类. 3.jsp页面引入tld. 样例:自己定义下拉框标签 假设页面上有 ...
- How to use shared model by git in sql source control of red gate
1.clone the git repository for datbase 2.open sql source control window and select the target databa ...
- linux 编译安装TRMPdump(libRTMP)
需要编译libRTMP,首先需要安装配置编译环境.网上能够找到的资料多是在Windows环境编译.这里介绍一下在Linux系统中编译安装libRTMP,一来给后来者一个参考,二来也给自己做一个备忘录. ...
- aspectc中this可以获取的东西
this->kind 操作类型 this->targetName 被调用函数名称 this->funcName 调用函数名称 this->argsCount 参数个数 thi ...
- JavaScript 获取星期几函数
function getDayofWeek() { var day = ""; var time = new Date(); ...
- Win7的虚拟Wi-Fi
前几天无意中发现,Win7的硬件驱动里有个叫Microsoft Virtual WiFi Miniport Adapter的东东,从网上查了一下,可以用来组建临时网络,共享Internet.一块无线网 ...
- Hbuilder 移动app
==========代码行快捷方法========== div*4div[class=""]*4div[id=""]*4 tr*4tr{<div>w ...
- 通过委托事件实现winform窗体之间的互相刷新
新建winform窗体Form1和Form2; 接下来要通过点击Form2的按钮,实现Form1界面的同步刷新. 先展示一下最终效果: 1.Form1界面如下: 2.点击按钮弹出Form2,界面如下: ...
- SQLServer2008 关于CASE WHEN
CASE WHEN的两种格式 1.简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END 2.Case搜索函数 CASE ...