【[CQOI2018]交错序列】】的更多相关文章

[BZOJ5298][CQOI2018]交错序列(动态规划,矩阵快速幂) 题面 BZOJ 洛谷 题解 考虑由\(x\)个\(1\)和\(y\)个\(0\)组成的合法串的个数. 显然就是把\(1\)当做隔板插入进去,那么有\(y+1\)个位置可以放\(1\),所以方案数就是\({y+1\choose x}\). 而\(x^ay^b\)的贡献可以直接快速幂算,所以问题变成了求组合数.然后\(Lucas\)一下就可以得到\(TLE\)的好成绩了.复杂度\(O(nlogn)\)(事实上只要有快速幂就会\…
[CQOI2018]交错序列 \(solution:\) 这一题出得真的很好,将原本一道矩阵快速幂硬生生加入组合数的标签,还那么没有违和感,那么让人看不出来.所以做这道题必须先知道(矩阵快速幂及如何构建递推矩阵)(组合数及二项式定理). 不知道大家有没有做过洛谷的帕秋莉手环及P哥的桶,这道题中不能有相邻的两个1就是我们在构造这个交错序列时不能连续加入两个1,这个如果直接让我们求方案数(不靠虑一的个数)就是矩阵快速幂的板子了(可以自己推递推方程).但是这1题偏偏把1的个数搭上了,我们发现1的个数是…
BZOJ5298 CQOI2018 交错序列 [DP+矩阵快速幂优化] Description 我们称一个仅由0.1构成的序列为"交错序列",当且仅当序列中没有相邻的1(可以有相邻的0).例如,000,001 ,101,都是交错序列,而110则不是.对于一个长度为n的交错序列,统计其中0和1出现的次数,分别记为x和y. 给定参数a.b,定义一个交错序列的特征值为x^ay^b.注意这里规定任何整数的0次幂都等于1(包括0^0=1). 显然长度为n的交错序列可能有多个.我们想要知道,所有长…
嘟嘟嘟 要是求交错序列的个数和就好了,那我一秒就能切. 换成这个,我就不会了. 我一直想枚举1的个数,然后算出在长度为\(n\)的序列里,有多少个合法的序列,然后又觉得这好像是什么插板法,但是每一个盒子里必须有球,还不会.查了一下发现这东西\(O(1)\)还求不了,于是彻底放弃了. 正解是这样的,首先还得稍微推一下式子. \[x ^ a y ^ b = (n - y) ^ a y ^ b\] 然后利用二项式定理 \[(n - y) ^ a y ^ b = \sum _ {i = 0} ^ a C…
Description 我们称一个仅由0.1构成的序列为"交错序列",当且仅当序列中没有相邻的1(可以有相邻的0).例如,000,001 ,101,都是交错序列,而110则不是.对于一个长度为n的交错序列,统计其中0和1出现的次数,分别记为x和y. 给定参数a.b,定义一个交错序列的特征值为x^ay^b.注意这里规定任何整数的0次幂都等于1(包括0^0=1). 显然长度为n的交错序列可能有多个.我们想要知道,所有长度为n的交错序列的特征值的和,除以m的余数.(m是 一个给定的质数)例如…
题面 求所有长度为\(n\)的.没有相邻的1的01序列中,若0有\(x\)个.1有\(y\)个,\(x^ay^b\)之和(对\(m\)取模). \(n \le 10^7, m \le 10^8, 0 \le a, b \le 45\) 题解 本题麻烦的地方在于这个\(x^ay^b\)怎么处理. \[x^ay^b = (n - y)^ay^b = \sum_{i = 0}^{a}C_a^in^i(-y)^{a - i}y^b = \sum_{i = 0}^{a}(-1)^{a - i}C_a^in…
显然答案为Σkb·(n-k)a·C(n-k+1,k).并且可以发现ΣC(n-k,k)=fibn.但这实际上没有任何卵用. 纯组合看起来不太行得通,换个思路,考虑一个显然的dp,即设f[i][j][0/1]为前i为选了j个1其中第i位是0/1的方案数.这样当然能求出答案,复杂度O(n2). 注意到ab很小,并且事实上我们并不需要知道所有的方案数,而是只要求出贡献就可以了.而又有xayb=xa(n-x)b,这个式子显然只要求出所有Σxi就能求了.再由二项式定理,(k+1)b=ΣC(b,i)ki.那么…
https://blog.csdn.net/dream_maker_yk/article/details/80377490 斯特林数有时并没有用. #include<cstdio> #include<cstring> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) typedef long long ll; using namespace std; ; int n,a,b,mo…
这个题简直有毒,\(O((a+b)^3logn)\)的做法不卡常只比\(O(2^n*n)\)多\(10\)分 看到\(a\)和\(b\)简直小的可怜,于是可以往矩阵上联想 发现这个柿子有些特殊,好像可以二项式定理搞一搞 于是\(x^ay^b\)可以写成\((n-y)^ay^b\) 于是接下来就二项式定理好了 \[(n-y)^ay^b=\sum_{r=0}^a\binom{a}{r}n^{a-r}*(-y)^r*y^b\] \[=\sum_{r=0}^a\binom{a}{r}n^{a-r}*(-…
题解: 很多模板题 第一次写莫队还比较顺利 除了把排序的cmp写错..(还第一次遇到) 这题分块也可以 先预处理出g[i][j]代表前i个块,颜色为j的有多少种 f[i][j]表示i-j的块能构成多少对 处理的方法就是f[i][j-1]+j块内和j与j之前 算答案的时候即整块+两个单独块内部和两个单独块与整块之间 因为分块有几个地方都是$n\sqrt{n}$的 所以分块的常数比莫队要来的大 #include <bits/stdc++.h> using namespace std; #defin…