• BZOJ 1489: [HNOI2009]双递增序( dp )


    dp(i, j)表示选第i个, 且当前序列长度为j, 另一个序列的最后一个元素的最小值...然后根据上一个是哪个序列选的讨论一下就行了...奇怪的dp... 

    -------------------------------------------------------------

    #include<cstring>
    #include<cstdio>
    #include<algorithm>
     
    using namespace std;
     
    const int INF = 0X3F3F3F3F;
    const int maxn = 2009;
     
    int dp[maxn][maxn], seq[maxn], N;
     
    int main() {
    int T;
    scanf("%d", &T);
    while(T--) {
    scanf("%d", &N);
    for(int i = 1; i <= N; i++) scanf("%d", seq + i);
    seq[0] = -1;
    memset(dp, INF, sizeof dp);
    dp[0][0] = -1;
    for(int i = 1; i <= N; i++)
    for(int j = 0; j <= i; j++) {
    if(dp[i - 1][i - j] < seq[i]) dp[i][j] = seq[i - 1];
    if(seq[i - 1] < seq[i]) 
    dp[i][j] = min(dp[i][j], dp[i - 1][j]);
    }
    puts(dp[N][N / 2] != INF ? "Yes!" : "No!");
    }
    return 0;
    }

    ------------------------------------------------------------- 

  • 相关阅读:
    mysql热备脚本
    linux系统编程-进程
    15-模块
    14-面向对象3
    13-面向对象2
    12-面向对象1
    02-对比两个文件的差异
    11-面向对象基础
    08-不定长函数
    07-缺省参数
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/5010989.html
Copyright © 2020-2023  润新知