题解 | 染色(一道不太一样的差分)

染色

https://www.nowcoder.com/practice/fb48f6284a0f4e198f0bf2a988f703f8

利用差分思想来表示是否含有某个特征,并且进行叠加,最终通过前缀和的方式求出是否含有这一特征。

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector<vector<int>>v;

int main() {
    int n,m;cin>>n>>m;
    v.assign(n+2,vector<int>(4,0));

    for (int i = 0;i < m;i++){
        int l,r,k;cin>>l>>r>>k;
        v[l][k]++;v[r+1][k]--;
    }

    vector<int>t(4,0);int cnt = 0;
    for (int i = 0;i < n;i++){
        for (int j = 1;j <= 3;j++){
            t[j]+=v[i][j];
        }
        if (t[1] > 0&&t[2] > 0&&t[3] <= 0)cnt++;
    }cout<<cnt;
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

01-12 17:45
门头沟学院 Java
叁六玖:这样的应该钱不多,以前我也被问,我在问他们实习公工资多少,一般都是2200-2800
找实习记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务