数论+差分 hdu1121 Complete the Sequence
2016-03-03 00:35
555 查看
数学真的是神奇啊
第一次见差分这个东西
对于数列a1 , a2 , a3 , a4
a2-a1,a3-a2,a4-a3 为一阶差分(b1,b2,b3)
b2-b1,b3-b2 为二阶差分
然后对于题目中的这种多项式 P(n) = aD.n^D+aD-1.n^D-1+...+a1.n+a0
p 的D-1阶差分就绝对可以得到一个常数(这个可以证明)!!!差分是处理多项式很重要的一个思想
对于多项式的题,多用数学归纳法,以及也可以对式子的化简,也可以从小到大找到其中的规律,或者采用搜索的方式处理
现在我们在D-1阶差分的结果后面加上c个数,往回推就可以得到后面的c个数
加c个数加什么数呢,,,,
加的是D-1阶差分这个数,,,,
要是阶数越小,我们在越小的差分就可以得到一串相同的数字。。。。这个要自己想想
代码如下
第一次见差分这个东西
对于数列a1 , a2 , a3 , a4
a2-a1,a3-a2,a4-a3 为一阶差分(b1,b2,b3)
b2-b1,b3-b2 为二阶差分
然后对于题目中的这种多项式 P(n) = aD.n^D+aD-1.n^D-1+...+a1.n+a0
p 的D-1阶差分就绝对可以得到一个常数(这个可以证明)!!!差分是处理多项式很重要的一个思想
对于多项式的题,多用数学归纳法,以及也可以对式子的化简,也可以从小到大找到其中的规律,或者采用搜索的方式处理
现在我们在D-1阶差分的结果后面加上c个数,往回推就可以得到后面的c个数
加c个数加什么数呢,,,,
加的是D-1阶差分这个数,,,,
要是阶数越小,我们在越小的差分就可以得到一串相同的数字。。。。这个要自己想想
代码如下
/* ID: meixiny1 PROG: test LANG: C++11 */ //差分求数列 #include <cstdio> #include <cstdlib> #include <iostream> #include <algorithm> #include <cstring> #include <climits> #include <string> #include <vector> #include <cmath> #include <stack> #include <queue> #include <set> #include <map> #include <sstream> #include <cctype> using namespace std; typedef long long ll; typedef pair<int ,int> pii; #define MEM(a,b) memset(a,b,sizeof a) #define CLR(a) memset(a,0,sizeof a); const int inf = 0x3f3f3f3f; const int MOD = 1e9 + 7; #define PI 3.1415926535898 //#define LOCAL int dp[101][101]; int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); // freopen("out.txt","w",stdout); #endif int t;scanf("%d",&t); while(t--){ int n,m;scanf("%d%d",&n,&m); for(int i=0;i<n;i++)scanf("%d",&dp[0][i]); for(int i=1;i<n;i++){ for(int j=0;j<n-i;j++){ dp[i][j] = (dp[i-1][j+1]-dp[i-1][j]); } } for(int i=1;i<=m;i++){ dp[n-1][i] = dp[n-1][0]; } for(int i=n-2;i>=0;i--){ for(int j=1;j<n+m;j++){ dp[i][j]=dp[i+1][j-1]+dp[i][j-1]; } } for(int i=n;i<m+n-1;i++){ printf("%d ",dp[0][i]); } printf("%d\n",dp[0][m+n-1]); } return 0; }
相关文章推荐
- apue file i/o 学习笔记
- 微信团队讲课笔记 Android 开发(二)UI设计
- UINavigationBar UINavigationItem UIBarButtonItem
- 数字及字母混合的验证码
- easyui tabs中href和content加载
- github-MJRefresh(UI)
- SQLite数据中修改某列,对已存在的某列添加UNIQUE约束
- 自定义一个带下划线的UILable
- StringBuilder 与 StringBuffer 源码分析
- 【CodeForces】612C - Replace To Make Regular Bracket Sequence(栈,括号配对问题)
- UIView与CALayer的区别,很详细
- iOS_SN_UITableView的优化
- mvn deploy 报错:Return code is: 400, ReasonPhrase: Bad Request. ->
- LCS(Longest Common Subsequence)算法
- 谁将引领未来高清音频!杜比TrueHD对比DTS-HD
- iOS_SN_BlueTooth (二)iOS 连接外设的代码实现
- Educational Codeforces Round 9 D. Longest Subsequence dp
- Android酷炫实用的开源框架(UI框架)
- UVA - 1252 Twenty Questions(状态压缩&记忆化搜索)
- IOS面试题总结--UIView和CALayer的层级关系和区别