博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hihoCoder挑战赛28 题目3 : 树的方差
阅读量:6956 次
发布时间:2019-06-27

本文共 1000 字,大约阅读时间需要 3 分钟。

题目3 : 树的方差

时间限制:20000ms
单点时限:1000ms
内存限制:256MB

描述

对于一棵 n 个点的带标号无根树,设 d[i] 为点 i 的度数。

定义一棵树的方差为数组 d[1..n] 的方差

给定 n ,求所有带标号的 n 个点的无根树的方差之和。

你需要将答案对 998244353 取模。

方差的定义:https://en.wikipedia.org/wiki/Variance

输入

仅一行:一个正整数 n

2 ≤ n ≤ 106

输出

仅一行:一个非负整数表示答案

样例解释

3个点的无根树有3种,每种的度数分布都是[1,2,1]

于是方差=((1-(4/3))2+(2-(4/3))2+(1-(4/3))2)/3=2/9

由于有3种,所以答案是2/3

分数取模的方法:https://math.stackexchange.com/questions/586595/finding-modular-of-a-fraction

样例输入
3
样例输出
665496236
#include
#include
using namespace std;typedef long long ll;const ll mod=998244353;ll fpow(ll a,ll p){ ll res=1; for(;p;p>>=1,a=a*a%mod) if(p&1) res=res*a%mod; return res;}ll n,tem,ans;int main(){ cin>>n; ans=(n-2)*(n-1)%mod; if(n<=3){ tem=fpow(n,mod-2); ans=ans*tem%mod; cout<
<<'\n'; return 0; } tem=fpow(n,n-4); ans=ans*tem%mod; cout<
<<'\n'; return 0;}

 

转载于:https://www.cnblogs.com/shenben/p/6766756.html

你可能感兴趣的文章
速查笔记(Linux Shell编程<上>)
查看>>
更换手机设备时如何同步迁移便签内容?
查看>>
Linux进程间通信之共享内存
查看>>
模拟返回的后台数据实现统计图
查看>>
《Linux命令行与shell脚本编程大全》第二十六章 一些有意思的脚本
查看>>
设置文字旋转角度
查看>>
Spring_DI_XML_02
查看>>
uCos-III移植到STM32F10x
查看>>
openssl编译使用
查看>>
不学无数——SpringBoot入门V
查看>>
Android Pie 引入 Keystore 新特性,安全防护再升级
查看>>
前端性能优化之 Composite
查看>>
一文看懂混淆代码——Java Decompiled过程和代码阅读
查看>>
React 16.8.6 发布,构建用户界面的 JavaScript 库
查看>>
Behavior-2
查看>>
TypeScript 发布 3.4 首个 RC 预览版
查看>>
ES6(Symbol)
查看>>
华丽转身再获新生?体验大陆集团深耕自动驾驶生态圈的最新技术与产品
查看>>
代码查看神器--Editplus
查看>>
Prometheus vs. Graphite:时序数据监控工具选择
查看>>