• URAL 1019


    跟前面某个题一样,都是区间染色问题,还是用我的老方法,区间离散化+二分区间端点+区间处理做的,时间跑的还挺短

    坑爹的情况就是最左端是0,最右端是1e9,区间求的是开区间

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <algorithm>
    using namespace std;
    typedef struct
    {
        int l;
        int r;
        bool color;
    }seg;
    seg a[5005];
    int t[10005];
    int d[10005],ct;
    int f[10005];
    
    int find(int x,int n)
    {
        int l=0,r=n-1,mid=(l+r)/2;
        while(l<r)
        {
            if(x>d[mid])l=mid+1;
            else r=mid;
            mid=(l+r)/2;
        }
        return mid;
    }
    
    int main()
    {
        int n;
            scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                char e;
                scanf("%d %d %c",&t[2*i],&t[2*i+1],&e);
                a[i].l=t[2*i];
                a[i].r=t[2*i+1];
                a[i].color=(e=='w')?0:1;
            }
            t[2*n]=0;t[2*n+1]=1e9;
            sort(t,t+2*n+2);
            ct=0;
            d[ct++]=t[0];
            for(int i=1;i<2*n+2;i++)
                if(t[i]!=t[i-1])
                d[ct++]=t[i];
            memset(f,0,sizeof(f));
            for(int i=0;i<n;i++)
            {
                   int L=find(a[i].l,ct);
                   int R=find(a[i].r,ct);
                   for(int j=L;j<R;j++)
                    f[j]=a[i].color;
            }
            int left=0;
            int max=0,a1,a2;
            for(int i=0;i<ct;i++)
            {
                if(f[i]==1||d[i]==1e9)
                {
                    if(left==d[i]){left=d[i+1];continue;}
                    else {
                            if(d[i]-left>max){
                                    max=d[i]-left;
                                    a1=left;
                                    a2=d[i];
                            }
                            left=d[i+1];
                    }
                }
            }
            printf("%d %d
    ",a1,a2);
        return 0;
    }
    


  • 相关阅读:
    初涉Django与MySQL连接
    Mysql数据库操作常用命令
    解决远程登录MYSQL数据库
    全集网影片下载
    LR学习资料
    LR性能测试说明
    fiddler
    Axure(快速原型设计工具)
    httpwatch
    Appscan(安全性测试工具)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3235559.html
Copyright © 2020-2023  润新知