#include using namespace std; const int N = 11; int a[N] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; void print() { int s = 0; for (int i = 1; i < N; i++) { s += a[i]; cout << s % 2 << " "; } cout << "\n"; } int main() { /* 01矩阵+区间修改+单点查询 <=> 非01矩阵+单点修改+区间前缀和查询 办法: ① 区间[l,r]取反 => 单点修改:a[l]++,a[r+1]++ ② 单点查询a[k] => 区间前缀和查询: sum(a[1~k])%2 */ //将2-4取反 a[2]++, a[4 + 1]--; print(); //将2-4再取一次反 a[2]++, a[4 + 1]--; print(); //将3-4再取一次反 a[3]++, a[4 + 1]--; print(); return 0; } /* 输出: 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 */