ZZULIOJ 1784 Camellia的难题

1784: Camellia的难题

Time Limit: 2 Sec   Memory Limit: 128 MB
Submit: 67   Solved: 14

Submit Status Web Board

Description

 Camellia遇到了一个问题,她无法解决所以来求助豆子,以下是豆子所理解的问题:给定1000万个点,编号1-1000万。每个点都有一个值,初始的时候均为-1,有n个操作,操作有以下五种。

1 x 代表将x点更新为i,i为第几次操作。

2 x 代表将x点更新为-1。

3   代表把所有的点变为-1。

4 x 查询x点的值。

5  查询1000万个点里有多少个点不是-1。

亲爱的同学,你能帮助他们解决这个问题么?

Input

 首先输入一个t(t<10)代表t组数组,接下来每组数据首先输入一个n(n<100万)代表n次操作,接下来n行每行一种操作。

Output

 对于4、5操作来言,输出它们的答案。

Sample Input

181 201 154 2052 15535

Sample Output

1210


其中最麻烦的操作是3,在进行3的时候,记录一个时间变量tim,然后如果结点值只要小于tim表示这个点为-1,然后正常进行运算就行了


ac代码:
#include<stdio.h> 
#include<string.h> 
#include<math.h> 
#include<iostream> 
#include<algorithm> 
#define MAXN 10000001 
#define fab(a) (a)>0?(a):(-a) 
#define INF 0xfffffff 
#define LL long long 
using namespace std; 
int v[MAXN]; 
int main() 
{ 
    int t,i,n,a,c,tim; 
    scanf("%d",&t); 
    while(t--) 
    { 
        tim=0;
        int k=10000000; 
        scanf("%d",&n); 
        memset(v,-1,sizeof(v)); 
        for(i=1;i<=n;i++) 
        { 
            scanf("%d",&c); 
            if(c==1) 
            { 
                scanf("%d",&a); 
                //printf("%d\n",v[a]);  
                if(v[a]==-1||v[a]<tim)//这的小于号找了半天
                k--; 
                v[a]=i;
                //printf("%d\n",k);
                //printf("%d\n",v[a]); 
            } 
            else if(c==2) 
            { 
                scanf("%d",&a); 
                if(v[a]!=-1&&v[a]>tim)
                { 
                    k++;
                }
                //printf("%d\n",k);
                //sum=sum-v[a]-1; 
            } 
            else if(c==3) 
            { 
                k=10000000;
                tim=i; 
            } 
            else if(c==4) 
            { 
                scanf("%d",&a); 
                if(v[a]<tim)
                printf("%d\n",-1);
                else
                printf("%d\n",v[a]); 
            } 
            else if(c==5)
            { 
                printf("%d\n",10000000-k); 
            } 
        } 
    } 
    return 0; 
}


你可能感兴趣的:(ZZULIOJ 1784 Camellia的难题)