• CF915E Physical Education Lessons


    洛咕

    题面:题意:Alex可不希望被开除,他想知道到期末还有多少天的工作日,这样他就能在这些日子里修体育学分。但是在这里计算工作日可不是件容易的事情:从现在到学期结束还有 (n) 天(从 (1)(n) 编号),他们一开始都是工作日。接下来学校的工作人员会依次发出 (q) 个指令,每个指令可以用三个参数 (l,r,k) 描述:

    - 如果 (k=1),那么从 (l)(r) (包含端点)的所有日子都变成工作日。

    - 如果 (k=2),那么从 (l)(r) (包含端点)的所有日子都变成工作日

    帮助Alex统计每个指令下发后,剩余的工作日天数。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<queue>
    #include<map>
    #include<set>
    #define ll long long
    #define IT set<node>::iterator
    using namespace std;
    inline int read(){
        int x=0,o=1;char ch=getchar();
        while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
        if(ch=='-')o=-1,ch=getchar();
        while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
        return x*o;
    }
    int sum;
    struct node{
    	int l,r;mutable int val;
    	node(int L,int R=-1,int V=0){l=L,r=R,val=V;}
    	bool operator <(const node &x)const{
    		return l<x.l;
    	}
    };
    set<node>s;
    inline IT split(int pos){
    	IT it=s.lower_bound(node(pos));
    	if(it!=s.end()&&it->l==pos)return it;
    	--it;
    	int l=it->l,r=it->r,val=it->val;
    	s.erase(it);
    	s.insert(node(l,pos-1,val));
    	return s.insert(node(pos,r,val)).first;
    	
    }
    inline void assign(int l,int r,int val){
        IT itr=split(r+1),itl=split(l);
        for(IT it=itl;it!=itr;++it)
            sum-=it->val*(it->r-it->l+1);
        s.erase(itl,itr);
        s.insert(node(l,r,val));
        sum+=val*(r-l+1); 
    }
    int main(){
    	int n=read(),m=read();sum=n;
    	s.insert(node(1,n,1));
    	while(m--){
    		int l=read(),r=read(),opt=read();
    		if(opt==1){
    			assign(l,r,0);
    			printf("%d
    ",sum);
    		}
    		else{
    			assign(l,r,1);
    			printf("%d
    ",sum);
    		}
    	}
        return 0;
    }
    
    
  • 相关阅读:
    微服务通过feign.RequestInterceptor传递参数
    fastdfs的storage的IP地址映射docker宿主地址
    Sentinel对Feign的支持
    SpringBoot设置MultipartFile文件大小限制
    SpringBoot+JWT@注解实现token验证
    springBoot 使用 mybatis-plus 实现分页
    MyBatis-Plus 使用xml文件
    MAC inode提示:正在查询SSLVPN网关参数... 查询SSLVPN 网关参数失败,请检查网络配置或联系
    MacOS launchctl 启动进程控制
    可执行Jar格式-1
  • 原文地址:https://www.cnblogs.com/PPXppx/p/11336414.html
Copyright © 2020-2023  润新知