心急的C小加

                                        问题 C: 心急的C小加
                                    时间限制: 1 Sec  内存限制: 128 MB
                                       提交: 21  解决: 3
                                        [提交][状态][讨论版]
      题目描述
  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
提示
数据多组输入

发现了一个令人沉醉的问题  尼玛总是忘了 +  return

fuck   错了好几次  愣是没发现.  下面附上代码.                                   还有这一道题应该改成 大于等于     才能对应着  输入输出数据

 1 #include<stdio.h>
 2 #include<algorithm>
 3 struct boom
 4 {
 5     int weight,hight;
 6 };
 7 using namespace std;
 8 boom a[5050];
 9 bool cmp(boom a,boom b)  //从小到大 排序
10 {
11     if(a.weight<b.weight)
12         return true;
13     if(a.weight==b.weight&&a.hight<b.hight)
14        return true;
15     else
16       return  false;
17 }
18 int main()
19 {
20     int t,n,i,j,m;
21     scanf("%d",&t);
22     while(t--)
23     {
24         scanf("%d",&n);
25         for(i=0;i<n;i++)
26             scanf("%d%d",&a[i].weight,&a[i].hight);
27         sort(a,a+n,cmp);
28         int q,sum=0;
29         for(i=0;i<n;i++)  //重量已经有了顺序
30         {
31             if(a[i].hight!=0)   //  如果 这个  木棒 没有被标记的话
32             {
33                 sum++;   //     +1
34                 q=a[i].hight;       //赋予临时变量
35                 for(j=i+1;j<n;j++)  // 看下一个
36                 {
37                     if(a[j].hight>=q)   //下一个  大于等于的话
38                     {
39                         q=a[j].hight;  //更新 临时变量
40                         a[j].hight=0; // 并且标记
41                     }
42                 }
43             }
44         }
45         printf("%d\n",sum);
46     }
47     return 0;
48 }

 

posted @ 2016-02-04 16:28  X-POWER  阅读(498)  评论(0编辑  收藏  举报