程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [細節]HDU 3744——A Running Game

[細節]HDU 3744——A Running Game

編輯:C++入門知識

這個題其實並不難想,跑道長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;     }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved