ACM 盗梦空间
盗梦空间
- 描述
-
《盗梦空间》是一部精彩的影片,在这部电影里,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
此题主要是用map进行存储,每次遇到IN就将层数加一,每次遇到OUT时就将层数减一,遇到STAY就将时间放入map中,注意map的键是层数,值是时间,
如果有相同的键不同的时间,则将时间累加
如果map中没有键则将新的键值插入map中
注意每层的时间转换是1/20,而且map具有自动按照键排序功能,故必须从map最后一个元素算起,不断向上退出梦境,累加时间
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <map> using namespace std; int main(){
int T;
cin >> T;
for(int icase = ; icase < T; ++ icase ){
int m;
cin >> m;
string type;
int cnt = ;
long long time = ;
map<int,long long> dream;
for(int i = ; i < m ; ++ i){
cin >> type;
if(type == "IN") cnt ++;
else if(type == "OUT")cnt --;
else{
cin >> time;
time *=;
map<int,long long>::iterator iter = dream.find(cnt);
if(iter!=dream.end()) iter->second+=time;
else dream.insert(make_pair(cnt,time));
}
}
long long res;
int index ;
bool first = true;
for(map<int, long long>::reverse_iterator iter = dream.rbegin(); iter!=dream.rend(); ++ iter ){
if(first){
res = dream.rbegin()->second;
index = dream.rbegin() -> first;
first = false;
}else{
res = res//(index-iter->first)+iter->second;
index = iter->first;
} }
cout<<res//index<<endl;
} }此题遇到问题主要是c++中的map使用不熟悉,map进行反向迭代时要用reverse_iterator,进行查找时要用map自身的find函数,不能用algorithm的查找函数
ACM 盗梦空间的更多相关文章
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- acm结束了
最后一场比赛打完了.之前为了记录一些题目,开了这个博客,现在结束了acm,这个博客之后也不再更新了. 大家继续加油!
- 关于ACM的总结
看了不少大神的退役帖,今天终于要本弱装一波逼祭奠一下我关于ACM的回忆. 从大二上开始接触到大三下结束,接近两年的时间,对于大神们来说两年的确算不上时间,然而对于本弱来说就是大学的一半时光.大一的懵懂 ...
- 第一届山东省ACM——Phone Number(java)
Description We know that if a phone number A is another phone number B’s prefix, B is not able to be ...
- 第一届山东省ACM——Balloons(java)
Description Both Saya and Kudo like balloons. One day, they heard that in the central park, there wi ...
- ACM之鸡血篇
一匹黑马的诞生 故事还要从南京现场赛讲起,话说这次现场赛,各路ACM英雄豪杰齐聚南京,为争取亚洲总舵南京分舵舵主之职位,都使出了看 家本领,其中有最有实力的有京城两大帮清华帮,北大帮,南郡三大派上交派 ...
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- acm 1002 算法设计
最近突然想往算法方向走走,做了做航电acm的几道题 二话不说,开始 航电acm 1002 题主要是处理长数据的问题,算法原理比较简单,就是用字符数组代替int,因为int太短需要处理的数据较长 下面是 ...
随机推荐
- php提示 Notice: Use of undefined constant name - assumed
我们知道php在数组中写变量有二几种方法,我们出现这种提示就是你写成了[name]这种所以会有Notice: Use of undefined constant name - assumed name ...
- siblings 使用
//$(object).siblings().each(function () { // $(this).find("img").attr("class", & ...
- SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)
掌握了这些,就比较高级啦 Using the Same Table Twice 如下面查询中的branch字段 SELECT a.account_id, e.emp_id, b_a.name open ...
- 攻城狮在路上(叁)Linux(二十三)--- linux磁盘参数修改(设备代码、设备名)
一.mknod:设置设备代码 linux中,所有的设备都是用文件来表示,文件通过major与minor数值来判断. major为主设备代码,minor为设备代码(需要查询),示例如下: /dev/hd ...
- scala的tcp通信
client: object ActorClient extends App { import actors.Actor, actors.remote.Node, actors.remote.Remo ...
- C泊车管理系统
// // main.c // 泊车管理系统 // // Created by 丁小未 on 13-7-14. // Copyright (c) 2013年 dingxiaowei. All ...
- hibernate base
第一个类:Person.java package org.crazyit.app.domain; import java.io.Serializable;import java.util.ArrayL ...
- SurfaceView
我们先来看下官方API对SurfaceView的介绍 SurfaceView的API介绍 Provides a dedicated drawing surface embedded inside of ...
- 《大话》之 策略模式 Vs 状态模式
一.简介: 策略模式: 背景:商店要打折销售,各种版本的销售方式,让小菜心烦意乱 内容: 定义算法家族,分别封装起来,让他们之间可以户型替换,此模式让算法的变化,不会影响到使用算法的用户. 图文 ...
- 【转】Kylin中的cube构建
http://blog.csdn.net/yu616568/article/details/50365240 前言 在使用Kylin的时候,最重要的一步就是创建cube的模型定义,即指定度量和维度 ...