luogu P4091 [HEOI2016/TJOI2016]求和】的更多相关文章

题目链接 (luogu) https://www.luogu.org/problem/P4091 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4555 题解 终于不是神仙题了啊... 首先\(O(n\log n)\)的FFT做法非常明显,直接用容斥展开,这里不再赘述了.发现最后就是要求一个\(\sum^{n}_{k=0}\sum^{n}_{j=k}(-1)^{j-k}{j\choose k}2^j(\sum^{n}_{i=0}k…
原题传送门 \[\begin{aligned} a n s &=\sum_{i=0}^{n} \sum_{j=0}^{i}\left\{\begin{array}{c}{i} \\ {j}\end{array}\right\} 2^{j} \times j ! \\ &=\sum_{i=0}^{n} \sum_{j=0}^{n}\left\{\begin{array}{c}{i} \\ {j}\end{array}\right\} 2^{j} \times j ! \\ &=\su…
传送门 这一类题都要考虑推式子 首先,原式为\[f(n)=\sum_{i=0}^{n}\sum_{j=0}^{i}S(i,j)*2^j*j!\] 可以看成\[f(n)=\sum_{j=0}^{n}2^j*j!\sum_{i=j}^{n}S(i,j)\] 又因为\[S(i,j)=\frac{1}{j!}\sum_{k=0}^{j}(-1)^k*\binom{j}{k}*(j-k)^i\] 所以\[f(n)=\sum_{j=0}^{n}2^j*j!\sum_{i=0}^{n}\frac{1}{j!}…
P4091 [HEOI2016/TJOI2016]求和 题目描述 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: \[ f(n)=\sum_{i=0}^n\sum_{j=0}^i S(i,j)\times 2^j \times (j!) \] \(S(i, j)\)表示第二类斯特林数,递推公式为: \[ S(i, j) = j \times S(i - 1, j) + S(i - 1, j - 1), 1 \le j \le i - 1 \] 边界条件…
[题解]P4091 [HEOI2016/TJOI2016]求和 [P4091 HEOI2016/TJOI2016]求和 可以知道\(i,j\)从\(0\)开始是可以的,因为这个时候等于\(0\).这种题目都要从\(0\)开始或许比较好(Itst语) 然后就开始化式子吧 原式= \[ \sum_{i=0}^{n} \sum_{j=0}^n {i \brace j}2^j j! \] 斯特林容斥式子展开一下,并且我们知道当\(k>j\)时,\({j \choose k}=0\),所以扩大枚举范围到\…
BZOJ 4555 一道模板题. 第二类斯特林数有公式: $$S(n, m) = \frac{1}{m!}\sum_{i = 0}^{m}(-1)^i\binom{m}{i}(m - i)^n$$ 考虑它的组合意义:$S(n, m)$表示$n$个不相同的小球放到$m$个相同的盒子里而且不能有空盒的方案数. 我们枚举空盒有$i$个,然后进行容斥.因为盒子没有区别,所以最后得到的值还要除以$m!$. 本题要求: $$\sum_{i = 0}^{n}\sum_{j = 0}^{i}S(i, j)*2^…
传送门 首先,因为在\(j>i\)的时候有\(S(i,j)=0\),所以原式可以写成\[Ans=\sum_{i=0}^n\sum_{j=0}^nS(i,j)\times 2^j\times j!\] \[Ans=\sum_{j=0}^n2^j\times j!\sum_{i=0}^nS(i,j)\] 根据第二类斯特林数的通项公式代入,有\[Ans=\sum_{j=0}^n2^j\times j!\sum_{i=0}^n\sum_{k=0}^j\frac{(-1)^k}{k!}\frac{(j-k…
留待警戒 FFT的时候长度要写的和函数里一样啊XD 瞎扯 这是个第二类斯特林数的理性愉悦颓柿子题目 颓柿子真的是让我hi到不行啦(才没有) 前置芝士 一个公式 \[ \sum_{i=0}^n t^i = \frac{t^{n+1}-1}{t-1} \] 第二类斯特林数 第二类斯特林数的是指把n个对象放到m个集合里面的方案数 其递推式是 \[ S_{n}^{m}=S_{n-1}^{m-1}+mS_{n-1}^{m} \] 容斥原理的得到的通式 \[ S_n^m=\frac{1}{m!}\sum_{…
题目大意:给你$n(n\leqslant10^5)$,求:$$\sum\limits_{i=0}^n\sum\limits_{j=0}^i\begin{Bmatrix}i\\j\end{Bmatrix}\times2^j\times j!$$$\begin{Bmatrix}n\\m\end{Bmatrix}$表示第二类斯特林数,递推公式为$\begin{Bmatrix}n\\m\end{Bmatrix}=m\begin{Bmatrix}n-1\\m\end{Bmatrix}+\begin{Bma…
[LG4091][HEOI2016/TJOI2016]求和 题面 要你求: \[ \sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*j! \] 其中\(S\)表示第二类斯特林数,\(n\leq10^5\),答案对\(998244353\)取模. 题解 这题你们好早就做了,因为由于技术原因(不会\(NTT\)),我现在才做,我真是菜爆了. 先来推柿子: \(\because S(i,j)=0(i < j)\) \(\therefore\;\)原式\(=\sum_{i=0}^n\…
题目 [HEOI2016/TJOI2016]求和 关于斯特林数与反演的更多姿势\(\Longrightarrow\)点这里 做法 \[\begin{aligned}\\ Ans&=\sum\limits_{i=0}^n \sum\limits_{j=0}^i \begin{Bmatrix}i\\j\end{Bmatrix}2^j×j!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1\\ &=\sum\limits_{i=0}^n \sum\l…
题面 传送门:https://www.luogu.org/problemnew/show/P2824 Solution 这题极其巧妙. 首先,如果直接做m次排序,显然会T得起飞. 注意一点:我们只需要找到一个数. 所以说,我们可以考虑一个绝妙的想法:我们可以用二分答案的方法缩小要找的数的区间. 考虑二分一个值,判定p位置的数排序之后,p位置上的数是否>=mid 如果>=mid,则向右找,否则向左找. 怎么判定p位置的数排序之后是否>=mid呢? 考虑这样做:扫描一遍原数组,>=mi…
前置:第二类斯特林数 表示把\(n\)个小球放入\(m\)个不可区分的盒子的方案数 使用容斥原理分析,假设盒子可区分枚举至少有几个盒子为空,得到通项: \[S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}(-1)^k\binom{m}{k}(m-k)^n\] 分析 \[f(n)=\sum_{i=0}^n\sum_{j=0}^iS(i,j)2^jj!\] 注意到\(S(n,m)=0\quad(m>n)\),因此第二个求和上限可改为\(n\),并代入第二类斯特林数的通项,得到 \[…
题面 好久没写博客了..最近新学了CDQ...于是就来发一发一道CDQ的练习题 看上去就是可以dp的样子. 设\(dp_{i}\)为以i结尾的最长不下降序列. 易得:\(dp_{i}\)=\(max(dp_{j})+1\)\((j<=i\)&&\(Max_{j}<=a_{i}\)&&\(a_{j}<=Min_{i})\) \(Max_{i}\)和\(Min_{i}\)表示第i个点所有变化中的最大值和最小值. 我们考虑用一个什么东西来维护这个dp. 我的第一…
BZOJ 4552 挺妙的解法. 听说这题直接用一个桶能拿到$80 \ pts$ 发现如果是一个排列的话,要对这个序列排序并不好做,但是假如是$01$序列的话,要对一个区间排序还是很简单的. 发现最后的询问其实只有一个,所以我们考虑二分这个答案(其实感觉在这题中答案的单调性并不是很明显),每一次二分得到一个$mid$,对于所有的$a_i$,我们把$a_i \geq mid$的$i$都记为$1$,把所有$a_i < mid$的值都记为$0$,然后对于每一次排序,我们只要获取这个区间的$0$和$1$…
传送门 首先我们来看一下怎么求\(S(m,n)\). 注意到第二类斯特林数的组合意义就是将\(m\)个不同的物品放到\(n\)个没有区别的盒子里,不允许有空盒子的方案数. 那么将\(m\)个不同的物品随便扔到\(n\)个盒子里的方案数就是\(n^m\),这里盒子也有区别了. 那么枚举有多少盒子有物品,然后斯特林数安排一下,注意到这是的盒子是没有区别的,再排列就好了,即 \[ n^m=\sum\limits_{i=0}^n \binom{n}{i}S(m,i)i! \] 但我们要求的是\(S\),…
嘟嘟嘟 好多人(神仙)都说这是NTT例题,然后我就做了-- 做这题,需要一下前置技能: 1.第二类斯特林数 2.NTT 3.没有公式恐惧症 额--不会斯特林数的话(就像我),知道通项公式也行. 这个博客挺好:第二类斯特林数总结 然后就是一顿暴推了. 首先如果直接往原式里带通项公式的话好像搞不出来,这时候需要用点技巧,换一下枚举顺序: \[f(n) = \sum _ {j = 0} ^ {n} 2 ^ j * (j!) \sum _ {i = 0} ^ {n} S(i, j)\] 讲道理\(i\)…
S(i,j)=Σ(-1)j-k(1/j!)·C(j,k)·ki=Σ(-1)j-k·ki/k!/(j-k)!.原式=ΣΣ(-1)j-k·ki·2j·j!/k!/(j-k)! (i,j=0~n).可以发现i只在式中出现了一次且与j不相关,如果对每个k求出其剩余部分的答案,各自乘一下即可.而剩余部分显然是一个卷积. #include<bits/stdc++.h> using namespace std; ;} int read() { ,f=;char c=getchar(); ;c=getchar…
题目链接 \(Description\) 求\[\sum_{i=0}^n\sum_{j=0}^iS(i,j)\times 2^j\times j!\mod 998244353\] 其中\(S(i,j)\)为第二类斯特林数(\(S(n,m)\)即在\(m\)个无区别盒子中放\(n\)个不同小球的方案数). \(Solution\) (不知博客园markdowm怎么回事就是显示格式错误) 另:第二类斯特林数 总结. //7988kb 2340ms #include <cstdio> #includ…
给你斯特林数就换成通项公式,给你k次方就换成斯特林数 考虑换成通项公式之后,组合数没有什么好的处理方法 直接拆开,消一消阶乘 然后就发现了(j-k)和k! 往NTT方向靠拢 然后大功告成 其实只要想到把斯特林公式换成通项公式,考虑用NTT优化掉(j-k)^i 后面都是套路了. #include<bits/stdc++.h> #define reg register int #define il inline #define numb (ch^'0') #define int long long…
题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序,排序分为两种:1:(0,l,r)表示将区间[l,r]的数字升序排序2:(1,l,r)表示将区间[l,r]的数字降序排序最后询问第q位置上的数字. 输入格式 输入数据的第一行为两个整数n和m.n表示序列的长度,m表示局部排序的次数.第二行为n个整数,表示1到n的一个全排列.接下来输入m行…
只会两个$log$的$qwq$ 我们二分答案:设答案为$ans$,则我们把$a[i]<=ans$全部设成$0$,把$a[i]>ans$全部设成$1$,扔到线段树里,这样区间排序(升序)就是求出$[l,r]$中$0$(或$1$)的个数$cnt$,然后对区间$[l,l+cnt-1]$赋值为$0$,对$[l+cnt,r]$赋值为$1$.最后查一下所求位置是$0$还是$1$来决定上下界改变方向. #include<cstdio> #include<iostream> #defi…
一道十分神奇的线段树题,做法十分的有趣. 前置芝士 线段树:一个十分基础的数据结构,在这道题中起了至关重要的作用. 一种基于01串的神奇的二分思想:在模拟赛中出现了这道题,可以先去做一下,这样可能有助于理解. 具体做法 可以发现sort是非常慢的,每次多要\(O(N\log_2N)\),最后的时间复杂度为\(O(MN\log_2N)\),肯定是会T的,而且sort这个东西也不是很好去维护.可以发现,最后需要查询的数只有一个,于是就可以想到离线的做法.\(N\)虽然不小,但其实并不算大,\(O(N…
「HEOI2016/TJOI2016」排序 题目大意 给定一个 \(1\) 到 \(n\) 的排列,每次可以对这个序列的一个区间进行升序/降序排序,求所有操作后第 \(q\) 个位置上的数字. 题解 大棒子,又学到了许多. 做法很多,这里大概讲一下主流的几种做法. 在线做法 线段树合并&分裂 其实将一个区间升序或降序排序可以看作同一个操作--进行升序排序,打一个是否是升序排序的标记. 所以我们可以在每一个位置维护一棵权值线段树,当要将区间 \([l,r]\) 的数字排序时,取出这些位置所维护的权…
2021.12.09 [HEOI2016/TJOI2016]排序(线段树+二分,把一个序列转换为01串) https://www.luogu.com.cn/problem/P2824 题意: 在 2016 年,佳媛姐姐喜欢上了数字序列.因而她经常研究关于序列的一些奇奇怪怪的问题,现在她在研究一个难题,需要你来帮助她. 这个难题是这样子的:给出一个 1 到 n 的排列,现在对这个排列序列进行 m 次局部排序,排序分为两种: 0 l r 表示将区间 \([l,r]\) 的数字升序排序 1 l r 表…
hdu 5618 Jam's problem again #include <bits/stdc++.h> #define MAXN 100010 using namespace std; int n,k,T,xx; int ans[MAXN],c[MAXN],f[MAXN]; struct Node{ int x,y,z,id; }a[100010],b[100010]; inline int read(){ char ch; bool f=false; int res=0; while (…
小QQ是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N \times NN×N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色) 列交换操作:选择矩阵的任意两列,交换这两列(即交换对应格子的颜色) 游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色. 对于某些关卡,小QQ百思不得其解,以致他开始怀疑这些关卡是不是根…
[HEOI2016/TJOI2016]游戏 看起来就是个二分图匹配啊 最大化匹配是在最大化边数,那么一条边就代表选中一个坐标内的点 但是每一行不一定只会有一个匹配 于是把点拆开,按照'#'划分一下就好了 Code: #include <cstdio> #include <cstring> #include <cctype> template <class T> void read(T &x) { x=0;char c=getchar(); while…
[TJOI/HEOI2016]求和 这题好难啊!! 斯特林数+NTT. 首先我们将第二类斯特林数用容斥展开,具体原理不解释了. \(\displaystyle S(i,j)=\frac{1}{j!}\sum_{k=0}^{j}(-1)^{k}C_j^k(j-k)^i=\sum_{k=0}^{j}\frac{(-1)^k}{k!}\cdot\frac{(j-k)^i}{(j-k)!}\). 我们交换一下\(\sum\)的顺序: \(\displaystyle f(n)=\sum_{j=0}^{n}…
[HEOI2016/TJOI2016]树 思路 做的时候也是糊里糊涂的 就是求最大值的线段树 错误 线段树写错了 #include <bits/stdc++.h> #define FOR(i,a,b) for(int i=a;i<=b;++i) using namespace std; const int N=6e5+7; int read() { int x=0,f=1;char s=getchar(); for(;s>'9'||s<'0';s=getchar()) if(…