zoukankan      html  css  js  c++  java
  • sgu 128

    论文啊,04年一个人的论文。

    原来线段树还可以这么用。

    贴代码。

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int MAX=10005;
    
    class BIT
    {
    public:
    int a[MAX<<1];
    
    void insert(int pos,int x)
    {
    while(pos<MAX*2)
    {
    a[pos]+=x;
    pos+=pos&(-pos);
    }
    }
    
    int query(int pos)
    {
    int ans=0;
    while(pos)
    {
    ans+=a[pos];
    pos-=pos&(-pos);
    }
    return ans;
    }
    };
    
    struct point
    {
    int x,y;
    };
    
    BIT bit;
    point p[MAX];
    int n,s[MAX],pos[MAX],up[MAX],L[MAX];
    
    int find(int x)
    {
    if(s[x]!=x) s[x]=find(s[x]);
    return s[x];
    }
    
    void Union(int x,int y)
    {
    x=find(x);
    y=find(y);
    if(x!=y) s[x]=y;
    }
    
    int cmpx(int a,int b)
    {
    if(p[a].x!=p[b].x) return p[a].x<p[b].x;
    return p[a].y<p[b].y;
    }
    
    int cmpy(int a,int b)
    {
    if(p[a].y!=p[b].y) return p[a].y<p[b].y;
    return p[a].x<p[b].x;
    }
    
    int deal()
    {
    int ans=0,i,j,k,t;
    for(int i=0;i<n;i++)s[i]=i;
    sort(pos,pos+n,cmpx);
    for(i=0;i<n;i+=2)
    {
    j=pos[i];
    k=pos[i+1];
    if(p[j].x!=p[k].x) return 0;
    ans+=p[k].y-p[j].y;
    up[j]=k;
    Union(j,k);
    }
    sort(pos,pos+n,cmpy);
    for(i=0;i<n;i+=2)
    {
    j=pos[i];
    k=pos[i+1];
    if(p[j].y!=p[k].y) return 0;
    ans+=p[k].x-p[j].x;
    L[j]=1;
    Union(j,k);
    }
    k=find(0);
    for(i=1;i<=n-1;i++) if(find(i)!=k) return 0;
    sort(pos,pos+n,cmpx);
    for(int i=0;i<n;i++)
    {
    j=pos[i];
    k=p[up[j]].y;
    t=p[j].y;
    if(up[j]&&bit.query(k+MAX)-bit.query(t+MAX+1)) return 0;
    if(L[j]) bit.insert(t+MAX+1,1);
    else bit.insert(t+MAX+1,-1);
    }
    return ans;
    }
    
    int main()
    {
    scanf("%d",&n);
    int i;
    for(int i=0;i<n;i++)scanf("%d%d",&p[i].x,&p[i].y),pos[i]=i;
    printf("%d
    ",deal());
    return 0;
    }
  • 相关阅读:
    JUnit入门
    Spring+Ibatis集成开发实例
    如花搞笑图片集锦(转贴)
    Jmeter接口測试
    java 解析国密SM2算法证书
    [BZOJ2324][ZJOI2011][最小费用最大流]营救皮卡丘
    定制ToolChain for ARM
    几种更新(Update语句)查询的方法
    linux杂谈(十七):iscsi存储分离技术
    17点50分系列-如何能让你的技术掌握的更深入?
  • 原文地址:https://www.cnblogs.com/Rainb/p/3841217.html
Copyright © 2011-2022 走看看