LibreOJ #6162. 「美團 CodeM 初賽 Round A」身體訓練【暴力】

「美團 CodeM 初賽 Round A」身體訓練

問題描述ui

美團外賣的配送員用變速跑的方式進行身體訓練。 他們訓練的方式是: n 我的排成一列跑步, 先後兩人之間相隔 u 米, 每一個人正常速度均爲 v 米/秒。 當某個配送員排在最後的時候, 他須要以當時本身的最高速度往前跑, 直到超過排頭的人 u 米, 而後降回到原始速度v 米/秒。 每一個人最初的最高速度爲 c(i)米/秒, 每輪衰減 d(i)米/秒, 也就是說, 若是 i是第 j 個跑的, 那麼他的速度就是 c(i)-(j-1)×d(i)米/秒。
n 我的初始以隨機的順序排列, 每種順序的機率徹底相等, 跑完一輪( 每一個人都追到排頭一次, 序列恢復原樣) 的指望須要的時間是多少?spa

輸入數據code

第一行整數 n, 實數 v , 實數 u;
第二行 n 個實數每一個人的速度 c(i);
第三行 n 個實數值每一個人衰減量 d(i);
輸入數據保證每一個人的速度不會衰減到 ≤vstring

輸出數據io

答案保留 3 位小數。class

輸入樣例美團

10 37.618 0.422
72.865 126.767 202.680 106.102 99.516 134.418 167.952 173.646 120.210
136.571
2.941 3.664 7.363 4.161 0.246 8.046 5.521 7.473 7.178 5.649sso

輸出樣例數據

0.815word

數據範圍

n≤1000,v≤100,u≤10
c(i)≤50000,d(i)≤10
輸入數據保證每一個人的速度不會衰減到≤v

題解

很水的小題,枚舉i在那個點開始,而後算指望就能夠了。

代碼以下

#include<cstdio>
using namespace std;
int n;
double v,u,c[1005],d[1005],Ans;
int main(){
    scanf("%d%lf%lf",&n,&v,&u);
    for(int i=1;i<=n;i++) scanf("%lf",&c[i]);
    for(int i=1;i<=n;i++) scanf("%lf",&d[i]);
    for(int i=1;i<=n;i++){
        double Now=0;
        for(int j=1;j<=n;j++) Now+=(u*(double)n)/(c[i]-d[i]*(j-1)-v);
        Now/=n;Ans+=Now;
    }
    printf("%.3lf",Ans);
    return 0;
}
相關文章
相關標籤/搜索