zzuli Camellia的难题(暴力)

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就可以了。。。刚开始还用树状数组真是多此一举,那样更慢了。。。

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 using namespace std;
 7 #define mem(x,y) memset(x,y,sizeof(x))
 8 typedef long long LL;
 9 const int MAXN=1e7+10;
10 int dt[MAXN],v[MAXN];
11 /*int lowbit(int x){return x&(-x);}
12 void update(int x,int y){
13     while(x<MAXN){
14         tree[x]+=y;
15         x+=lowbit(x);
16     }
17 }
18 int Q(int x){
19     int sum=0;
20     while(x>0){
21         sum+=tree[x];
22         x-=lowbit(x);
23     }
24     return sum;
25 }*/
26 int main(){
27     int t,n;
28     scanf("%d",&t);
29     while(t--){
30         scanf("%d",&n);
31         mem(dt,-1);
32         int flot=0,ans=0;
33         int gg,x,cc=0;
34         while(n--){
35             flot++;
36             scanf("%d",&gg);
37                 if(gg==1){
38                     scanf("%d",&x);
39                     if(dt[x]==-1)ans++;
40                     dt[x]=flot;
41                     v[cc++]=x;
42                     continue;
43                 }
44                  if(gg==2){
45                     scanf("%d",&x);
46                     if(dt[x]!=-1)ans--;
47                     dt[x]=-1;
48                     continue;
49                 }
50                 if(gg==3){
51                     for(int kk=0;kk<cc;kk++)dt[v[kk]]=-1;
52                     cc=0;
53                     ans=0;
54                     continue;
55                 }
56                  if(gg==4){
57                     scanf("%d",&x);
58                     printf("%d\n",dt[x]);
59                     continue;
60                 }
61                 if(gg==5){
62                     printf("%d\n",ans);
63                     continue;
64                 }
65             }
66         }
67     return 0;
68 } 
时间: 2024-10-09 23:07:23

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

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

http://acm.zzuli.edu.cn/problem.php?id=1784 Camellia的难题 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 119  Solved: 25 SubmitStatusWeb Board Description Camellia遇到了一个问题,她无法解决所以来求助豆子,以下是豆子所理解的问题:给定1000万个点,编号1-1000万.每个点都有一个值,初始的时候均为-1,有n个操作,操作有以下五种. 1

P1171 售货员的难题 暴力dp

题面 著名的TSP问题,NPC问题 对于数据大的情况,我们可以使用一系列近似算法进行寻找解. 对于数据规模小的情况,我们可以直接暴力dp 一开始写了一个dfs,然后就被n=20的数据卡爆了 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using std::min; const int maxn=22; int f[1<<maxn][maxn];

zzuli 1902: 985的因子对难题

***这道题明显是在卡时间,类比快速打素数表的算法,*** #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<cctype> #include<queue> #include<vector> #include<algorithm> using namespa

zone.js - 暴力之美

在ng2的开发过程中,Angular团队为我们带来了一个新的库 – zone.js.zone.js的设计灵感来源于Dart语言,它描述JavaScript执行过程的上下文,可以在异步任务之间进行持久性传递,它类似于Java中的TLS(thread-local storage: 线程本地存储)技术,zone.js则是将TLS引入到JavaScript语言中的实现框架. 那么zone.js能为我们解决什么问题呢?在回答这个问题之前,博主更希望回顾下在JavaScript开发中,我们究竟遇见了什么难题

【水】codecomb 小X的加法难题

小X的加法难题 背景 第一节编程课上,老师要求大家写一个程序计算两个正整数的和.看到小X不屑的眼神后,老师决定给小X增加难度.以求 12 和 3 的和为例,老师在 12+3 这个原始式子里加入一些无用的空格,再把它交给小X.这下小X傻眼了,希望你帮帮他. 描述 计算所给2数之和. 输入格式 第一行包含一个字符串,表示老师给小X的式子. 输出格式 8若式子的结果不超过 10 ,则第一行包含一个整数,表示式子的结果:否则第一行包含一个字符串“Large”. 样例数据 1 输入 12345+54321

暴力英语学习法 + 严格的目标管理 = 成功快速靠谱的学好英语

Updated: 留下邮件的同学,我已经将链接发到你们邮件了,没有留邮箱的同学,你们就自己到下面拿链接和密码下载吧.:) 园子里时不时就吹起一阵学英语的浪潮,不少同鞋表示一直想学,或者一直在学,就是效果不明显(你躺枪了么?)相信自己或者身边的人都或多或少吃了英语弱的当(你懂的,我们重点在说薪水的问题:).而各种英语成功学,方法论,版本是一个接一个层出不穷.今天我们不说为什么要学好英语,好处太多而且已经广为流传了,我们主要结合目标管理来讨论一下如何坚定不移的,快速的学好英语.以我自己的亲身经历作样

【转】暴力英语学习法 + 严格的目标管理 = 成功快速靠谱的学好英语

园子里时不时就吹起一阵学英语的浪潮,不少同鞋表示一直想学,或者一直在学,就是效果不明显(你躺枪了么?)相信自己或者身边的人都或多或少吃了英语弱的当(你懂的,我们重点在说薪水的问题:).而各种英语成功学,方法论,版本是一个接一个层出不穷.今天我们不说为什么要学好英语,好处太多而且已经广为流传了,我们主要结合目标管理来讨论一下如何坚定不移的,快速的学好英语.以我自己的亲身经历作样板,以下情况全部属实,绝无虚构. 先说说我在开始学英语之前的情况: 时间:2012年2月,已工作4.5年 词汇量:小于15

洛谷OJ P1379 八数码难题 解题报告

洛谷OJ P1379 八数码难题 解题报告 by MedalPluS 题目描述   在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变.   输入格式   输入初试状态,一行九个数字,空格用0表示   输出格式 只有一行,该行只有一个数字,表示从初始状态到

985的方格难题

题目连接:http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1894 1894: 985的方格难题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 458  Solved: 103 Description 985走入了一个n * n的方格地图,他已经知道其中有一个格子是坏的.现在他要从(1, 1)走到(n, n),每次只可以向下或者向右走一步,问他能否到达(n,n).若不能到达输出-1,反之输出到达(n,