[细节]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++ ,