[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 閱讀(153) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 惠州市| 迭部县| 嘉黎县| 肇源县| 梁平县| 新源县| 阜阳市| 平昌县| 松桃| 大连市| 泗阳县| 苍梧县| 慈利县| 晴隆县| 南华县| 贡觉县| 尉氏县| 桐庐县| 扎鲁特旗| 枣强县| 云南省| 松阳县| 威宁| 徐闻县| 顺平县| 安宁市| 舞阳县| 陆河县| 甘孜| 赣州市| 四川省| 天气| 德钦县| 南和县| 虞城县| 蒙山县| 班戈县| 芷江| 莫力| 卓资县| 四平市|