Physical Education Lessons

Physical Education Lessons

https://ac.nowcoder.com/acm/problem/112531

分析

非常平凡的一道题,没太大意义。这里放松,敲了一个 。有区间覆盖的,如果保证随机,其实 还是不错的。

代码

#include<bits/stdc++.h>
using namespace std;
struct Node{
    int l,r;
    mutable int c;
    bool operator <(const Node a) const {
        return l < a.l;
    }
    Node(int _l,int _r = 0,int _c = 0) {l=_l;r=_r;c=_c;}
};
set<Node> s;
#define It set<Node>::iterator 
int n,m;
int read(){int x;scanf("%d",&x);return x;}
It split(int pos) {
    It it = s.lower_bound((Node){pos,0,0});
    if(it != s.end() && it -> l == pos) return it;
    --it;int l = it->l,r = it->r,c = it -> c;
    s.erase(it);s.insert((Node){l,pos-1,c});
    return s.insert((Node){pos,r,c}).first;
}int sum;
void assgin(int l,int r,int c) {
    It itr = split(r + 1),itl = split(l);
    for(It it = itl;it != itr;++it) {
        sum -= (it->r-it->l+1) * it->c;
    }
    s.erase(itl,itr);
    s.insert((Node){l,r,c});
    sum += (r - l + 1) * c;
} 

int main() {
    n = read();m = read();
    s.insert((Node){1,n,1});sum = n;
    while(m--) {
        int l = read(),r = read(),k = read() - 1;
        assgin(l,r,k);
        printf("%d\n",sum);
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
ohs的小木屋:比不少实习待遇高了
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

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