构造 Codeforces Round #Pi (Div. 2) B. Berland National Library
2015-08-06 21:10
513 查看
题目传送门
/* 题意:给出一系列读者出行的记录,+表示一个读者进入,-表示一个读者离开,可能之前已经有读者在图书馆 构造:now记录当前图书馆人数,sz记录最小的容量,in数组标记进去的读者,分情况讨论一下 */ /************************************************ * Author :Running_Time * Created Time :2015-8-6 0:23:37 * File Name :B.cpp ************************************************/ #include <cstdio> #include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <cmath> #include <string> #include <vector> #include <queue> #include <deque> #include <stack> #include <list> #include <map> #include <set> #include <bitset> #include <cstdlib> #include <ctime> using namespace std; #define lson l, mid, rt << 1 #define rson mid + 1, r, rt << 1 | 1 typedef long long ll; const int MAXN = 1e6 + 10; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; bool in[MAXN]; int main(void) { //Codeforces Round #Pi (Div. 2) B. Berland National Library int n; scanf ("%d", &n); memset (in, false, sizeof (in)); int now = 0, sz = 0; for (int i=1; i<=n; ++i) { char s[2]; int x; scanf ("%s%d", &s, &x); if (s[0] == '+') { now++; in[x] = true; if (now > sz) sz++; } else if (s[0] == '-') { if (now == 0) { if (in[x]) in[x] = false; sz++; } else { if (!in[x]) { //是之前就进入图书馆的读者 sz++; } else { in[x] = false; now--; } } } } printf ("%d\n", sz); return 0; }
相关文章推荐
- 测试用例设计白皮书--错误推测方法
- 测试用例设计白皮书--边界值分析方法
- 华为机试训练:图片排序
- poj2253flody变形(最小生成树)
- Ubuntu10.04默认不支持root直接登录
- sql语句逻辑执行顺序
- nginx 作为反向代理实现负载均衡的例子
- 编译支持MFC的pcl::visualization静态库文件
- C++ 获取文件夹下的所有文件名
- 求一个字符串中出现相同且长度最长的字符串
- [MetaHook] Quake FMOD player demo
- 测试用例设计白皮书--等价类划分方法
- 通过PowerShell命令批量启用Lync用户
- Grunt入门教程(自动任务运行器)
- 离散事件模拟-银行管理 模拟,队列
- 事件传递和响应者链条
- 测试用例设计白皮书--测试用例基本概念
- 工作中遇到的问题-2
- iOS UIActivityViewController 接入WeChatSDK 微信 朋友圈分享
- Unreal角色技术指南