2018南京区域赛G题 Pyramid——找规律&&递推

先手动推出前10项,再上BM板子求出递推式 $A_n = 5A_{n-1} - 10A_{n-2} + 10A_{n-3} - 5A_{n-4} + A_{n-5}$,根据特征根理论可求出特征方程 $(x-1)^5$,设 $A_n = k_1n^4 + k_2n^3 + k_3n^2+k_4n+k_5$,代入前5项求出系数(用了高斯消元法解方程组)。

这样虽然做出来了,但是感觉比较浪费时间,因为BM板子和高斯消元法的板子都不短,对手残狗不友好。

差分

首先前7项分别为1  5 15 35 70 126 210

0  1  5  15  35  70  126  210      dn=(n*n*n*n + 2*n*n*n - n*n - 2*n)/24   //第一项为0
  1  4  10 20  35   56   84        cn=n*n*n/6 + n*n/2 + n/3
    3  6  10  15  21  28           bn=n*n/2 + 3n/2 + 1
      3  4   5   6   7             an=n+2
       1   1   1   1              

如果采用差分法,能直接发现通项为最高次为4的多项式,待定系数就可以了。(快了好多啊)

当然,待定系数懒得解方程组。其实我们可以较容易的从上求出通项。

例如,

易知 $a_n = n+2$,

$b_2 - b_1 = 3$

$b_3 - b_2 = 4$

$\vdots$

$b_n - b_{n-1} = n+1$

所以 $\displaystyle b_n-b_1 = \sum_{i=1}^{n-1}a_i = \sum_{i=1}^{n-1}i+2 = \frac{n^2}{2} + \frac{3n}{2} + 1$

同理 $c_{n}-c_1 = \sum_{i=1}^{n-1}b_i$,$d_{n}-d_1 = \sum_{i=1}^{n-1}c_i$

中间只涉及平方和、立方和公式,比较简单。

参考链接:https://blog.csdn.net/qq_41746268/article/details/90601779

原文地址:https://www.cnblogs.com/lfri/p/11609948.html

时间: 2024-12-11 02:15:26

2018南京区域赛G题 Pyramid——找规律&&递推的相关文章

Heshen's Account Book HihoCoder - 1871 2018北京区域赛B题(字符串处理)

Heshen was an official of the Qing dynasty. He made a fortune which could be comparable to a whole country's wealth by corruption. So he was known as the most corrupt official in Chinese history. But Emperor Qianlong liked, or even loved him so much

1002. [FJOI2007]轮状病毒【找规律+递推】

Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不 同的3轮状病毒,如下图所示 现给定n(N<=100),编程计算有多少个不同的n轮状病毒 Input 第一行有1个正整数n Output 计算出的不同的n轮状病毒数输出 Sample Inpu

51nod 1350 斐波那契表示 (找规律递推)

分析: - -! 找规律...首先可以归纳证明,对于n,最佳的取法是先取不大于n的最大的那个斐波那契数,然后递推.从而可以得到算出F(n)的一个方法,但是n的范围太大了,先算出n较小的情况,会发现: 第三列为F(n),第二列为G(n),可以看出第k块是由k-1块和k-2块+1合在一起得到的,从而可以先预处理前k块之和(k不会超过100),然后对于每个n,先找到最大的不超过n的那块,然后对剩下的项递归,总的复杂度为O(T*logn). 1 #include<iostream> 2 #includ

ACM 2018 南京网络赛H题Set解题报告

题目描述 给定\(n\)个数$a_i$,起初第\(i\)个数在第\(i\)个集合.有三种操作(共\(m\)次): 1 $u$ $v$ 将第$u$个数和第$v$个数所在集合合并 2 $u$ 将第$u$个数所在集合所有数加1 3 $u$ $k$ $x$ 问$u$所在集合有多少个数模$2^k$余$x$. 数据范围:\(n,m \le 500000,a_i \le 10^9, 0 \le k \le 30\). 简要题解 显然此题可以用set加启发式合并在\(O(n \log ^2 n)\)时间复杂度解

hdu6223 Infinite Fraction Path 2017沈阳区域赛G题 bfs加剪枝(好题)

题目传送门 题目大意:给出n座城市,每个城市都有一个0到9的val,城市的编号是从0到n-1,从i位置出发,只能走到(i*i+1)%n这个位置,从任意起点开始,每走一步都会得到一个数字,走n-1步,会得到一个长度为n的数列,输出能得到的最大的数列(当成数字). 思路: 一个数字肯定是最高位越大,这个数字本身就越大,所以肯定第一位要取最大值,在这一位取最大值的时候后面每一位都要尽量最大,所以想到bfs. 但是bfs肯定要剪枝,怎么剪枝呢? 1.按照思路,我要取每一位尽可能大的值,所以某一个状态的某

踩方格(找规律 递推)

踩方格 时间限制: 1 Sec  内存限制: 128 MB提交: 8  解决: 7[提交][状态][讨论版][命题人:quanxing] 题目描述 有一个方格矩阵,矩阵边界在无穷远处.我们做如下假设: a.每走一步时,只能从当前方格移动一格,走到某个相邻的方格上: b.走过的格子立即塌陷无法再走第二次: c.只能向北.东.西三个方向走: 请问:如果允许在方格矩阵上走n步,共有多少种不同的方案.2种走法只要有一步不一样,即被认为是不同的方案. 输入 允许在方格上行走的步数n(n≤20). 输出 计

[暑假集训]区域赛套题集

2014-07-03 [浙江第11届省赛]ZOJ 3785 What day is that day?  (打表找循环节) [暑假集训]区域赛套题集

ACM-ICPC 2018徐州网络赛-H题 Ryuji doesn&#39;t want to study

C*M....死于update的一个long long写成int了 心累 不想写过程了 ******** 树状数组,一个平的一个斜着的,怎么斜都行 题库链接:https://nanti.jisuanke.com/t/31460 #include <iostream> #include <cstring> #define ll long long #define lowbit(x) (x & -x) using namespace std; const int maxn =

2017年ICPC中国大陆区域赛真题(下)

2017年ICPC中国大陆区域赛真题(下) A - Lovers #include <bits/stdc++.h> using namespace std; const int maxn=2e5+10; int n,k,a[maxn],b[maxn],ans; int main() { int _; scanf("%d", &_); while (_--) { scanf("%d%d", &n, &k); for (int i =