zoukankan      html  css  js  c++  java
  • hdu 1025 lis 注意细节!!!【dp】

    感觉这道题浪费了我半个小时的生命。。。。。。哇靠!原来输出里面当len=1时是road否则是roads!!!

    其实做过hdu 1950就会发现这俩其实一样,就是求最长上升子序列。我用结构体记录要连线的两个city,对一个数组排序再求相应的另一个数组lis。 开始WA还以为我写错了, 造了数据测一下没错啊。。。又想是不是情况没考虑全,比如一个城市可以连好多城市,好多城市可以连一个城市???巴拉巴拉。。。后来发现只可以一对一啊。。。。死在这种细节上真的是欲哭无泪。。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 const int INF=0x3f3f3f3f;
     7 const int MAXN = 500050;
     8 struct Node{
     9     int p,r;
    10 };
    11 Node a[MAXN];
    12 int dp[MAXN],t[MAXN];
    13 int len=1;
    14 
    15 bool cmp(Node a,Node b)
    16 {
    17     if(a.p==b.p)
    18         return a.r<b.r;
    19     return a.p<b.p;
    20 }
    21 
    22 int bin_search(int key)
    23 {
    24     int low,high,mid;
    25     low=0,high=len;
    26     while(low<high)
    27     {
    28         mid=(low+high)>>1;
    29         if(t[mid]>=key)
    30             high=mid;
    31         else low=mid+1;
    32     }
    33     return low;
    34 }
    35 
    36 int main()
    37 {
    38     int N;
    39     int cas=1;
    40     while (scanf("%d", &N) == 1)
    41     {
    42         for (int i = 0; i < N; i++) {
    43             scanf("%d%d",&a[i].p,&a[i].r);
    44             dp[MAXN]=INF;
    45         }
    46         sort(a,a+N,cmp);
    47         len=1;
    48         t[0]=a[0].r;
    49         for(int i=1;i<N;i++){
    50             if(a[i].r>t[len-1])
    51                 t[len++]=a[i].r;
    52             else{
    53                 int pos=bin_search(a[i].r);
    54                 t[pos]=a[i].r;
    55             }
    56         }
    57         if(len==1)
    58 
    59         printf("Case %d:
    My king, at most %d road "
    60               "can be built.
    
    ",cas++,len);
    61         else
    62         printf("Case %d:
    My king, at most %d roads "
    63               "can be built.
    
    ",cas++,len);
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    Spring实现AOP
    js Form表单转json格式,及后台接收(多种方法)
    Java 网络编程
    分布式系统学习
    java消息中间件
    oracle Clob类型转换成String类型
    Oracle的CLOB大数据字段类型
    oracle wm_concat函数 列转行 分组函数
    Oracle trunc函数使用
    ajax异步提交文件
  • 原文地址:https://www.cnblogs.com/zxhyxiao/p/7423176.html
Copyright © 2011-2022 走看看