#include<bits/stdc++.h>using namespace std;const long long mod=1000000007,inv=570000004;long long i,j,n,m,a[1010]/*成功几率*/,sum=0,dp[1010][1010]/*动态规划*/,def[1010]//预处理;long long qpow(long long x,long long y,long long mod)//快速幂{    long long ans=1,tmp=…
题意1.1: 求\(\sum_{i=1}^n Fib^m\mod 1e9+9\),\(n\in[1, 1e9], m\in[1, 1e4]\) 思路1.1 我们首先需要知道斐波那契数列的通项是:\(Fib_i = \frac{\sqrt5}{5}[(\frac{1+\sqrt5}{2})^i-(\frac{1-\sqrt5}{2})^i]\),因为取模是个质数,我们可以用二次剩余定理得到\(\sqrt5 \mod 1e9+9 = 383008016\),然后就可以得到\(\frac{\sqrt5…
题目链接 传送门 题意 有\(n\)棵竹子,然后有\(q\)次操作,每次操作给你\(l,r,x,y\),表示对\([l,r]\)区间的竹子砍\(y\)次,每次砍伐的长度和相等(自己定砍伐的高度\(len\),该区间大于\(len\)的树木都要砍到\(len\)),问你第\(x\)次砍的高度是多少(注意在经过\(y\)次砍伐后该区间的竹子的高度都会变成\(0\),询问之间互不影响). 思路 由于在\(y\)次砍伐后树木高度都变为\(0\),且每次砍伐的总长度都相等,因此每次砍伐的长度和为该区间内竹…
一个人可以走一步或者跳x步,但不能连着跳,问到这个区间里有几种走法 考虑两种状态  对于这一点,我可以走过来,前面是怎么样的我不用管,也可以跳过来但是,跳过来必须保证前一步是走的 dp[i][0]表示i这一步是走过来的dp[i][1]表示i这一步是跳过来的 #include<iostream> #include<bits/stdc++.h> using namespace std; ][]; ; ]; int main() { int n,w; cin>>n>&g…
题意: 构造一个n*n的矩阵,使得Ai,i = 0,Ai,j = Aj,i,Ai,1+Ai,2+...+Ai,n = 2.求种类数. 题解: 把构造的矩阵当成邻接矩阵考虑. 那么所有点的度数都为2,且存在重边但不存在自环.这种情况的图为多个环,即每个点都在且仅在一个环里. 考虑每次加一个点来递推dp[].假设当前是第n个点,从前n-1个点中筛出(1~n-3)个点和第n个点形成环. 设n-1个点中保留k个点,即筛出n-1-k个点和第n个点形成环. 递推方程为:f(n) = (n-1)f(n-2)+…
题意: 给一个n*m的矩阵赋值(0,1,2).使得每个数都不小于它左面和上面的数. 题解: 构建0和1的轮廓线.对于单独的轮廓线,共需要往上走n步,往右走m步.有C(n+m,n)种方式. 两个轮廓线的总情况是C(n+m,n)*C(n+m,n)种方式.但是还要去重掉相交的情况. 假设将0轮廓线向左上平移一个单位,那么此时两个轮廓线既不能相交也不能重合. 假设0轮廓线是从A到B,1轮廓线是从C到D.那么相交的情况可以理解成从A到D,从C到B.情况数是C(n+m,n-1)*C(n+m,m-1) 总答案…
题意: n个点,m1条边的图E1,n个点,m2条边的图E2.求图E2有多少子图跟图E1同构. 题解: 用STL的全排列函数next_permutation()枚举映射.对于每一种映射枚举每一条边判断合法性. 总情况数要除以图E1的自同构数去重. #include <bits/stdc++.h> using namespace std; int n, m1, m2; int u, v, d; int ans; ]; ][], b[][]; int main() { while(~scanf(&q…
题意 求斐波那契数列m次方的前n项和,模数为 $1e9$. 分析 线性递推乘线性递推仍是线性递推,所以上BM. 由于模数非质数,上扩展版的BM. 递推多少项呢?本地输入发现最大为与前57项有关(而且好像有周期性?):当然这个算法飞快,搞1000都没问题. #include <cstdio> #include <cstdlib> #include <cassert> #include <cstring> #include <bitset> #inc…
题意: 平面上有几个宽度相同的矩形区域被涂黑了,让你找到一条横线横截若干个矩形,把这些黑色部分抠下来一部分使得它们以这条横线为对称轴,求能抠下来的最大面积. 题解: 在随着对称轴上移的过程中,必然有一部分矩形有效面积在增加,一部分有效面积在减少,一部分有效面积不变. 单个矩形状态发生变化时,仅当对称轴触及下端点,中点,上端点时. 因此预处理出所有矩形的这三个突变点的信息并离散化,然后从下往上遍历,记录每一个时间点这三种状态的矩形共有多少个,以此递推面积. 最优解一定在突变点处出现,记录即可. 为…
题意:计算斐波那契数列前n项和的m次方模1e9 题解: $F[i] – F[i-1] – F[i-2] = 0$ $F[i]^2 – 2 F[i-1]^2 – 2 F[i-2]^2 + F[i-3] = 0$ $F[i]^3 – 3 F[i-1]^3 – 6 F[i-2]^3 + 3 F[i-3] + F[i-4] = 0$ 可以看出,斐波那契数列的高次幂依然是可以线性递推出来的,可以推广到任意幂次的情况,具体证明参见Fibonomial Coefficient 硬套杜教bm即可. #inclu…