Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8963 Accepted Submission(s): 3476
1 #include <iostream> 2 #include <iomanip> 3 #include <fstream> 4 #include <sstream> 5 #include <algorithm> 6 #include <string> 7 #include <set> 8 #include <utility> 9 #include <queue> 10 #include <stack> 11 #include <list> 12 #include <vector> 13 #include <cstdio> 14 #include <cstdlib> 15 #include <cstring> 16 #include <cmath> 17 #include <ctime> 18 #include <ctype.h> 19 using namespace std; 20 21 int main() 22 { 23 int n; 24 int i,j; 25 int record[10002]; 26 int temp; 27 int cnt; 28 while(~scanf("%d",&n)) 29 { 30 cnt=0; 31 scanf("%d",&record[0]); 32 for(i=1;i<n;i++) 33 { 34 sort(record,record+cnt+1); 35 scanf("%d",&temp); 36 for(j=cnt;j>=0;j--) 37 { 38 if(temp>record[j]) 39 { 40 record[++cnt]=temp; 41 break; 42 } 43 else if(j==0) 44 { 45 record[j]=temp; 46 } 47 else if(record[j]>=temp&&record[j-1]<=temp) 48 { 49 record[j]=temp; 50 break; 51 } 52 } 53 } 54 printf("%d\n",cnt+1); 55 } 56 return 0; 57 }
http://blog.csdn.net/a_eagle/article/details/7237067
这哥们儿代码就写的好:
1 #include<stdio.h>//**dp[i]表示第i个导弹飞过来时需要的最少拦截装置.**// 2 int main() 3 { 4 int n,i,j,max,h[10001],dp[10001]; 5 while(~scanf("%d",&n)) 6 { 7 max=-1; 8 dp[0]=0; 9 for(i=1;i<=n;i++) 10 { 11 scanf("%d",&h[i]);//**飞来的高度**// 12 dp[i]=1;//**初始化拦截装置都为1**// 13 } 14 for(i=1;i<=n;i++) 15 { 16 for(j=i-1;j>=0;j--) 17 { 18 if(h[i]>h[j]&&dp[i]<dp[j]+1)//**如果在拦截中出现了非单调递减的**// 19 { 20 dp[i]=dp[j]+1; 21 } 22 } 23 } 24 for(i=1;i<=n;i++) 25 { 26 if(dp[i]>max) 27 { 28 max=dp[i]; 29 } 30 } 31 printf("%d\n",max); 32 } 33 return 0; 34 }
这段代码有点看不懂:
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n; 6 int str[1001]; 7 while(cin>>n) 8 { 9 int i,j; 10 for(i=0;i<n;i++) 11 cin>>str[i]; 12 int count(0); 13 j=n; 14 int max; 15 while(j) 16 { 17 count++; 18 max=35000; 19 for(i=0;i<n;i++) 20 { 21 if(str[i]!=-1&&str[i]<=max) 22 { 23 j--; 24 max=str[i]; 25 str[i]=-1; 26 } 27 } 28 } 29 cout<<count<<endl; 30 } 31 return 0; 32 }
某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。
2 8 389 207 155 300 299 170 158 65 3 88 34 65
6 2
code:
1 2 3 #include<stdio.h> 4 int main() 5 { 6 int s,n,i,j,max,h[101],dp[101]; 7 scanf("%d",&s); 8 while(s--) 9 { 10 max=-1; 11 dp[0]=0; 12 scanf("%d",&n); 13 for(i=0;i<=n-1;i++) 14 { 15 scanf("%d",&h[i]); 16 dp[i]=1; 17 } 18 for(i=1;i<=n-1;i++) 19 { 20 for(j=i-1;j>=0;j--) 21 { 22 if(h[i]<h[j]&&dp[i]<dp[j]+1) 23 { 24 dp[i]=dp[j]+1; 25 } 26 } 27 } 28 for(i=0;i<=n-1;i++) 29 { 30 if(dp[i]>max) 31 { 32 max=dp[i]; 33 } 34 } 35 printf("%d\n",max); 36 } 37 return 0; 38 }