zoukankan      html  css  js  c++  java
  • hdoj1051

    Wooden Sticks

    |code--------------------------------------------------------------------------------------------------+
    |001| /***************************************************************\                              
    |002|  *Author: 小呼                                                                               
    |003|  *Created Time: Sat 10 Jul 2010 09:56:40 AM CST                                                
    |004|  *File Name: b.cpp                                                                             
    |005|  *Description:贪心思想,将木棍按l,w排序,先处理第一个木棍,因为         
    |006|  *它前面放不下任何其他的木棍了,再依次往后检索是不是有木棍能在它的
    |007|  *后面处理而不用花时间setup,这时只需满足w大于它前面的木棍即可,   
    |008|  *因为经排序l一定大于前面的木棍,处理过的木棍都作上标记(mark[j]=1) 
    |009| \***************************************************************/                              
    |010| //*========================*Head File*========================*\\                              
    |011|                                                                                                
    |012| #include<iostream>                                                                             
    |013| #include<stdlib.h>                                                                             
    |014| #include<string.h>                                                                             
    |015| /*----------------------*Global Variable*----------------------*/                              
    |016| int T,n;                                                                                       
    |017| bool mark[5001];                                                                               
    |018| typedef struct STK{                                                                            
    |019| .       int l,w;                                                                               
    |020| }STK;                                                                                          
    |021| STK S[5001];                                                                                   
    |022|                                                                                                
    |023| //*=======================*Main Program*=======================*//                             
    |024| using namespace std;                                                                           
    |025|                                                                                                
    |026| int cmp(const void*a,const void* b){                                                           
    |027| .       struct STK* c=(STK*)a;                                                                 
    |028| .       struct STK* d=(STK*)b;                                                                 
    |029| .       return c->l==d->l?c->w-d->w:c->l-d->l;                                                 
    |030| }                                                                                              
    |031| int main(){                                                                                    
    |032| .       //freopen("input","r",stdin);                                                          
    |033| .       cin>>T;                                                                                
    |034| .       while(T--){                                                                            
    |035| .       .       cin>>n;                                                                        
    |036| .       .       for(int i=0;i<n;++i)                                                           
    |037| .       .         cin>>S[i].l>>S[i].w;                                                         
    |038| .       .       qsort(S,n,sizeof(STK),cmp);//排序(先按l,l相同再按w)              
    |039| .       .       int sum=0;                                                                     
    |040| .       .       memset(mark,0,sizeof(mark));//初始化标记为false                          
    |041| .       .       for(int i=0;i<n;++i){                                                          
    |042| .       .       .       if(mark[i])continue;//已经处理                                     
    |043| .       .       .       sum++;                                                                 
    |044| .       .       .       int w=S[i].w;                                                          
    |045| .       .       .       for(int j=i+1;j<n;++j){                                                
    |046| .       .       .       .       if(mark[j])continue;                                           
    |047| .       .       .       .       if(S[j].w>=w){                                                 
    |048| .       .       .       .         mark[j]=1;                                                   
    |049| .       .       .       .         w=S[j].w;//这句很重要                                   
    |050| .       .       .       .       }                                                              
    |051| .       .       .       }                                                                      
    |052| .       .       .       //mark[i]=1;//这句没必要                                          
    |053| .       .       }                                                                              
    |054| .       .       cout<<sum<<endl;                                                               
    |055| .       }                                                                                      
    |056| .       return 0;                                                                              
    |057| }                                                                                              
    end+--------------------------------------------------------------------------------------------------+
    
    

  • 相关阅读:
    C#--SqlDependency监控数据库表的变化
    C#--尝试读取或写入受保护的内存,这通常指示其他内存已损坏。
    C#--lock线程锁
    C#--抽象类(转载)
    ArrayList源码分析
    多线程编程bug起源分析
    Linux-CentOS-Nginx安装
    记一次springMVC的跨域解决方案
    Linux下压缩工具gzip和归档工具tar及其实战shell应用
    Docker在Centos 7上的部署
  • 原文地址:https://www.cnblogs.com/Open_Source/p/1904939.html
Copyright © 2011-2022 走看看