📅  最后修改于: 2023-12-03 15:28:42.658000             🧑  作者: Mango
有一个由若干个门组成的通道,每个门都有两个状态:打开和关闭。初始时所有的门都是关闭状态。进行n次操作,每次操作中选择一些门,然后将这些门的状态取反。求最终所有门状态的情况。
第一行一个整数t表示数据组数。
对于每组数据,第一行一个整数n表示进行操作的次数。
接下来的n行,每行开头两个整数p和q,表示对门的编号为[p, q]的门进行状态取反。
对于每组数据,输出一行表示最终门的状态,用空格分隔每个门的状态,0表示关闭状态,1表示打开状态。
输入:
2
3
1 2
2 3
1 3
4
1 3
2 4
1 4
3 3
输出:
1 0 1
0 0 1 1
我们可以使用一个数组来保存门的状态,其中0表示关闭,1表示打开。每次操作时,根据给定范围更新状态即可。
```python
def gate_doors(n, operations):
doors = [0] * 1000000 # 数组长度至少为题目要求的100000
for p, q in operations:
for i in range(p-1, q):
doors[i] = 1 - doors[i] # 取反
return ' '.join(map(str, doors[:n]))
t = int(input())
for _ in range(t):
n = int(input())
operations = [list(map(int, input().split())) for _ in range(n)]
print(gate_doors(n, operations))