1. 程式人生 > >nyoj 125-盜夢空間 (數學ans += temp * 60 * pow(0.05, cnt))

nyoj 125-盜夢空間 (數學ans += temp * 60 * pow(0.05, cnt))

空間 個數字 can badge 精彩 字符串 algo 難度 wid

125-盜夢空間


內存限制:64MB 時間限制:3000ms 特判: No
通過數:8 提交數:10 難度:2

題目描述:

《盜夢空間》是一部精彩的影片,在這部電影裏,Cobb等人可以進入夢境之中,夢境裏的時間會比現實中的時間過得快得多,這裏假設現實中的3分鐘,在夢裏就是1小時。

然而,Cobb他們利用強效鎮靜劑,可以從第一層夢境進入第二層夢境,甚至進入三層,四層夢境,每層夢境都會產生同樣的時間加速效果。那麽現在給你Cobb在各層夢境中經歷的時間,你能算出現實世界過了多長時間嗎?

比如,Cobb先在第一層夢境待了1個小時,又在第二層夢境裏待了1天,之後,返回第一層夢境之後立刻返回了現實。

那麽在現實世界裏,其實過了396秒(6.6分鐘)

輸入描述:

第一行輸入一個整數T(0<=T<=100),表示測試數據的組數。
每組測試數據的第一行是一個數字M(3<=M<=100)
隨後的M行每行的開頭是一個字符串,該字符串如果是"IN" 則Cobb向更深層的夢境出發了,如果是字符串"OUT"則表示Cobb從深層的夢回到了上一層。如果是首字符串是"STAY"則表示Cobb在該層夢境中停留了一段時間,本行隨後將是一個整數S表示在該層停留了S分鐘(1<=S<=10000000)。數據保證在現實世界中,時間過了整數秒。

輸出描述:

對於每組測試數據,輸出現實世界過的時間(以秒為單位)。

樣例輸入:

1
6
IN
STAY 60
IN
STAY 1440
OUT
OUT

樣例輸出:

396

C/C++ AC:

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <set
> 8 #include <map> 9 #include <queue> 10 #include <climits> 11 12 using namespace std; 13 int n, m; 14 15 int main() 16 { 17 cin >>n; 18 while (n --) 19 { 20 scanf("%d", &m); 21 int ans = 0, cnt = 0; 22 string str; 23 while (m --) 24 { 25 cin >>str; 26 if (str == "IN") cnt ++; 27 else if (str == "OUT") cnt --; 28 else 29 { 30 int temp; 31 scanf("%d", &temp); 32 ans += temp * 60 * pow(0.05, cnt); 33 } 34 } 35 printf("%d\n", ans); 36 } 37 }

nyoj 125-盜夢空間 (數學ans += temp * 60 * pow(0.05, cnt))