只看了一題……
題意大概是這樣,每隔M分鐘會來一個飛船并開始等待,每隔N分鐘會有一個傳送門,傳送走等待的飛船……求飛船平均等待時間
(N,M<=1000000000)
相當于求N-(M*i)%N的和(M*i%n==0需要特判停止之類的)……前面一部分可以拆開,求和,上公式,但是后面不行……
于是乎,用新會用的HashMap算了個循環(huán)節(jié)……但是面對極限數(shù)據(jù)(循環(huán)節(jié)==N)貌似還是掛……
萬般無奈之際,我通過觀察規(guī)律,還真發(fā)現(xiàn)了一個規(guī)律…直接上代碼吧……
當然,發(fā)現(xiàn)了這個規(guī)律之后,可以除n化簡之類的,不敘……
Challenge時間,搞掉了一個硬爆的,有個爺們是直接循環(huán)的,但是貌似問題不在速度,我沒Cha掉……有個爺們代碼前面一堆廢話,我以為是類似hash的思路,后來才發(fā)現(xiàn)最后沒用那堆廢話,實際上程序還是公式……結(jié)果沒賺沒賠……
rating->1487……又掉成藍了……我了個去……
其實藍的不冤,畢竟現(xiàn)在思路還是不咋樣,有些東西其實感覺最終可以想出來,但是速度卻不能滿足競賽要求……
總之還是奮戰(zhàn)吧……
題意大概是這樣,每隔M分鐘會來一個飛船并開始等待,每隔N分鐘會有一個傳送門,傳送走等待的飛船……求飛船平均等待時間
(N,M<=1000000000)
相當于求N-(M*i)%N的和(M*i%n==0需要特判停止之類的)……前面一部分可以拆開,求和,上公式,但是后面不行……
于是乎,用新會用的HashMap算了個循環(huán)節(jié)……但是面對極限數(shù)據(jù)(循環(huán)節(jié)==N)貌似還是掛……
萬般無奈之際,我通過觀察規(guī)律,還真發(fā)現(xiàn)了一個規(guī)律…直接上代碼吧……
1 class Starport{
2
3 long gcd(long n,long m){
4 if (m==0) return 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 }
2
3 long gcd(long n,long m){
4 if (m==0) return 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 }
當然,發(fā)現(xiàn)了這個規(guī)律之后,可以除n化簡之類的,不敘……
Challenge時間,搞掉了一個硬爆的,有個爺們是直接循環(huán)的,但是貌似問題不在速度,我沒Cha掉……有個爺們代碼前面一堆廢話,我以為是類似hash的思路,后來才發(fā)現(xiàn)最后沒用那堆廢話,實際上程序還是公式……結(jié)果沒賺沒賠……
rating->1487……又掉成藍了……我了個去……
其實藍的不冤,畢竟現(xiàn)在思路還是不咋樣,有些東西其實感覺最終可以想出來,但是速度卻不能滿足競賽要求……
總之還是奮戰(zhàn)吧……