码迷,mamicode.com
首页 > 其他好文 > 详细

B. Berland National Library---cf567B(set|模拟)

时间:2016-07-16 00:19:13      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

 题目链接:http://codeforces.com/problemset/problem/567/B

 题意:题目大意: 一个计数器, +号代表一个人进入图书馆, -号代表一个人出去图书馆. 给一个log, 问这个log中能知道的这个图书馆最小的可能容量是多少, log是片段, 在program运行前可能图书馆已经有人, 在运行后也

可能人还没出去?

方法一:模拟;

技术分享
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include <map>
#include <string>
using namespace std;
#define N 1000005
#define INF 0x3f3f3f3f
#define met(a, b) memset(a, b, sizeof(a))
typedef long long LL;

int n,  a[N], b[N];

char s[N][10];
int main()
{
    while(scanf("%d", &n) != EOF)
    {
        met(a, 0);
        met(b, 0);

        int ans = 0;

        for(int i=0; i<n; i++)
        {
            scanf("%s %d", s[i], &a[i]);
            if(s[i][0] == +)
                b[a[i]] = 1;
            else if(b[a[i]] == 0)
                ans ++;///先求出原本里面有多少人;
        }

        int Max = ans;
        for(int i=0; i<n; i++)
        {
            if(s[i][0] == +)
                ans ++;
            else
                ans--;
            Max = max(Max, ans);///再统计过程中的流通人量;
        }
        printf("%d\n", Max);
    }
    return 0;
}
View Code

方法二:STL

技术分享
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include <map>
#include <string>
#include <set>
using namespace std;
#define N 1000005
#define INF 0x3f3f3f3f
#define met(a, b) memset(a, b, sizeof(a))
typedef long long LL;

int main()
{
    int n;
    while(~scanf("%d", &n))
    {
        set<int>s;
        int ans = 0;
        for(int i=1; i<=n; i++)
        {
            char ch[5]; int num;
            scanf("%s %d", ch, &num);
            if(ch[0] == - && s.find(num) == s.end() )
                ans++;
            else if(ch[0] == - && s.find(num)!=s.end() )
                s.erase(num);
            else
            {
                s.insert(num);
                int len = s.size();
                ans = max(ans, len);
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}
View Code

 

B. Berland National Library---cf567B(set|模拟)

标签:

原文地址:http://www.cnblogs.com/zhengguiping--9876/p/5674949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!