zoukankan      html  css  js  c++  java
  • 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;
    }

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

  • 相关阅读:
    [NOI2008] 糖果雨
    [NOI2006] 神奇口袋
    [NOI2014] 购票
    Prince and Princess HDU
    Network POJ
    CodeForces
    Codeforces Global Round 12
    Codeforces Round #688 (Div. 2)
    [USACO05DEC]Layout G
    # Technocup 2021
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/5010989.html
Copyright © 2011-2022 走看看