摘要:
题意:求递增子序列的和的最大值。Analyse:一开始想到的居然是把每个格子的加或不加都计算一次然后放在数组里面,再想一下发觉这就是暴力了。之后还是想到了动态规划的方法,因为a[n]能不能加进去只跟之前的子序列最后一个元素的大小有关,所以如果a[n]能加进去某个子序列里面的话,只需要用到这个子序列的最优解(而不需要其他情况的),而且要使a[n]为尾的子序列的和最大,要选一个之前的最大的子序列。因此递推式为dp[n]=max{dp[i],i=0,1,2......n-1}+a[n]或dp[n]=a[n]。View Code 1 #include<iostream> 2 using n 阅读全文
posted @ 2012-08-21 19:44
Hogg
阅读(622)
评论(0)
推荐(0)
摘要:
题意:对给出的序列求最少的非升序列数目。Analyse:一开始以为用最长降序子序列来做,后来发现可以这样做:后面的数字如果比前面的所有子序列的最后一个都大,就必须要增加一个子序列(增加一个系统),否则可以添加到之前的子序列后面。View Code 1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 int a[100000]; 5 int main() 6 { 7 vector<int> dp; 8 vector<int>::size_type st; 9 int n, 阅读全文
posted @ 2012-08-21 11:01
Hogg
阅读(388)
评论(0)
推荐(0)

浙公网安备 33010602011771号