(暴力 记录)Camellia的难题 -- zzuli -- 1784

http://acm.zzuli.edu.cn/problem.php?id=1784

Camellia的难题

Time Limit: 2 Sec  Memory Limit: 128 MB
Submit: 119  Solved: 25

SubmitStatusWeb 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

1

8

1 20

1 15

4 20

5

2 15

5

3

5

Sample Output

1

2

1

0

只需要在改变值的时候记录一下所改变的值, 存一下, 在3的时候只需要将改变过的值再改变回来就OK了, 做题做多了都做傻了, 这样的题比赛的时候居然都想不到

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;

const int N = 10000100;

int v[N], pre[N];

int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int n, i, sum=0, k=0, x, p;

        scanf("%d", &n);
        memset(v, -1, sizeof(v));

        for(i=1; i<=n; i++)
        {
            scanf("%d", &p);
            if(p==1)
            {
                scanf("%d", &x);
                if(v[x]==-1) sum++;
                v[x] = i;
                pre[k++] = x;
            }
            else if(p==2)
            {
                scanf("%d", &x);
                if(v[x]!=-1) sum--;
                v[x] = -1;
            }
            else if(p==3)
            {
                for(int j=0; j<k; j++) v[pre[j]]=-1;
                sum = 0;
                k=0;
            }
            else if(p==4)
            {
                scanf("%d", &x);
                printf("%d\n", v[x]);
            }
            else
            {
                printf("%d\n", sum);
            }
        }
    }
    return 0;
}
时间: 2024-07-29 02:14:12

(暴力 记录)Camellia的难题 -- zzuli -- 1784的相关文章

zzuli Camellia的难题(暴力)

1784: Camellia的难题 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 67  Solved: 14SubmitStatusWeb Board Description Camellia遇到了一个问题,她无法解决所以来求助豆子,以下是豆子所理解的问题:给定1000万个点,编号1-1000万.每个点都有一个值,初始的时候均为-1,有n个操作,操作有以下五种. 1 x 代表将x点更新为i,i为第几次操作. 2 x 代表将x点更新为-1. 3

C#中的线程(一)入门

C#中的线程(一)入门 - wota - 博客园 公告 文章系参考转载,英文原文网址请参考:http://www.albahari.com/threading/ 作者 Joseph Albahari,  翻译 Swanky Wu 本系列文章可以算是一本很出色的C#线程手册,思路清晰,要点都有介绍,看了后对C#的线程及同步等有了更深入的理解. 入门 概述与概念 创建和开始使用多线程 线程同步基础 同步要领 锁和线程安全 Interrupt 和 Abort 线程状态 等待句柄 同步环境 使用多线程

(转载)C#线程(一)

Coding Life   28 Posts :: 0 Stories :: 91 Comments :: 0 Trackbacks 公告 <div id="blog-sidecolumn"></div><script type="text/javascript">loadBlogSideColumn();</script> C#中的线程(一)入门 <div class="postText"&

C#多线程实践——创建和开始使用

线程用Thread类来创建, 通过ThreadStart委托来指明方法从哪里开始运行.ThreadStart的声明如下: public delegate void ThreadStart(); 调用Start方法后,线程开始运行,直到它所调用的方法返回后结束. class ThreadTest { static void Main() { Thread t = new Thread (new ThreadStart (Go)); t.Start(); Go(); } static void Go

C#中的多线程-入门

概述与概念C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多线程创建额外的线程.这里的一个简单的例子及其输出: 除非被指定,否则所有的例子都假定以下命名空间被引用了: using System; using System.Threading; class ThreadTest {static void Main() {Thread t = new Threa

C#线程入门(一)

入门 概述与概念 创建和开始使用多线程 线程同步基础 同步要领 锁和线程安全 Interrupt 和 Abort 线程状态 等待句柄 同步环境 使用多线程 单元模式和Windows Forms BackgroundWorker类 ReaderWriterLock类 线程池 异步委托 计时器 局部储存 高级话题 非阻止同步 Wait和Pulse Suspend和Resume 终止线程 一.入门 1.     概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程

MySQL的进阶实战篇

[版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/69857949 出自[zejian的博客] 关联文章: MySQL的初次见面礼基础实战篇 MySQL的进阶实战篇 本篇上一篇博文MySQL的初次见面礼基础实战篇的延续,是mysql的进阶内容的记录,本篇主要知识点如下: 进阶实战篇 进阶实战篇 mysql视图机制 什么是视图 视图创建与使用 视图的本质 高效索引 使用索引的理由 索引

线程(转载)

线程(一) 文章系参考转载,英文原文网址请参考:http://www.albahari.com/threading/ 作者 Joseph Albahari,  翻译 Swanky Wu 中文翻译作者把原文放在了"google 协作"上面,GFW屏蔽,不能访问和查看,因此我根据译文和英文原版整理转载到园子里面. 本系列文章可以算是一本很出色的C#线程手册,思路清晰,要点都有介绍,看了后对C#的线程及同步等有了更深入的理解. 入门 概述与概念 创建和开始使用多线程 线程同步基础 同步要领

C#中的线程(一)入门

C#中的线程(一)入门 Keywords:C# 线程Source:http://www.albahari.com/threading/Author: Joe AlbahariTranslator: Swanky WuPublished: http://www.cnblogs.com/txw1958/Download:http://www.albahari.info/threading/threading.pdf 第一部分:入门 概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行