• CF429E Points and Segments


    链接 CF429E Points and Segments

    • 给定(n)条线段,然后给这些线段红蓝染色,求最后直线上上任意一个点被蓝色及红色线段覆盖次数之差的绝对值不大于(1),构造方案,(nleq10^5)
    • 欧拉回路。
    • 考虑差分的思想(一般这样的区间覆盖问题都可以转化成差分,变成两两匹配问题。),一个线段被染色也就是(l++),((r+1)--)
    • 设从(l)(r+1)边为红色,(r+1)(l)的边为蓝色。
    • 那么我们就在考虑怎么样遍历这张图,使得每个点入度出度差小于等于(1)
    • 这样不好做,新加入一些(0)边,表示不做处理,也就是最后颜色之差等于(1)
    • 问题就变成了找到一些路径使得每个点出度入度相等。
    • 求一个欧拉回路即可。
    //CF429E Points and Segments
    #include<bits/stdc++.h>
    #define R register int
    #define ll long long 
    using namespace std;
    const int N=500001;
    int n,len,cnt,O[N],fid[N],vis[N],du[N];
    int hd[N],to[N],nt[N],w[N],ans[N];
    void link(R f,R t,R d){nt[++cnt]=hd[f],w[cnt]=d,to[cnt]=t,hd[f]=cnt;}
    struct Qs{int l,r;}Q[N];
    int gi(){
        R x=0,k=1;char c=getchar();
        while((c<'0'||c>'9')&&c!='-')c=getchar();
        if(c=='-')k=-1,c=getchar();
        while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();
        return x*k;
    }
    void Dfs(R i){
        fid[i]=1;
        for(R &k=hd[i];k;k=nt[k])
            if(!vis[k]){
                vis[k]=vis[k^1]=1,ans[w[k]]=(i<to[k]);
                Dfs(to[k]);
            }
    }
    int main(){
        n=gi(),cnt=1;
        for(R i=1;i<=n;++i){
            Q[i].l=gi(),Q[i].r=gi()+1;
            O[++len]=Q[i].l,O[++len]=Q[i].r;
        }
        sort(O+1,O+len+1),len=unique(O+1,O+len+1)-O-1;
        for(R i=1;i<=n;++i){
            Q[i].l=lower_bound(O+1,O+len+1,Q[i].l)-O;
            Q[i].r=lower_bound(O+1,O+len+1,Q[i].r)-O;
            link(Q[i].l,Q[i].r,i),link(Q[i].r,Q[i].l,i);
            du[Q[i].l]++,du[Q[i].r]++;
        }
        R las=0;
        for(R i=1;i<=len;++i)
            if(du[i]&1){
                if(las)link(las,i,0),link(i,las,0),du[i]++,du[las]++,las=0;
                else las=i;
            }
        for(R i=1;i<=len;++i)if(!fid[i])Dfs(i);
        for(R i=1;i<=n;++i)putchar(ans[i]+'0'),putchar(' ');
        return 0;
    }
    
    
  • 相关阅读:
    【CentOS 7】关于php留言本网站的搭建
    linux系统的初化始配置(临时生效和永久生效)
    时间同步ntp服务的安装与配置(作为客户端的配置)
    CentOS 7设置服务的开机启动
    辅助模型——通信图
    一.面向对象概论
    辅助模型——包图
    构建图
    部署图
    辅助模型——状态机图
  • 原文地址:https://www.cnblogs.com/Tyher/p/9811496.html
Copyright © 2020-2023  润新知