灯光师小明
时间限制:
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
来源
- [路过这]原创 上传者
/* **类型:入门级题目 **题目来源:NYOJ 212 **时间:2017/7/22 **解决方案: */ #include<stdio.h> int main() { int N, T; scanf("%d%d",&N,&T); int term = -1; int count = 0; while(T--) { char a[15]; //存放字符串 int b[N] = {0}; //记录灯的状态 ,0关1开 for(int i = 0; i <= 7; i++) { scanf("%c",&a[i]); } if(a[0]=='C') { b[a[7]] = !b[a[7]]; if(b[a[7]]) count++; else count--; } if(a[0] == 'Q') { printf("%d\n",count); } } return 0; } //上面错误 #include<stdio.h> int main() { int n, t, m, count = 0, a[100005] = {0}; char s[20]; scanf("%d%d", &n, &t); for(int i = 0; i < t; i++) { scanf("%s", s); if(s[0] == 'C') { scanf("%d", &m); a[m] = !a[m]; if(a[m]) count++; else count--; } if(s[0] == 'Q') printf("%d\n", count); } }