码迷,mamicode.com
首页 > 其他好文 > 详细

导弹拦截

时间:2020-01-29 14:11:50      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:贪心法   color   html   class   cstring   math   code   技术   typedef   

https://www.cnblogs.com/wsy107316/p/11502628.html

导弹拦截

技术图片

 

 技术图片

 

 解题思路:用nlogn的方法求第一问:最长不上升序列:方法链接

 

      用贪心法求第二问,遍历一遍

AC_Code:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <string>
 4 #include <cstring>
 5 #include <cmath>
 6 #include <memory>
 7 #include <queue>
 8 #include <vector>
 9 #include <set>
10 #include <map>
11 #include <stack>
12 #include <algorithm>
13 using namespace std;
14 typedef long long ll;
15 const int maxn = 100010;
16 
17 int a[maxn];
18 int dp[maxn];
19 int num;
20 
21 int main()
22 {
23     int n=0;
24     while( ~scanf("%d",&a[++n]) );
25     n--;
26 
27     int Array[maxn],cnt=0;
28     Array[0]=a[n];
29     for(int i=n-1;i>=1;i--){
30         if( a[i]>=Array[cnt]){
31             Array[++cnt]=a[i];
32         }
33         else{
34             int Index=upper_bound(Array,Array+cnt+1,a[i])-Array;
35             Array[Index]= a[i];
36         }
37     }
38     printf("%d\n",cnt+1);
39 
40     int i=2,j,flag[maxn]={0};
41     int k=0;
42     flag[k++]=a[1];
43     while( i<=n ){
44         for(j=0;j<k;j++){
45             if( a[i]<=flag[j] ){
46                 flag[j]=a[i];
47                 break;
48             }
49         }
50         if( j==k ) flag[k++] = a[i];
51         i++;
52     }
53 
54     printf("%d\n",k);
55     return 0;
56 }

 

导弹拦截

标签:贪心法   color   html   class   cstring   math   code   技术   typedef   

原文地址:https://www.cnblogs.com/wsy107316/p/12240061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!