题解:B4106 [CSP-X2024 山东] 翻硬币

· · 题解

我们先做一次差分,就可以得到,一个硬币被反转了几次,如果反转了偶数答案就是 0,奇数次就是 1

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,m,a[N];
int main()
{
    cin>>n>>m;
    while(m--)
    {
        int x,y;
        cin>>x>>y;
        a[x]++,a[y+1]--;
    }
    for(int i=1;i<=n;++i)
    {
        a[i]+=a[i-1];
        cout<<a[i]%2;
    }
    return 0;
}