题意 题目链接 Sol Orz shadowice 注意,下面的代码自带O(随时TLE)倍大常数.. #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x, y) #define fi first #define se second #define LL long long #define ull unsigned long long #define Fin(x) {freo…
题目大意: 给定一个数列a满足递推式 \(An=233*an-1+666*an-2,a0=0,a1=1\) 求这个数列第n项模\(10^9+7\)的值,一共有T组询问 \(T<=10^7\) \(N\)为\(64\)位正整数 首先感谢出题人的好心,凑了一个好模数,有循环节,于是复杂度骤降 麻麻我会矩阵快速幂! 时间复杂度约为\(O(T*log_{2}n)\) 但很抱歉,时间复杂度仍然不过关. 因为,丧心病狂的出题人把T开到了\(10^7\)!!! 预计得分\(6*1=6\) 这意味着,我们需要在…
诸侯安置 这道题是一题递推题,一开始自己不知道,用了搜索,只过了三个样例: 两两相同的合并, 成 1,1,3,3,5,5........n*2-1; 然后我们会容易发现一种不同与搜索的动态规划做法. f[i,j]:=f[i,j]+f[k,j-1]*(Len[i]-(j-1)) [j-1<=k<=i-1] 1.f[i,j]表示前i列放置j个的方案,且第j个放在第i列上, 2.前面f[k,j-1]个都需要累加上来,举一个说明为什么需要累加:对于前4排放置2个的情况(平移后的),2个即可以放在第一列…
来源:codeforces                 E. Tetrahedron   You are given a tetrahedron. Let's mark its vertices with letters A, B, C and D correspondingly. An ant is standing in the vertex D of the tetrahedron. The ant is quite active and he wouldn't stay idle.…
Description 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) Input&Output Input 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数. Output 输出包含M行,每行为Yes或No,即依次为每一个询问的结果. Solution 欧拉筛法的优势在于,在当前i mod 当前素数为0时就退出,保证了每个合数一定只被它的最小素因子筛掉,从而在O(n)时间内…
传送门 思路 显然可以特征根方程搞一波(生成函数太累),得到结果: \[ a_n=\frac 1 {13\sqrt{337}} [(\frac{233+13\sqrt{337}}{2})^n-(\frac{233+13\sqrt{337}}{2})^n] \] (其实我也不知道是不是,网上抄的,懒得算了) 放在模意义下,得到 \[ a_n= 233230706\times (94153035^n-905847205^n) \pmod {1e9+7} \] 后面两个可以分块,预处理出\(x^{[1…
模数是998244353的话好像NTT可以更快. #include<bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 3e5 + 51, MOD = 998244353, G = 3, INVG = 332748118; int exponent, fd, cnt = 1, limit = -1, rres, ptr; int rev[MAXN], f[MAXN], g[MAXN], tmp[M…
暴力版本: #include<bits/stdc++.h> #define mod 998244353 using namespace std; typedef long long int ll; ; ; ll A[maxn],B[maxn],tmp[maxn]; vector<ll>wait[maxn]; inline ll qpow(ll x,ll y) { ll ans=,base=x; while(y) { ) ans=ans*base%mod; base=base*bas…
Problem Turn the pokers (HDU 4869) 题目大意 有m张牌,全为正面朝上.进行n次操作,每次可以将任意ai张反面,询问n次操作可能的状态数. 解题分析 记正面朝上为1,朝下为0. 若最后有x个1,则对答案的贡献为C(n,x).所以只需要知道最后可能的1的个数. 假设已经有a个1,某次操作可以将b张牌反面,可以发现操作之后可能的1的个数相差2. 记录每次操作后1的个数所在区间为[l ,r],即可能取到的个数为l , l+2 , l+4 , ...... , r . 每…
这里所有的内容都将有关于一个线性递推: $f_{n} = \sum\limits_{i = 1}^{k} a_{i} * f_{n - i}$,其中$f_{0}, f_{1}, ... , f_{k - 1}$是已知的. BM是用于求解线性递推式的工具,传入一个序列,会返回一个合法的线性递推式,一个$vector$,其中第$i$项表示上式的$a_{i + 1}$. CH用于快速求解常系数齐次线性递推的第$n$项,我们先会求出一个特征多项式$g$,$g$的第$k$项是$1$,其余项中第$k - i…