1784: Camellia的难题

Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 67  Solved: 14
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
题解:这个题就是给一系列操作,其中4和5是询问。。。
暴力,以前一直用memset,想怎么用就怎么用,谁知道这次就挂挂了,原来memset很慢的,运行时间是sizeof(dt);这次的时间就是n*sizeof(dt)所以会超时,所以,想着用一个数组保存不是-1的数,当操作3的时候只需要将不是-1的数改成-1就可以了。。。刚开始还用树状数组真是多此一举,那样更慢了。。。
代码:
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define mem(x,y) memset(x,y,sizeof(x))
typedef long long LL;
const int MAXN=1e7+;
int dt[MAXN],v[MAXN];
/*int lowbit(int x){return x&(-x);}
void update(int x,int y){
while(x<MAXN){
tree[x]+=y;
x+=lowbit(x);
}
}
int Q(int x){
int sum=0;
while(x>0){
sum+=tree[x];
x-=lowbit(x);
}
return sum;
}*/
int main(){
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
mem(dt,-);
int flot=,ans=;
int gg,x,cc=;
while(n--){
flot++;
scanf("%d",&gg);
if(gg==){
scanf("%d",&x);
if(dt[x]==-)ans++;
dt[x]=flot;
v[cc++]=x;
continue;
}
if(gg==){
scanf("%d",&x);
if(dt[x]!=-)ans--;
dt[x]=-;
continue;
}
if(gg==){
for(int kk=;kk<cc;kk++)dt[v[kk]]=-;
cc=;
ans=;
continue;
}
if(gg==){
scanf("%d",&x);
printf("%d\n",dt[x]);
continue;
}
if(gg==){
printf("%d\n",ans);
continue;
}
}
}
return ;
}

zzuli Camellia的难题(暴力)的更多相关文章

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

    http://acm.zzuli.edu.cn/problem.php?id=1784 Camellia的难题 Time Limit: 2 Sec  Memory Limit: 128 MBSubmi ...

  2. P1171 售货员的难题 暴力dp

    题面 著名的TSP问题,NPC问题 对于数据大的情况,我们可以使用一系列近似算法进行寻找解. 对于数据规模小的情况,我们可以直接暴力dp 一开始写了一个dfs,然后就被n=20的数据卡爆了 #incl ...

  3. (暴力+优化)学渣的逆袭 -- zzuli -- 1785

    http://acm.zzuli.edu.cn/problem.php?id=1785 学渣的逆袭 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 82  ...

  4. 【P1379】八数码难题(搜索+暴力)

    这个题真是... 不想说什么了,及其复杂和烦人的一道题.基础思路就是bfs,用两个队列分别进行0的位置的计算和每一步的状态..然而这个题最重要的一点在于判重,实际上可以康托展开用全排列的个数进行判重, ...

  5. UVA 810 A Dicey Promblem 筛子难题 (暴力BFS+状态处理)

    读懂题意以后还很容易做的, 和AbbottsRevenge类似加一个维度,筛子的形态,可以用上方的点数u和前面的点数f来表示,相对的面点数之和为7,可以预先存储u和f的对应右边的点数,点数转化就很容易 ...

  6. zone.js - 暴力之美

    在ng2的开发过程中,Angular团队为我们带来了一个新的库 – zone.js.zone.js的设计灵感来源于Dart语言,它描述JavaScript执行过程的上下文,可以在异步任务之间进行持久性 ...

  7. [Leetcode]双项队列解决滑动窗口最大值难题

    这道题是从优先队列的难题里面找到的一个题目.可是解法并不是优先队列,而是双项队列deque 其实只要知道思路,这一道题直接写没有太大的问题.我们看看题 给定一个数组 nums,有一个大小为 k 的滑动 ...

  8. NOJ——1669xor的难题(详细的树状数组扩展—异或求和)

    [1669] xor的难题 时间限制: 1000 ms 内存限制: 65535 K 问题描述 最近Alex学长有个问题被困扰了很久,就是有同学给他n个数,然后给你m个查询,然后每个查询给你l和r(左下 ...

  9. 洛谷 P1171 售货员的难题

    P1171 售货员的难题 题目背景 数据有更改 题目描述 某乡有n个村庄(1<n<20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且 ...

随机推荐

  1. Uber选拔专车司机:五年以上驾驶经验 两小时视频培训

    摘要:说起当时下流行打车软件Uber的司机,还得从春节前在上海一次打车说起.那几天,记者在上海某商场逛到打烊时间,大包小包拎着袋子根本腾不出手拦出租车,而商场门口的出租车临时停靠点更是挤满“血拼”而归 ...

  2. js中赋值表达式的值为右边

    var name="the window";var o={ name:"the object", getName:function(){ console.log ...

  3. 纯CSS写九宫格样式,高宽自适应正方形

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

  4. wpf将表中数据显示到datagrid示例(转)

    原文:http://www.jb51.net/article/47120.htm 这篇文章主要介绍了wpf将表中数据显示到datagrid示例,需要的朋友可以参考下 a.在.xaml文件中拖入一个da ...

  5. HDU 1222(数论,最大公约数)

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Descr ...

  6. Jquery调用webService的四种方法 转载-记录

    我总结几个关键点 1. 服务必须声明为ScriptService(否则会出现下面的问题) 2.服务的方法不需要任何更改,保持原状 3.客户端用jquery的.ajax方法来调用 3.1 type必须是 ...

  7. IOS数据本地存储的四种方式--

    注:借鉴于:http://blog.csdn.net/jianjianyuer/article/details/8556024 在IOS开发过程中,不管是做什么应用,都会碰到数据保存问题.将数据保存到 ...

  8. Python学习之一

    运行Python的步骤 1 加载内存 2 词法分析  3 语法分析 4编译字节码=>机器码  5运行   11:03:49 2016-01-11

  9. 软件源(Software Sources)

    写在前面:浏览了很多国内外的网站,看了很多关于软件源(Software Sources)设置的文章,发现有很多文章中对软件源的设置存在误解,为了让新人能顺利进入Ubuntu的大家庭,特地作此文,详细地 ...

  10. C# Programming Study #1

    引用的时候需要在参数和使用的时候加上 ref 关键字 static bool addnum (ref int val) //引用 { ++val; return true; } 参数数组的概念,可以接 ...