程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> uva--10714+找規律

uva--10714+找規律

編輯:C++入門知識

uva--10714+找規律


題意:

一根長度為len的木棍上有n只螞蟻,螞蟻們都以1cm/s的速度爬行;如果一只螞蟻爬到了木棍的端點,那麼他就會掉下去;如果兩只螞蟻碰到一起了,他們就會掉頭往相反方向爬行。輸入len和n只螞蟻的初始位置(以左端點為原點),問:所有螞蟻都掉下木棍的最短時間和最長時間(螞蟻初始爬行方向是不定的)。

思路:

最短時間是很顯然的,只要靠近左端點的螞蟻都往左端點爬,靠近右端點的螞蟻都往右端點爬,時間就能最短;最短時間是所有螞蟻離他較近端點距離的最大值。

對於最長時間我實在是沒想到,後面看樣例的時候發現最長時間都是螞蟻距離端點長的最大值,然後按照這個思路

寫了代碼,然後就過了。。。。。。。

後面看了別人的思路才知道因為螞蟻的速率是恆定的,所以碰頭轉向完全可以不考慮(假設A,B碰頭轉向了,我只需把B看成A,A看成B就可以當他們沒有掉過頭了);這樣的話,問題就變成求螞蟻距離端點長度的最大值了,所以我上面的思路就是對的了。

其實如果考慮轉向的話,也可以列出1,2,3只螞蟻的情況進行一下觀察,然後也可以得到規律了。


代碼如下:


#include
#include
#include
#include
using namespace std;

int a[1100000];

int main()
{
     int i,j,t,len,n,min1,max1;
     scanf("%d",&t);
     while(t--)
     {
            scanf("%d%d",&len,&n);
            for(i=0;i

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