题解 | #涂颜料#(C++)
涂颜料
https://www.nowcoder.com/practice/4ef038ae1c5f4524b8a8a0c1e6b062a1
解题方法:差分数组。需要注意对未涂色的判断(0表示未涂色)
#include <iostream> using namespace std; const int MAXN = 1e6+10; int n; int a[MAXN]; int main() { scanf("%d",&n); int q; scanf("%d",&q); while(q--){ int l,r; scanf("%d%d",&l,&r); a[l]++; //差分数组,a的前缀和表示多次区间修改后的值 a[r+1]--; } for(int i=1;i<=n;++i){ a[i] += a[i-1]; if(a[i]==0)cout<<"O"; else if(a[i]%3==0)cout<<"B"; else if(a[i]%3==1)cout<<"R"; else cout<<"G"; } cout<<endl; } // 64 位输出请用 printf("%lld")