ACM 盜夢空間

2022-05-27 23:15:12 字數 1541 閱讀 3899

時間限制: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多年來,只是偶爾做夢時會出現彩色的夢境,來的每夢必彩色,其實筆者活了這麼多年,只做過一...