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 = ; int v[N], pre[N]; int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int n, i, sum=, k=, x, p; scanf("%d", &n);
memset(v, -, sizeof(v)); for(i=; i<=n; i++)
{
scanf("%d", &p);
if(p==)
{
scanf("%d", &x);
if(v[x]==-) sum++;
v[x] = i;
pre[k++] = x;
}
else if(p==)
{
scanf("%d", &x);
if(v[x]!=-) sum--;
v[x] = -;
}
else if(p==)
{
for(int j=; j<k; j++) v[pre[j]]=-;
sum = ;
k=;
}
else if(p==)
{
scanf("%d", &x);
printf("%d\n", v[x]);
}
else
{
printf("%d\n", sum);
}
}
}
return ;
}

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

  1. zzuli Camellia的难题(暴力)

    1784: Camellia的难题 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 67  Solved: 14SubmitStatusWeb Boar ...

  2. 暴力破解FTP服务器技术探讨与防范措施

    暴力破解FTP服务器技术探讨与防范措施 随着Internet的发展出现了由于大量傻瓜化黑客工具任何一种黑客攻击手段的门槛都降低了很多但是暴力破解法的工具制作都已经非常容易大家通常会认为暴力破解攻击只是 ...

  3. C#线程入门---转载

    C#中的线程(一)入门 文章系参考转载,英文原文网址请参考:http://www.albahari.com/threading/ 作者 Joseph Albahari,  翻译 Swanky Wu 中 ...

  4. C#中的线程(一)入门

    文章系参考转载,英文原文网址请参考:http://www.albahari.com/threading/ 作者 Joseph Albahari,  翻译 Swanky Wu 中文翻译作者把原文放在了& ...

  5. C# 线程(一)

    From : http://www.cnblogs.com/miniwiki/archive/2010/06/18/1760540.html 文章系参考转载,英文原文网址请参考:http://www. ...

  6. C# 线程问题

    一:概述和概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线程&quo ...

  7. C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏

    1.     概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线 ...

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

    线程用Thread类来创建, 通过ThreadStart委托来指明方法从哪里开始运行.ThreadStart的声明如下: public delegate void ThreadStart(); 调用S ...

  9. C#中的多线程-入门

    概述与概念C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多 ...

随机推荐

  1. Vue 数据的双向绑定

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. spec文件写作规范

    spec文件写作规范 2008-09-28 11:52:17 分类: LINUX 1.The RPM system assumes five RPM directories BUILD:rpmbuil ...

  3. nested exception is java.lang.NoClassDefFoundError: org/springframework/dao/support/PersistenceExceptionTranslator

    该问题是少了一个spring-tx-的jar包,把该包加入到buildpath中就行了. 参考链接:http://blog.csdn.net/Rongbo_J/article/details/4666 ...

  4. nodejs 如何操作字节在内存中的位置问题 BE LE

    上代码 function testNumber() { var arr = new Int32Array(1); arr[0] = 1234; var buf1 = Buffer.from(arr); ...

  5. sql 用Group by分组后,取每组的前几条记录

    转自:http://blog.163.com/jeson_lwj/blog/static/135761083201052411115783/ --查询每门课程的前2名成绩 CREATE TABLE S ...

  6. 7-性能测试i报告

    性能测试报告概述 1.测试报告是指把测试的过程和结果写成文档:对发现的问题和缺陷进行分析:为纠正软件的存在的质量问题提供依据: 为软件验收和交付打下基础 2.性能测试报告属于软件测试报告的一种,主要针 ...

  7. js对象通过属性路径获取属性值 - getPropByPath

    function getPropByPath(obj, path) { let tempObj = obj; path = path.replace(/\[(\w+)\]/g, '.$1'); pat ...

  8. 2017/2/10springMVC中文乱码问题

    springMVC中文乱码问题 一:从jsp传到后台控制出现的乱码有以下两个方面: 1.当提交方式为get的时候(因为字符拦截器无法拦截get): 修改方法为: 再改工程里的tomcat的配置文件se ...

  9. php socket通过smtp发送邮件(纯文本、HTML,多收件人,多抄送,多密送)

    <?php /** * 邮件发送类 * 支持发送纯文本邮件和HTML格式的邮件,可以多收件人,多抄送,多秘密抄送 * @example * $mail = new MySendMail(); * ...

  10. 2018.11.07 NOIP训练 L的鞋子(权值分块+莫队)

    传送门 乱搞题. 我直接对权值分块+莫队水过了. 不过调了30min30min30min发现ststst表挂了是真的不想说什么233. 代码