• HDOJ 2037


      1 #include<iostream>
      2 using namespace std;
      3 
      4 #include<vector>
      5 #include<math.h>
      6 #include<iomanip>
      7 #include<string.h>
      8 
      9 void swap(int &a,int &b)
     10 {
     11         int c = a;
     12         a = b;
     13         b = c;
     14 }
     15 
     16 int partition(vector<int> &vs,vector<int> &ve,int start,int end)
     17 {
     18         int a = vs[start];
     19         int b = ve[start];
     20         while(start < end)
     21         {
     22                 while(start < end && vs[end] >= a) --end;
     23                 if(start < end)
     24                 {
     25                         vs[start] = vs[end];
     26                         ve[start] = ve[end];
     27                 }
     28                 while(start < end && vs[start] <= a) ++start;
     29                 if(start < end)
     30                 {
     31                         vs[end] = vs[start];
     32                         ve[end] = ve[start];
     33                 }
     34         }
     35         vs[start] = a;
     36         ve[start] = b;
     37         return start;
     38 }
     39 
     40 void quickSort(vector<int> &vs,vector<int> &ve,int start,int end)
     41 {
     42         if(start < end)
     43         {
     44                 int pos = partition(vs,ve,start,end);
     45                 quickSort(vs,ve,start,pos-1);
     46                 quickSort(vs,ve,pos+1,end);
     47         }
     48 }
     49 
     50 int max(int count[],int start,int end)
     51 {
     52         int c = count[start];
     53         for(int i = start+1;i < end;i++)
     54         {
     55                 if(c < count[i]) c = count[i];
     56         }
     57         return c;
     58 }
     59 
     60 int findFirst(vector<int> vs,int a,int end)
     61 {
     62         int i = 0;
     63         while(vs[i] < a && i <= end) i++;
     64         if(i > end) return -1;
     65         return i;
     66 }
     67 
     68 int main()
     69 {
     70         int n,s,e,c,maxcount;
     71         while(cin>>n && n != 0)
     72         {
     73                 c = 0;
     74                 int count[n],i;
     75                 memset(count,0,sizeof(int)*n);
     76                 vector<int> vs,ve;
     77                 for(i = 0;i < n;i++)
     78                 {
     79                         cin>>s>>e;
     80                         vs.push_back(s);
     81                         ve.push_back(e);
     82                 }
     83                 quickSort(vs,ve,0,vs.size()-1);
     84                 for(i = 1;i < vs.size();)
     85                 {
     86                         while(vs[i] == vs[i-1])
     87                         {
     88                                 ++c;
     89                                 ++i;
     90                         }
     91                         quickSort(ve,vs,i-c-1,i-1);
     92                         c = 0;
     93                         ++i;
     94                 }
     95                 i = vs.size()-1;
     96                 while(vs[i] == vs[i-1])
     97                 {
     98                         count[i] = 1;
     99                         --i;
    100                 }
    101                 count[i] = 1;
    102                 --i;
    103                 maxcount = 1;
    104                 for(;i >= 0;--i)
    105                 {
    106                         int start = findFirst(vs,ve[i],vs.size()-1);
    107                         if(start == -1)
    108                         {
    109                                 count[i] = 1;
    110                                 continue;
    111                         }
    112                         count[i] = 1+max(count,start,vs.size()-1);
    113                         if(maxcount < count[i]) maxcount = count[i];
    114                 }
    115 
    116                 cout<<maxcount<<endl;
    117         }
    118 
    119         return 0;
    120 }
  • 相关阅读:
    WINCE/WM5.0如何让安装完后自动运行程序
    Android 图片透明度处理代码
    windows mobile UI 自定义开始菜单图标
    Windows mobile 6捕获键盘操作
    HTTP的post和get总结
    提供一个Windows mobile Native UI 程序,循序渐进开发,并附有代码!
    Windows Mobile 中ComboBox【下拉列表】的使用
    注册表修改今日桌面左右软键的功能
    .net compact framework 注册表操作
    两种实现Toast 的例子(图片&文字)
  • 原文地址:https://www.cnblogs.com/maowang1991/p/2806121.html
Copyright © 2020-2023  润新知