zoukankan      html  css  js  c++  java
  • hdoj1051Wooden Sticks

    
    /*这道题目是先要排序的,依照长度或者重量排都能够。
    当长度(重量)同样时就依照重量(长度)排,
    从大到小或从小到大都能够!

    这里我懂的。没有问题!
    排序之后,问题就能够简化,(如果依照长度不等时长度排,
    长度等是依照重量排,我如果依照从大到小来排!)即求排序
    后的全部的重量值最少能表示成几个集合。

    长度就不用再管了,
    从数组第一个数開始遍历,仅仅要重量值满足条件,那么这两个
    木棍就满足条件!*/

    <span style="font-size:18px;">#include<stdio.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    #define maxn 5010
    struct node{
     int l,w;
    }stk[maxn];
    bool cmp(node y,node x){
     if(x.l<y.l) return true;
     if(x.l==y.l&&x.w<y.w) return true;
     return false;
    }
    int main()
    {
     int visit[5010],t,n,sum;
     scanf("%d",&t);
     while(t--)
     {
      memset(visit,0,sizeof(visit));    
            memset(&stk,0,sizeof(&stk));    
            scanf("%d",&n);    
            for(int i=0;i<n;i++)    
            scanf("%d %d",&stk[i].l,&stk[i].w);    
            sort(stk,stk+n,cmp);    
            sum=0;    
            for(int i=0;i<n;i++)    
            {    
                if(!visit[i])    
                {    
                    for(int j=i;j<n;j++)    
                    if(stk[j].l>=stk[i].l&&stk[j].w>=stk[i].w&&!visit[j])    
                    visit[j]=1,stk[i].l=stk[j].l,stk[i].w=stk[j].w;    
                    sum++; //这个循环是重点。   
                }    
            }    
            printf("%d
    ",sum);      
     }    
        return 0;    
    }   </span>


  • 相关阅读:
    07:常识性问题
    知识梳理
    Linux之防火墙iptables
    centos常用命令
    Centos7 内核升级及删除无用内核
    Java线程之Callable、Future
    Java线程之Timer
    Java线程之ThreadLocal
    Java线程之synchronized
    Java线程之wait()、notify()、notifyAll()
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6929291.html
Copyright © 2011-2022 走看看