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

[细节]HDU 3744——A Running Game

这个题其实并不难想,跑道长400M,给顶N米的总长度,M个运动员和他们的当前位置,允许套圈,问这个排名是否合法?大概思路就是最小假设,若第一名确实比第二名大,第二名确实比第三名大……则忽略之,若小,则前面的人加一圈。如此反复下去,判断第一名有没有超出给定的距离。结果加圈的时候出了一点问题,圈*400应该是全局变量的,比较的时候不能只比较前一个。
 
好吧,细节决定成败。
 
[cpp]  
#include <iostream>  
#include <algorithm>  
using namespace std;  
  
class runner  
{  
 public:  
  int meter;  
  int rank;  
   
};  
  
bool cmp(runner n1,runner n2)  
{  
 return n1.rank<n2.rank;  
}  
  
int main()  
{  
 int testcase;  
 cin>>testcase;  
   
 while(testcase--)  
 {  
  int taoquanshu=0;  
  runner pack[115];  
  int maxroute,yu;  
  int athlete,distance;  
  cin>>athlete>>distance;  
  maxroute=(distance/400)-1;  
  yu=distance%400;  
    
  for(int i=0;i<athlete;i++)  
  {  
   cin>>pack[i].meter>>pack[i].rank;  
  }  
    
  sort(pack,pack+athlete,cmp);  
  for(int j=0;j<athlete-1;j++)  
  {  
   if(pack[j].meter>pack[j+1].meter)  
   {  
    continue;  
   }  
   else  
   {  
    taoquanshu++;  
   }  
  }  
    
   if((taoquanshu*400+pack[athlete-1].meter)>distance)  
   {  
    cout<<"NO"<<endl;  
   }  
   else  
   {  
    cout<<"YES"<<endl;  
   }  
  
    
  }  
   return 0;   
 }  
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,