FZU 2084--电动车通行证制度 ( 模拟 )
2016-04-14 16:02
411 查看
电动车通行证制度
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status Practice FZU
2084
Description
为了更好地维护校园交通秩序,加强对学校电动车的管理,学校保安叔叔们决定对学生们的电动车进行出入通行证管理。
当电动车进入校门时,保安将发放一张通行证。
当电动车离校时,需要将通行证交还保安,方可放行。
每次电动车进入、离开校园时,都需要记录车牌号。
如果出现异常情况(同一电动车连续2次及以上离开校园,或者连续2次及以上进入校园)电动车将不被放行。
Input
输入第一行为T,表示Case数
每组Case,为一连串的电动车进入/离开校园请求。
“IN 车牌号”:例如IN C-1089,表示车牌号为C-1089的电动车希望进入校园。
“OUT 车牌号”:例如OUT C-1089,表示车牌号为C-1089的电动车希望离开校园。
“LIST”:根据被放行的电动车记录,列出在校内的电动车车牌列表(不被放行的记录不算),按第一次出入的顺序排序。
“EXIT”:该组Case结束
碰到异常情况不放行时,输出一行“Error”
车牌号由大小写字母、数字、‘-’组成,长度不超过10。
命令数不超过10000
Sample Input
2IN ABCIN DEFIN ABCOUT DDDOUT DEFOUT DEFLISTEXITIN aaaIN bbbOUT cccLISTEXIT
Sample Output
Case 1:ErrorErrorABCCase 2:aaabbb
题意:给出一系列的进出车记录,每当给出命令 LIST,你需要按进出车记录顺序给出
当前在学校的车辆名,当某车名连续 2 次及以上进入或离开校园则当错误处理,
不放行,即使一开始没给出某辆车的进车记录,只有离开记录时是正常的,此时
记录下此车记录,便于按序输出。
分析:用map做车名与下标(1开始)的映射。(不重复)
vis[]=1表示车在校,0为车不在校。
flag[i]记录map中第 i 个记录的车输入的下标。
代码如下:
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status Practice FZU
2084
Description
为了更好地维护校园交通秩序,加强对学校电动车的管理,学校保安叔叔们决定对学生们的电动车进行出入通行证管理。
当电动车进入校门时,保安将发放一张通行证。
当电动车离校时,需要将通行证交还保安,方可放行。
每次电动车进入、离开校园时,都需要记录车牌号。
如果出现异常情况(同一电动车连续2次及以上离开校园,或者连续2次及以上进入校园)电动车将不被放行。
Input
输入第一行为T,表示Case数
每组Case,为一连串的电动车进入/离开校园请求。
“IN 车牌号”:例如IN C-1089,表示车牌号为C-1089的电动车希望进入校园。
“OUT 车牌号”:例如OUT C-1089,表示车牌号为C-1089的电动车希望离开校园。
“LIST”:根据被放行的电动车记录,列出在校内的电动车车牌列表(不被放行的记录不算),按第一次出入的顺序排序。
“EXIT”:该组Case结束
碰到异常情况不放行时,输出一行“Error”
车牌号由大小写字母、数字、‘-’组成,长度不超过10。
命令数不超过10000
Sample Input
2IN ABCIN DEFIN ABCOUT DDDOUT DEFOUT DEFLISTEXITIN aaaIN bbbOUT cccLISTEXIT
Sample Output
Case 1:ErrorErrorABCCase 2:aaabbb
题意:给出一系列的进出车记录,每当给出命令 LIST,你需要按进出车记录顺序给出
当前在学校的车辆名,当某车名连续 2 次及以上进入或离开校园则当错误处理,
不放行,即使一开始没给出某辆车的进车记录,只有离开记录时是正常的,此时
记录下此车记录,便于按序输出。
分析:用map做车名与下标(1开始)的映射。(不重复)
vis[]=1表示车在校,0为车不在校。
flag[i]记录map中第 i 个记录的车输入的下标。
代码如下:
#include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <map> #include <string> #include <utility> #include <functional> #include <algorithm> using namespace std; #define N 12000 #define inf 0x3f3f3f3f int vis , flag ; char car [12]; int main() { #ifdef OFFLINE freopen("t.txt", "r", stdin); #endif int t, p, i, j, k, num, test = 0; scanf("%d", &t); while (t--) { printf("Case %d:\n", ++test); memset(vis, 0, sizeof(vis)); memset(flag, 0, sizeof(flag)); char state[12]; k = p = 0; num = -1; map<char*, int> check; while (cin >> state){ if (strcmp(state, "EXIT") == 0) break; if (strcmp(state, "LIST") == 0){ for (i = 0; i < check.size(); i++){ if (vis[i + 1]) printf("%s\n", car[flag[i + 1]]); } } else{ p++; cin >> car[p]; if (strcmp(state, "IN") == 0){ num = -1; map<char*, int>::iterator it; for (it = check.begin(); it != check.end(); it++){ if (strcmp(it->first, car[p]) == 0){ num = it->second; break; } } if (num < 0){ check[car[p]] = ++k; vis[k] = 1; flag[k] = p; } else{ if (vis[num]) puts("Error"); else vis[num] = 1; } } else if (strcmp(state, "OUT") == 0){ num = -1; map<char*, int>::iterator it; for (it = check.begin(); it != check.end(); it++){ if (strcmp(it->first, car[p]) == 0){ num = it->second; break; } } if (num < 0){ check[car[p]] = ++k; vis[k] = 0; flag[k] = p; } else { if (vis[num]) vis[num] = 0; else puts("Error"); } } } } } return 0; }
相关文章推荐
- 互联网协议入门1
- spring mvc+Mybatis整合shiro 第三章 SessionManager
- Show me the code之Python练习册 Q14~16 excel操作
- EasyPusher手机直播图像旋转90度后画面重复的问题
- git pull --rebase
- TCP连接的11种状态变迁
- iOS开发中有关图片裁切的问题
- BOM字符(​)转textNode对象
- [TIRTOS--Introduction]TI RTOS Kernel
- 【转】能让win7支持DHCP Server服务的软件使用方法
- 一些传感器相关的文章
- ios 定时器不同的工作模式
- Android开发之Intent Filter
- android--实现textView的渲染加载效果
- MYSQL事务——四个隔离级别
- 《编写可读代码的艺术》读书笔记
- linux镜像空间
- Java冒泡排序法
- java中Date与String的相互转化
- Anatomy of a Play application 解析play目录结构