灯光师小明
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
灯光师小明控制着各种晚会的各种大小灯,每次晚会小明都会对灯进行很多次操作。对每盏灯只能进行两种操作,开和关。现在小明希望自己随时都知道还有多少盏灯亮着。你需要编写一个程序当小明问你时你能快速的说出还有多少盏灯亮着,晚会开始时所有的灯都是灭的。
-
输入
- 只有一组数据第一行输入两个正整数N,T(0<N<=100000,0<T<=1000000)N表示有N盏灯,T表示有T条指令。随后T行每行有一条指令,这条指令包含一个字符串,当字符串为CHANGE,它后面还有一个整数m,表示对第m盏灯进行一次操作(操作表示如果第m盏灯灯是开着时就关闭,如果灯是关着时就打开)。当字符串为QUERY,表示小明想查询现在还有多少盏灯亮着。 输出
- 每次查询指令输出占一行,输出当前亮着灯的个数 样例输入
-
10 8 CHANGE 1 QUERY CHANGE 2 QUERY CHANGE 1 CHANGE 9 CHANGE 7 QUERY
样例输出
-
1 2 3
简单的思路是直接全程模拟这个过程,一个中间变量统计着亮着的灯的数量,需要输出的时候输出.........
比较简单。直接看代码...
#include<stdio.h>
#include<string.h>
bool x[100005];
int n,m;
void slove()
{
int cnt=0;char a[15];
for(int i=0;i<m;++i)
{
scanf("%s",a);
if(a[0]=='C')//改变
{
int b;
scanf("%d",&b);
if(x[b]==0)//如果这个灯现在是暗的
{
++cnt;//增加 1
}
else//否则
{
--cnt;//减少 1
}
x[b]=!x[b];//改变状态
}
else
{
printf("%d\n",cnt);//询问的时候输出
}
}
}
int main()
{
// freopen("shuju.txt","r",stdin);
while(~scanf("%d%d",&n,&m))
{
memset(x,0,sizeof(x));//注意初始化
slove();
}
return 0;
}