zoukankan      html  css  js  c++  java
  • ny236 心急的C小加 hdoj1051 Wooden Sticks

    心急的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
    AC代码:如果一个个的比较的话,会超时的;
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int opt[5010];
    struct T
    {
        int len,w;
    }c[5010];
    int cmp(T a,T b)
    {
        if(a.len<b.len)
            return 1;
        if(a.len==b.len && a.w<b.w)
            return 1;
        return 0;
    }
    int main()
    {
        int t,i,j,k,temp,n,sum;
        cin>>t;
        while(t--)
        {
            cin>>n;
            for(i=1;i<=n;i++)
                cin>>c[i].len>>c[i].w;
            sort(c+1,c+n+1,cmp);//排序后,后面只需要考虑重量了
            sum=0;
            for(i=1;i<=n;i++)
              {
                if(c[i].w!=0)
                {
                    temp=c[i].w;
                      for(j=i+1;j<=n;j++)
                  if(c[j].w>=temp)//把依次递增的全部置为0,并sum+1
                      {
                          temp=c[j].w;
                          c[j].w=0;
                      }
                      sum++;
                }
            }
            cout<<sum<<endl;
       }
       return 0;
    }
  • 相关阅读:
    App调试的几个命令实践【转】
    解决sdk更新时候报错 http://dl-ssl.google.com/android上不去,链接拒绝
    fastjson序列化排序问题
    Java中的四种引用
    equal&==&hashcode
    ThreadPool线程池的关注点
    JVM的本地方法栈
    JVM的堆分配
    JVM的类装载子系统
    JVM的数据类型
  • 原文地址:https://www.cnblogs.com/lovychen/p/3244166.html
Copyright © 2011-2022 走看看