[NKU]sweet @ Google && TopCoder && CodeForces

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            33 Posts :: 1 Stories :: 15 Comments :: 0 Trackbacks
          只看了一題……
          題意大概是這樣,每隔M分鐘會來一個飛船并開始等待,每隔N分鐘會有一個傳送門,傳送走等待的飛船……求飛船平均等待時間
          (N,M<=1000000000)
          相當于求N-(M*i)%N的和(M*i%n==0需要特判停止之類的)……前面一部分可以拆開,求和,上公式,但是后面不行……
          于是乎,用新會用的HashMap算了個循環節……但是面對極限數據(循環節==N)貌似還是掛……
          萬般無奈之際,我通過觀察規律,還真發現了一個規律…直接上代碼吧……

           1 class Starport{
           2     
           3     long gcd(long n,long m){
           4         if (m==0return n;
           5         return gcd(m,n%m);
           6     }
           7 
           8     public double getExpectedTime(int n,int m){
           9         long tmp=gcd(n,m);
          10         long sum=n*n;
          11         sum-=n*(n+tmp)/2;
          12         double ans=sum;
          13         ans/=n;
          14         System.out.println(ans);
          15         return ans;
          16     }
          17 }

          當然,發現了這個規律之后,可以除n化簡之類的,不敘……
          Challenge時間,搞掉了一個硬爆的,有個爺們是直接循環的,但是貌似問題不在速度,我沒Cha掉……有個爺們代碼前面一堆廢話,我以為是類似hash的思路,后來才發現最后沒用那堆廢話,實際上程序還是公式……結果沒賺沒賠……
          rating->1487……又掉成藍了……我了個去……
          其實藍的不冤,畢竟現在思路還是不咋樣,有些東西其實感覺最終可以想出來,但是速度卻不能滿足競賽要求……
          總之還是奮戰吧……
          posted on 2010-12-09 02:23 sweetsc 閱讀(151) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 扬州市| 乳山市| 临高县| 彭泽县| 顺平县| 凭祥市| 宁河县| 庆元县| 邛崃市| 洛南县| 东丽区| 东丰县| 天门市| 和田县| 阿克| 阿拉尔市| 南京市| 河津市| 保山市| 陆河县| 金寨县| 岚皋县| 怀化市| 望江县| 东辽县| 会理县| 丹阳市| 商南县| 本溪市| 澄城县| 滨海县| 巴南区| 高阳县| 玉山县| 华坪县| 伽师县| 赞皇县| 贵德县| 察哈| 明星| 岚皋县|