zoukankan      html  css  js  c++  java
  • hdu 1025 Constructing Roads In JGShining’s Kingdom 【dp+二分法】

    主题链接:http://acm.acmcoder.com/showproblem.php?pid=1025

    题意:本求最长公共子序列。但数据太多。

    转化为求最长不下降子序列。太NB了。复杂度n*log(n).

    解法:dp+二分

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <vector>  
    #include <string>  
    #include <algorithm>  
    #include <iostream>
    #include <iterator>
    #include <fstream>
    #include <set>
    #include <map>
    #include <math.h>
    
    using namespace std;
    
    const int MAXN = 500010;
    
    int n, pos;
    int a[MAXN];
    int dp[MAXN];
    int h, k;
    
    int search(int num,int low,int high)
    {
        int mid;
        while (low <= high)
        {
            mid = (low + high) / 2;
            if (num >= dp[mid]) low = mid + 1;
            else high = mid - 1;
        }
        return low;
    }
    
    int main()
    {
        int cases = 1;
        while (~scanf("%d", &n))
        {
            for (int i = 1; i <= n; i++)
            {
                scanf("%d%d", &h, &k);
                a[h] = k;
            }
            memset(dp, 0, sizeof(dp));
            dp[0] = -1; dp[1] = a[1];
            int len = 1;
            //  n*log(n) 求解
    
            for (int i = 2; i <= n; i++)
            {
                if (a[i] >= dp[len])
                {
                    len = len + 1;
                    dp[len] = a[i];
                }
                else
                {
                    pos = search(a[i],1,len);
                    dp[pos] = a[i];
                }
            }
            printf("Case %d:
    ",cases++);
            if (len == 1)
                printf("My king, at most %d road can be built.
    
    ",len);
            else 
                printf("My king, at most %d roads can be built.
    
    ",len);
        }
        return 0;
    }

    版权声明:转载请注明出处。

  • 相关阅读:
    学习JavaDay07
    学习JavaDay05
    学习JavaDay0402
    学习JavaDay04
    学习JavaDay03
    学习JavaDay02
    学习JavaDay01
    数据库的增删改查
    关于Spring
    关于多线程Thread的简单应用
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4808048.html
Copyright © 2011-2022 走看看