1.题目描述:点击打开链接
2.解题思路:本题利用加法原理解决,设第k次累加之和为数字n的方案有d(n,k)种,那么不难得到如下递推式:
d(n,k)=sum{d(n-pi,k-1)}(n-pi≥0)
其中pi代表第i个素数,这不难理解,假设第k-1次累加后数字之和为n-pi,方案有d(n-pi,k-1)种,第k次只有一种方案,就是加上pi。那么根据乘法原理知道,最后一步加上pi而得到数字n...
分类:
其他好文 时间:
2015-04-20 18:31:39
阅读次数:
114
时间限制:2000ms
单点时限:1000ms
内存限制:256MB
描述
给定字符串,求它的回文子序列个数。回文子序列反转字符顺序后仍然与原序列相同。例如字符串aba中,回文子序列为"a", "a", "aa", "b", "aba",共5个。内容相同位置不同的子序列算不同的子序列。
输入
第一行一个整数T,表示数据组数。之后是T组数据,每组数据为一行字符串。...
分类:
其他好文 时间:
2015-04-20 15:04:56
阅读次数:
141
之前写过一篇矩阵的总结,但那时题目做得很少.点击打开链接
这次刷了个专题,写个总结 点击打开链接
水题:
A.典型的斐波那契递推构造
B.矩阵构造,就是按列递推
C.水题
G.水题
结合/技巧问题:
就是有的时候要计算C=A*B C^N.这时候可能A * B的范围很大,那么就算A*(B*A)^(N-1)*B即可
E结合
H S(N)=A+A^2+A^3+A^4+........
分类:
其他好文 时间:
2015-04-20 11:16:38
阅读次数:
176
http://blog.sina.com.cn/s/blog_61bebe480100v7c7.html基本的C++算法分为三类:排序算法、树算法、图算法算法思想有三种:递推、分治、动态规划 以及 贪心算法。本文将简要介绍上面三类算法,介绍时穿插介绍算法思想。一、排序算法1、基本O(n^2)排序算法...
分类:
编程语言 时间:
2015-04-20 10:51:33
阅读次数:
201
多米诺gu牌覆盖问题也是经典的题目了,主要是由1*k的牌覆盖m*n的矩阵之类的。有递推求解的,也有的如下:如POJ 2411,由1*2的小矩形去覆盖m*n的矩形,问有多少种方案。这道题其实只要计算出上下两行之前的可能存在的状态转换,这样就很容易求解了。如下:void dfs(int pre,int ...
分类:
其他好文 时间:
2015-04-19 17:24:31
阅读次数:
201
用递推的方式,把牛分成两种,找对应关系
今天突然发现原来这种题也是DP,以前总觉得是找规律什么的,一通乱搞
总结一下目前遇到的两道DP题,DP的递推按时间线和路径线,还有把结果进行分类,这些地方都挺重要的
#include
int dp[60][2];//dp[i][0]:第i天大牛数 dp[i][1]:第i天小牛数
int main(){
int n;
#ifndef ONLIN...
分类:
其他好文 时间:
2015-04-19 07:49:51
阅读次数:
103
一道经典的DP,对于DP问题,关键是要找准决策点,即需要做出决策的选择点。
本题有两个枚举点,一个是时间N,还有一个是挤奶的时间区间M; 然而枚举每个时间点是没有意义的,而且时间的范围很大,所以可以直接枚举挤奶的时间区间,dp[i]指的就是在第i个时间区间挤奶所获得的最大收益。递推公式dp[i] = max(dp[i],dp[j]+a[i].e);
#include
#include
#inc...
分类:
其他好文 时间:
2015-04-18 17:47:08
阅读次数:
131
题目大意:
有一个大小2*N的矩形地板,用规格为2*2和2*1的瓷砖方块去填满它,共有多少种方案
思路:
设长度为N的矩形地板共有F[N]种方案。共有三种放法:
先放一块2*2瓷砖方块,则F[N] = F[N-2]。
先放两块横着的1*2的瓷砖,则F[N] = F[N-2]。
先放一块竖着的2*1的瓷砖,则F[N] = F[N-1]。
总和一下,就是:F[N] = F[N-1] + 2*F[N-2]。
因为0 <= N <= 250,所以要用到高精度。用整型数组F[][]来计算,然后用字符型数组Fi[][...
分类:
其他好文 时间:
2015-04-18 10:05:13
阅读次数:
130
题目大意:
定义fibonacci数列前两项f[1] = 1,f[2] = 2。现在给你一个区间[a,b],a <= b <= 10^100。
问:区间[a,b]之间有多少个fibonacci数。
思路:
a、b的规模很大,是个100位10进制的数。所以要用数组模拟大整数加法求fibonacci数列。用整型
二维数组F[i][]表示第i个fibonacci数,因为从个位倒着存入数组方便进位,所以F[i][]数组中的数是倒
着的。第480个fibonacci数是101位,先求出前480个fibonacci数...
分类:
其他好文 时间:
2015-04-18 10:04:34
阅读次数:
177