隨筆 - 11  文章 - 2  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          新聞分類

          link

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          import java.util.*;

          public class hd1025 {

              /**
               * @param args
               */
                  public static void main(String[] args) {
                  // TODO 自動生成方法存根
                  Scanner s = new Scanner(System.in);
                  int c=0;
                  while (s.hasNextInt()) {
                      int n=s.nextInt();
                      int a[]=new int[n];
                      int amax[]=new int[n];
                      int len=0;
                      for(int i=0;i<n;i++){
                          int no=s.nextInt();
                          a[no-1]=s.nextInt();   
                      }
                      for(int i=0;i<n;i++){
                          int l=0,r=len-1;
                          int m;
                          while(l<=r){
                              m = (l + r)/2;
                              if(a[i] < amax[m])
                               r = m-1;
                              else
                               l = m+1;
                          }
                          if (l != len)
                              amax[l] = a[i];
                          else
                              amax[len++] = a[i];
                      }
                      c++;
                      System.out.println("Case"+c+":");   
                      if(len==1)
                          System.out.println("My king, at most "+len+" road can be built.");
                      else
                          System.out.println("My king, at most "+len+" roads can be built.");
                      System.out.println();   
                  }
                   s.close();   
              }

          }
          //***********************************************java代碼******************************************************
          #include <iostream>
          using namespace std;

          int a[500000],amax[500000];
          int main()
          {
              int n;
              int c=1;
              while(scanf("%d",&n)==1)
              { 
                  int len = 0;
                  for(int j=0; j<n; j++)
                  {
                      int no;
                      scanf("%d",&no);
                      scanf("%d",&a[no-1]);
                  }
                  for(j=0; j<n; j++)
                  {   
                      //二分查找
                      int l=0,r=len-1;
                      int ma = 0;
                     
                      while(l<=r)
                      {
                          ma = (l + r)/2;
                          if(a[j] < amax[ma])
                              r = ma-1;
                          else
                              l = ma+1;
                      }
                      if(l != len)
                          amax[l] = a[j];
                      else
                          amax[len++]=a[j];
                  }   
                  printf("Case %d:\n",c++);
                  if(len==1)
                      printf("My king, at most %d road can be built.\n\n",len);
                  else
                      printf("My king, at most %d roads can be built.\n\n",len);
              }
              return 0;
          }
          //************************************************c++代碼********************************************************
          注:本題其實就是求最長遞增子序列,采用動態規劃算法,具體上上網查找相關....
              另本題中要注意對輸入的序列排序
              在算法一樣的情況下,java代碼不能提交成功,說運行超時,C++代碼沒問題,能AC......

          posted on 2008-06-11 03:52 poower 閱讀(192) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 增城市| 原平市| 浪卡子县| 格尔木市| 南岸区| 读书| 瑞昌市| 聊城市| 蓝山县| 香港| 湘潭县| 澜沧| 特克斯县| 涿州市| 贡嘎县| 永川市| 潮州市| 缙云县| 睢宁县| 尚志市| 漠河县| 白沙| 远安县| 海门市| 斗六市| 云阳县| 玉环县| 三亚市| 大宁县| 永兴县| 天峻县| 菏泽市| 惠水县| 德兴市| 攀枝花市| 辉南县| 抚顺县| 江永县| 湛江市| 石阡县| 芒康县|