時間限制:3000 ms | 記憶體限制:65535 kb
難度: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)。資料保證在現實世界中,時間過了整數秒。
輸出對於每組測試資料,輸出現實世界過的時間(以秒為單位)。
樣例輸入
16in樣例輸出stay 60
instay 1440
outout
396此題主要是用map進行儲存,每次遇到in就將層數加一,每次遇到out時就將層數減一,遇到stay就將時間放入map中,注意map的鍵是層數,值是時間,
如果有相同的鍵不同的時間,則將時間累加
如果map中沒有鍵則將新的鍵值插入map中
注意每層的時間轉換是1/20,而且map具有自動按照鍵排序功能,故必須從map最後乙個元素算起,不斷向上退出夢境,累加時間
#include #include#include
#include
#include
using
namespace
std;
intmain()
}long
long
res;
intindex ;
bool first = true
;
for(maplong>::reverse_iterator iter = dream.rbegin(); iter!=dream.rend(); ++iter )
else
}cout
<20/index<}
}
此題遇到問題主要是c++中的map使用不熟悉,map進行反向迭代時要用reverse_iterator,進行查詢時要用map自身的find函式,不能用algorithm的查詢函式
map的用法參見
NYOJ 盜夢空間 125
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 盜夢空間 是一部精彩的影片,在這部電影裡,cobb等人可以進入夢境之中,夢境裡的時間會比現實中的時間過得快得多,這裡假設現實中的3分鐘,在夢裡就是1小時。然而,cobb他們利用強效鎮靜劑,可以從第一層夢境進入第二層夢境,甚至進入...
南陽OJ 盜夢空間
盜夢空間 描述 盜夢空間 是一部精彩的影片,在這部電影裡,cobb等人可以進入夢境之中,夢境裡的時間會比現實中的時間過得快得多,這裡假設現實中的3分鐘,在夢裡就是1小時。然而,cobb他們利用強效鎮靜劑,可以從第一層夢境進入第二層夢境,甚至進入三層,四層夢境,每層夢境都會產生同樣的時間加速效果。那麼...
超級爛片《盜夢空間》
趁著中秋假期,懷著忐忑的心情觀摩了一下 盜夢空間 結果卻是,這個所謂的2010年中的大片,bug也實在太多了吧,多到純屬瞎編亂造的地步。首先,對於人類來說,乙個基本的事實是,夢境幾乎全都是黑白的,我個人的經驗,30多年來,只是偶爾做夢時會出現彩色的夢境,來的每夢必彩色,其實筆者活了這麼多年,只做過一...