~~~~
两道题的意思差不多,HDU上是求最长上升子序列的和,而POJ上就的是其长度。
貌似还有用二分写的nlogn的算法,不过这俩题n^2就可以过嘛。。
~~~~
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1087
http://poj.org/problem?id=2533
~~~~
HDU1087:
#include...
分类:
其他好文 时间:
2014-08-02 23:30:15
阅读次数:
243
有一个正整数序列,求最短的子序列使得其和大于等于S,并输出最短的长度。用数组b[i]存放序列的前i项和,所以b[i]是递增的。遍历终点j,然后在区间[0, j)里二分查找满足b[j]-b[i]≥S的最大的i,时间复杂度为O(nlongn)。这里二分查找用到库函数lower_bound() 1 //#...
分类:
其他好文 时间:
2014-08-02 23:20:54
阅读次数:
269
题目链接:Codeforces Round #259 (Div. 2) B. Little Pony and Sort by Shift
求给出的序列最少移动多少次成为非下降序列。移动方式:只能将最后一个元素移到第一个位置 即:a1,?a2,?...,?an?→?an,?a1,?a2,?...,?an?-?1.
从后前开始搜非下降的子序列,然后前面的子序列接在其后面,最后判断变化后的...
分类:
其他好文 时间:
2014-08-02 15:40:43
阅读次数:
273
题意:U A B: 把第A个数变成BQ A B: 输出【A,B】最长连续上升子序列(注意是连续 相当于子串)思路:单点更新 ,区间合并几下左边开头最小 和右边结束最大的两个数即可。#include#include#include#include#include #define lson (iy?x:...
分类:
其他好文 时间:
2014-08-02 15:10:23
阅读次数:
171
http://acm.hdu.edu.cn/showproblem.php?pid=3308题意: 两个操作 : 1 修改 单点 a 处的值。 2求出 区间【a,b】内的最长上升子序列。做法:线段树区间合并。了解线段树的具体含义很容易。1//bycaonima2//hehe3#include4#.....
分类:
其他好文 时间:
2014-08-01 22:30:42
阅读次数:
227
说明:这道题初读有点绕....开始我以为只是将一个序列的最大值放到最右边,把最小值放到最左边...所以就怎么也通不过啦。后来终于理解题意了,其实就是要你排个序,从左到右为从大到小。但是改变序列顺序的规则有些特殊,即只能将从最左边开始到某一位置构成的连续子序列进行对称翻转。如有序列: 2,4,9,5,7,6.我选择的位置是5所在的位置,翻转后序列就变为5,9,4,2,7,6.然后用类似于冒泡排序的...
分类:
其他好文 时间:
2014-08-01 19:51:32
阅读次数:
267
问题:一个由正数、负数、0组成的序列中,求一个连续子序列,使他们之和最大解一:暴力法,直接求出所有可能,找出最大值 1 MAX_SEQ_SUM( A, len ) 2 max = A[0] 3 max_b = max_e = 0 4 5 for i -> 0:len-1 6...
分类:
其他好文 时间:
2014-08-01 19:12:22
阅读次数:
208
最长上升子序列、最长不下降子序列,解法差不多,就一点等于不等于的差别,我这里说最长不下降子序列的。有两种解法。一种是DP,很容易想到,就这样:1 REP(i,n)2 {3 f[i]=1;4 FOR(j,0,i-1)5 ...
分类:
其他好文 时间:
2014-08-01 18:49:52
阅读次数:
361
简单的DP。f[i][j]表示序列a中前i个中,序列b中前b个中,组成的最长公共子序列的长度。DP方程:if(a[i-1]==b[j-1]) f[i][j]=f[i-1][j-1]+1; else f[i][j]=max(f[i-1][j],f[i][j-1]);(我这个a下标是从0开始,f是从1开...
分类:
其他好文 时间:
2014-08-01 18:46:32
阅读次数:
209
1.快速排序假设待排序的序列为L[m...n],而一趟排序目的就是将其分割为两个子序列,分别为L[m...middle-1]和L[middle+1...n],其中L[m...middle-1]中的每个元素都小于L[middle],而L[middle+1...n]中的每个元素都大于L[middle]递...
分类:
其他好文 时间:
2014-08-01 18:33:12
阅读次数:
203