zoukankan      html  css  js  c++  java
  • hdu 1950 Bridging signals

    还是求最长上升子序列,DP中基础的一种。不过今天出了点问题,TLE了。经过提醒,我花了N个小时去看nlogn算法,总算A了。作为一个菜鸟,还真是没有骄傲的资本啊。

     1 #include<stdio.h>
    2 #define MAXN 40005
    3 int m,n;
    4 int c[MAXN],a[MAXN];
    5 int find(int *c,int len,int n)
    6 {
    7 //就是在n可以取代数组c中的数的条件下,
    8 //把n放到c中,n所对应的下标
    9 int left=0,right=len,mid;
    10 mid = (left+right)/2;
    11 while(left<=right)
    12 {
    13 if(c[mid] < n)
    14 left = mid + 1;
    15 else if(c[mid] > n)
    16 right = mid - 1;
    17 else return mid;
    18 mid = (left+right)/2;
    19 }
    20 return left;
    21 }
    22 int main()
    23 {
    24 int i,j,len;
    25 scanf("%d",&m);
    26 while(m--)
    27 {
    28 scanf("%d",&n);
    29 for(i = 0; i < n; i++)
    30 scanf("%d",&a[i]);
    31 c[0] = -1;
    32 c[1] = a[0];
    33 len = 1;
    34 for(i = 1; i < n; i++)
    35 {
    36 j = find(c,len,a[i]);
    37 c[j] = a[i];
    38 if(j > len)
    39 len++;
    40 }
    41 printf("%d\n",len);
    42 }
    43 return 0;
    44 }

    代码中的注释是我的个人理解。

  • 相关阅读:
    关于android4.3 Intel X86 Atom System Image的下载
    dp和px以及sp
    Android项目结构分析
    Performance Testing
    Modifying a Request or Response
    Log Sessions to Local Database
    The Web Sessions List
    Using QuickExec
    AutoResponder Reference
    Fiddler Session标志
  • 原文地址:https://www.cnblogs.com/lzxskjo/p/2430533.html
Copyright © 2011-2022 走看看