NYOJ 236 心急的C小加

NYOJ 236 心急的C小加

时间限制:1000 ms  |  内存限制:65535 KB
难度:4
 
描述

C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?

 
输入
第一行是一个整数T(1<T<1500),表示输入数据一共有T组。
每组测试数据的第一行是一个整数N(1<=N<=5000),表示有N个木棒。接下来的一行分别输入N个木棒的L,W(0 < L ,W <= 10000),用一个空格隔开,分别表示木棒的长度和质量。
输出
处理这些木棒的最短时间。
样例输入
3 
5 
4 9 5 2 2 1 3 5 1 4 
3 
2 2 1 1 2 2 
3 
1 3 2 2 3 1 
样例输出
2
1
3
 1 #include<iostream>
 2 #include<algorithm>
 3  
 4 #define MAX(a,b)(a>b?a:b)
 5 using namespace std;
 6 struct Ww{
 7        int l,w;
 8        bool f;
 9        };
10        
11  bool com(const Ww &a,const Ww &b){
12  
13   if(a.l<b.l) return true;
14   if(a.l==b.l&&a.w<b.w) return true;
15  
16  
17  return false;
18    
19 }
20  
21        
22 int main(){
23   //freopen("236.txt","r",stdin);
24  int t,n,tmp;
25  cin>>t;
26  while(t--){   
27  cin>>n;
28   Ww a[n];
29  for(int i=0;i<n;i++){
30   cin>>a[i].l;     
31   cin>>a[i].w; 
32   a[i].f=true;    
33                      }
34                    
35  sort(a,a+n,com);
36  
37  int minT=0;
38  
39  
40          for(int i=0;i<=n-1;i++) 
41         {  
42             if(a[i].w!=0) 
43             {  
44                 tmp=a[i].w;  
45                 minT++;  
46                 for(int j=i+1;j<=n-1;j++)  
47                 {  
48                     if(a[j].w>=tmp)  
49                     {  
50                         tmp=a[j].w; 
51                         a[j].w=0; 
52                     }  
53                 }  
54             }  
55  
56 
57 }
58      cout<<minT<<endl; 
59 }
60 return 0;
61 }
原文地址:https://www.cnblogs.com/zdcaolei/p/2484807.html