首页 > 其他分享 >闲话 22.10.1

闲话 22.10.1

时间:2022-10-01 20:55:09浏览次数:64  
标签:frac 闲话 sum 22.10 binom mod inv jc

闲话

这才是真正的闲话

最后讲了一下求导和积分
但是感觉没几个人听
听了也没几个人会
——by crs_line

如果有不会的东西都可以来找我!
给solution引流
但是高数很多东西真的比较基础了
要学的也不多
求导 积分 多元函数 高重积分 级数 然后没了

某人在祂今天未公开的闲话里说我不放图 我也是放的

image

是四个可爱!虽然略微Badend


桜が泣いている

わたしたちの春は

紛い物、紛い物だから

どうせ知ってたんだろう

わたしあなたから逃げないよ

I'll just be forever a phantom.

杂题

CF1667E

对于所有点数为 \(n\) 的树,如果其满足对于所有 \(i\in [2,n]\),与 \(i\) 相连的 \(j\) 中有且只有一个点 \(j\) 满足 \(j<i\) ,那么我们称其为好树。对于 \(1\sim n\) 每个点求出来有多少好树满足重心为 \(i\)。这里重心定义为删去这个点后形成的所有连通块大小均小于 \(\frac{n-1}2\)。

\(3\le n\le 2\times 10^5\) 且 \(n\) 为奇数(所以不存在树有多个重心的情况)

“有且只有一个点 \(j\) 满足 \(j<i\)”这个东西可以通过强制以 \(1\) 为根来生成树来避免判定。
于是我们对 \(i\) 需要求的就是 以 \(1\) 为根, \(i\) 的子树大小 \(\ge \frac {n+1}2\),其余点的子树大小 \(< \frac {n+1}2\) 的树的数量。

先考虑第一个条件。
我们设 \(f_i\) 为 \(i\) 节点的子树大小 \(\ge\frac {n+1}2\) 的树的数量。
我们考虑子树中有 \(j\) 个点,然后选出除自己外的 \(j-1\) 个点一共 \(\binom{n-1}{j-1}\) 种可能;不在子树内的节点每个节点需要一个编号比他小的父亲,可能性是 \((n-j-1)!\) 的;第 \(i\) 个点需要一个父亲,可能性是 \((i-1)\) 的;在子树中的 \(j-1\) 个点,每个点需要一个父亲,可能性是 \((j-1)!\) 的。
令 \(m = \frac{n+1}2\),于是

\[\begin{aligned} f_i &= \sum_{j=m}^{n-i+1} \binom{n-i}{j-1}(n-j-1)!(i-1)(j-1)! \\ & = \sum_{j=m}^{n-i+1} \frac { (n-j-1)!(i-1)(j-1)!(n-i)! } { (j-1)!(n-i-j+1)! } \\ & = (n-i)! (i-1)\sum_{j=m}^{n-i+1} \frac { (n-j-1)!} { (n-i-j+1)! } \qquad (到这里都是简单消一下) \\ & = (n-i)! (i-1)!\sum_{j=m}^{n-i+1} \binom { n-j-1} { n-i-j+1} \qquad (上下同乘 (i-2)!\ 攒成组合数) \\ & = (n-i)! (i-1)!\sum_{j=m}^{n-i+1} \binom { n-j-1} { i-2 } \\ & = (n-i)! (i-1)!\binom { n-m} {i-1} \\ & = \frac {(n-i)! (n-m)!}{ (n-i-m+1)!} \end{aligned}\]

然后我们 \(O(1)\) 求出了 \(f_i\)。

然后求答案。设 \(g_i\) 为 \(i\) 点的答案,我们有

\[g_i = f_i - \frac{\sum_{j=i+1}^n g_j}{i} \]

\(g_i\) 是 \(f_i\) 减去 \(i\) 子树内存在重心 \(j\) 情况的答案。\(j\) 是重心且在 \(i\) 子树内的可能性为 \(\frac 1i\) ,因此有转移式。
于是 \(O(n)\) 求解答案。

code :

#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for (register int (i) = (a); (i) <= (b); ++(i))
#define pre(i,a,b) for (register int (i) = (a); (i) >= (b); --(i))
const int N = 2e5 + 10, mod = 998244353;
int jc[N<<1], inv[N<<1], n, m, f[N], ans[N], sum;
int qp(int a, int b) { int ret = 1; while (b) { if (b & 1) ret = 1ll * ret * a % mod; a = 1ll * a * a % mod; b >>= 1; } return ret; }
signed main() {
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    cin >> n; m = (n + 1) / 2;

    jc[0] = inv[0] = 1;
    rep(i,1,n) jc[i] = 1ll * jc[i-1] * i % mod;
    inv[n] = qp(jc[n], mod - 2);
    pre(i,n-1,1) inv[i] = 1ll * inv[i+1] * (i+1) % mod;

    pre(i,n-m+1,1) ans[i] = (1ll * jc[n-i] * jc[n-m] % mod * inv[n-i-m+1] % mod - 1ll * sum * qp(i, mod - 2) % mod + mod) % mod, sum = (sum + ans[i]) % mod;
    rep(i,1,n) cout << ans[i] << ' ';
}

标签:frac,闲话,sum,22.10,binom,mod,inv,jc
From: https://www.cnblogs.com/joke3579/p/chitchat221001.html

相关文章

  • 【闲话】2022.10.01
    今天早上下雨充分证明了\(\texttt{雨假同期命题}\)的正确性但是国庆没有放假老天爷:玩我呢早上:\(\textsf{bikuhiku}\):完蛋,早上没外套,我再拿一件吧早操前:\(\texts......
  • 2022.10.1
    B.CrazyBinaryString给01串,问最长的01数量相等的子串和子序列长度。#include<bits/stdc++.h>usingnamespacestd;map<int,int>M;intn;chars[100005];intma......
  • 【闲话】2022.09.30
    今天值日实际上也没值多少运动会晒死了为什么不去机房啊为什么不去机房啊为什么不去机房啊为什么不去机房啊为什么不去机房啊为什么不去机房啊为什么不去机房......
  • 闲话 22.9.30
    闲话现在是8:00我一个字没写我就看我什么时候能写完这博客现在是8:40我水完了关于某个奇怪的题单某个奇怪的人突然就给我了说“我没写题解你要继承我的遗志把这......
  • 【闲话】2022.09.29
    明天就要我值日了啊十分佩服L先生似乎今天他被查到手机了讲题的时候还在睡觉太他妈离谱了今天的考试……几乎都是寄的题解,我要寄了。Clover_BY先生发明了BK......
  • 闲话 22.9.29
    闲话发现很多人都会很用心来写闲话。gtm数了数muel的闲话一共514字是不是我写个114字就达到标准了呢?gtm在闲话里不断记录他人的话语。似乎闲话就是这种东西,记录你当......
  • 【闲话】2022.09.28
    又颓了一会KaTeX,真开心今天没有考试,于是自己切了会CDQ,切了会莫反,又思考了一下如何做可持久化字典树。没有切基环树,太难了,对于我这种蒟蒻而言。发现自己还想切一个由......
  • 闲话 22.9.27
    闲话似乎没几个人把闲话设为显示但是我除了闲话没啥了所以不隐藏了而且主要的简介都在摘要里面了我等一等再去切risrqnis我还剩五个点和55pts(今天想到拉格朗日的......
  • 【闲话】2022.09.27闲话
    考试++今天大型机惨活动。明明只是去做了次核酸,怎么会变成这个样子呢?今天大型BA讨论活动L:泰国歌曲据说今晚\(\textrm{luogu}\)要修RMJ,希望明天会更好。......
  • 闲话 22.9.26
    闲话调全体T4六点改出来了,但大样例不认为我改出来了于是又花了两个小时修改不存在的错误最近在做这题[JRKSJR4]risrqnis想做主要是因为上琴糖但是做着做着发现很......