- 题目224
- 题目信息
- 运行结果
- 本题排行
- 讨论区
灯光师小明
时间限制:1000 ms | 内存限制:65535 KB
难度:1
-
描述
- 灯光师小明控制着各种晚会的各种大小灯,每次晚会小明都会对灯进行很多次操作。对每盏灯只能进行两种操作,开和关。现在小明希望自己随时都知道还有多少盏灯亮着。你需要编写一个程序当小明问你时你能快速的说出还有多少盏灯亮着,晚会开始时所有的灯都是灭的。
- 只有一组数据第一行输入两个正整数N,T(0<N<=100000,0<T<=1000000)N表示有N盏灯,T表示有T条指令。随后T行每行有一条指令,这条指令包含一个字符串,当字符串为CHANGE,它后面还有一个整数m,表示对第m盏灯进行一次操作(操作表示如果第m盏灯灯是开着时就关闭,如果灯是关着时就打开)。当字符串为QUERY,表示小明想查询现在还有多少盏灯亮着。 输出
- 每次查询指令输出占一行,输出当前亮着灯的个数 样例输入
-
10 8CHANGE 1QUERYCHANGE 2QUERYCHANGE 1CHANGE 9CHANGE 7QUERY
样例输出
-
123
-
/*
#include<stdio.h>
#include<string.h>
#define M 100100
int main(){
int n,t,a[M];
scanf("%d %d",&n,&t);
memset(a,0,sizeof(a));
int i,j;
while(t--){
char s[10];
scanf("%s",s);
if(strcmp(s,"CHANGE")==0){
scanf("%d",&j);
a[j]=~a[j];
}
if(strcmp(s,"QUERY")==0){
int js=0;
for(i=1; i<=n; i++)
if(a[i]!=0)
js++;
printf("%d\n",js);
}
}
return 0;
}
*/
//这里用循环里面套循环,出现了超时问题。
#include<stdio.h>
#include<string.h>
#define M 100010
int main(){
int n,t,a[M]={0},sum=0;
scanf("%d %d",&n,&t);
while(t--){
char s[7];
int j;
scanf("%s",s);
if(s[0]=='C'){
scanf("%d",&j);
if(a[j]==0){
a[j]=1;
sum++;
}
else{
a[j]=0;
sum--;
}
}
else
printf("%d\n",sum);
}
return 0;
}
-
-
输入