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 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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值