当前位置:编程学习 > C/C++ >>

HDU 2600——War

看时间和内存还以为要使用到某些存储结构方面的 内容,结果绕了一圈,最后还是用排序等简单知识解决了。。有的时候适当乐观也是好的。。


[cpp]
#include <iostream>  
#include <cstring>  
#include <string>  
#include <algorithm>  
using namespace std; 
 
class war 

    public: 
        int starttime; 
        int endtime; 
        bool vis; 
}; 
 
bool cmp(war a,war b) 

    if(a.endtime!=b.endtime) 
        return b.endtime>a.endtime; 
    else 
        return a.starttime>b.starttime; 

 
war tar[150]; 
 
int main() 

    int testcase; 
     
    while(cin>>testcase) 
    { 
        memset(tar,0,sizeof(tar)); 
        string tmp; 
        int res=0; 
        int flag=0; 
        int stp,edp; 
        cin>>stp>>edp; 
        for(int i=0;i<testcase;i++) 
        { 
            cin>>tar[i].starttime>>tar[i].endtime; 
            getline(cin,tmp); 
            tar[i].vis=0; 
        } 
        sort(tar,tar+testcase,cmp); 
        if(tar[0].endtime<edp) 
        { 
            cout<<edp<<endl; 
            continue; 
        } 
        for(int i=0;i<testcase;i++) 
        { 
            if(tar[i].endtime>=res) 
            { 
                if(res>=tar[i].starttime) 
                    res=tar[i].starttime; 
            }    
            else     
            { 
                flag=1; 
                break; 
            } 
        } 
        if(flag==1)  
        cout<<res-1<<endl; 
        else         
        cout<<"Badly!"<<endl; 
         
         
    } 
    return 0; 

#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;

class war
{
    public:
     int starttime;
     int endtime;
     bool vis;
};

bool cmp(war a,war b)
{
 if(a.endtime!=b.endtime)
  return b.endtime>a.endtime;
 else
  return a.starttime>b.starttime;
}

war tar[150];

int main()
{
 int testcase;
 
 while(cin>>testcase)
 {
  memset(tar,0,sizeof(tar));
  string tmp;
  int res=0;
  int flag=0;
  int stp,edp;
  cin>>stp>>edp;
  for(int i=0;i<testcase;i++)
  {
   cin>>tar[i].starttime>>tar[i].endtime;
   getline(cin,tmp);
   tar[i].vis=0;
  }
  sort(tar,tar+testcase,cmp);
  if(tar[0].endtime<edp)
  {
   cout<<edp<<endl;
   continue;
  }
  for(int i=0;i<testcase;i++)
  {
   if(tar[i].endtime>=res)
   {
    if(res>=tar[i].starttime)
     res=tar[i].starttime;
   } 
   else 
   {
    flag=1;
    break;
   }
  }
  if(flag==1) 
  cout<<res-1<<endl;
  else  
  cout<<"Badly!"<<endl;
  
  
 }
 return 0;
}


 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,