模拟 codeforces567B Berland National Library
2015-08-08 15:11
190 查看
题意:一个图书馆,有个程序,记录了进来和出去的人,,但是开这个程序之前可能房间内还有一些人,问这个房间至少能容纳多少人才行
思路:维护ans和now,now表示当前程序记录下的房间人数。ans表示答案
遇到+,表示进来了一个人,那么标记一下,然后now++,再更新一下ans取最大
如果遇到-,如果之前被标记了,表示是程序开始后才进来的,所以直接now--就行
如果之前没有被标记,表示程序开启之前就已经进来了,所以直接在ans上面加上之前已经存在的人的数量,所以ans++
思路:维护ans和now,now表示当前程序记录下的房间人数。ans表示答案
遇到+,表示进来了一个人,那么标记一下,然后now++,再更新一下ans取最大
如果遇到-,如果之前被标记了,表示是程序开始后才进来的,所以直接now--就行
如果之前没有被标记,表示程序开启之前就已经进来了,所以直接在ans上面加上之前已经存在的人的数量,所以ans++
#include<cstdio> #include<cmath> #include<cstring> #include<queue> #include<vector> #include<map> #include<string> #include<iostream> #include<functional> #include<algorithm> using namespace std; typedef long long LL; typedef pair<int, int> PII; const int MX = 1e6 + 5; const int INF = 0x3f3f3f3f; int vis[MX]; int main() { int n, t; char p[5]; scanf("%d", &n); int ans = 0, now = 0; for(int i = 1; i <= n; i++) { scanf("%s%d", p, &t); if(p[0] == '+') { vis[t] = 1; now++; ans = max(ans, now); } else { if(vis[t]) now--; else ans++; } } printf("%d\n", ans); return 0; }
相关文章推荐
- Hibernate中get和load方法的区别
- Android学习笔记之常用控件
- codeforces Round #Pi (div.2) 567ABCD
- 模拟电子开关
- 从底层角度看ASP.NET-A low-level Look at the ASP.NET...
- [Wireshark]_003_电子邮件抓包分析
- 黑马程序员——Java基础语法---数组
- Watering Grass
- Maven配置总结
- 黑马程序员---struts2学习笔记之七(表单验证)
- Java泛型总结(1)
- 快排partition过程——索引小修改
- Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法
- Self-information
- JAVA 阻塞队列
- hdu 1003 Max Sum 最大字段和 dp
- 富甲天下3存档修改
- 简历
- LeetCode(70)题解: climbing-stairs
- 网站前端优化