[DP/贪心] HDU 1257
2017-12-15 22:58
375 查看
题意
求有多少个递减序列
思路
反过来,转换成求整个系列有多少个LIS,则是所求的组数
正常想就是贪心
代码
dp
贪心
求有多少个递减序列
思路
反过来,转换成求整个系列有多少个LIS,则是所求的组数
正常想就是贪心
代码
dp
#include <cstdio> #include <cstring> #include <iostream> using namespace std; const int maxn = 10000; int a[ maxn ]; int dp[ maxn ]; int n; int LIS () { dp[ 1 ] = 1; int ans = 1; for ( int i = 2; i <= n; i++ ) { dp[ i ] = 1; for ( int j = 1; j < i; j++ ) { if ( dp[ j ] + 1 > dp[ i ] && a[ j ] < a[ i ] ) dp[ i ] = dp[ j ] + 1; } if ( dp[ i ] > ans ) ans = dp[ i ]; } return ans; } int main () { while ( cin >> n ) { for ( int i = 1; i <= n; i++ ) cin >> a[ i ]; cout << LIS () << endl; } return 0; }
贪心
#include <cstring> #include <iostream> #define N 3005 #define INF 0x7f7f7f7f using namespace std; int k = 0; int val; int ed[ N ]; int search ( int v ) { for ( int i = 0; i < k; ++i ) if ( ed[ i ] > v ) return i; return 0; } int main () { int n; while ( ~scanf ( "%d", &n ) ) { k = 1; for ( int i = 0; i < n; ++i ) { scanf ( "%d", &val ); int idx = search ( val ); if ( idx ) ed[ idx ] = val; else ed[ k++ ] = val; } printf ( "%d\n", k - 1 ); } return 0; }
相关文章推荐
- HDU 1257 最少拦截系统【贪心】【DP】
- hdu 1257 最少拦截系统(贪心,dp)
- HDU 1257 最少拦截系统 (DP || 贪心)
- HDU:1257 最少拦截系统(贪心+动态规划DP||LIS?)
- hdu 1257 最少拦截系统(简单dp+贪心)
- 最少拦截系统 - HDU 1257 贪心 或 dp
- HDU 1257 最少拦截系统(基础DP,贪心)
- HDU-1257 最少拦截系统 贪心/DP 最长上升子序列的长度==最长不上升子序列的个数?
- hdu 1257 dp+贪心
- hdu 1257 最少拦截系统【贪心 || DP——LIS】
- 【HDU】-1257-最少拦截系统-(贪心||DP)
- hdu 1257 最少拦截系统【贪心 || DP——LIS】
- HDU 1257 最少拦截系统(贪心 || dp)
- POJ 1065 Wooden Sticks / hdu 1257 最少拦截系统 DP 贪心
- HDU 1421 搬寝室 (线性dp 贪心预处理)
- C语言贪心(3)___最少拦截系统(Hdu 1257)
- 2017 Multi-University Training Contest 10 && HDU 6178 Monkeys 【贪心||树形DP】
- hdu 1257 最少拦截系统(贪心)(简单)
- hdu 1913 computer 部分贪心+一维dp 解题报告
- hdu 1257 最少拦截系统(dp)