zoukankan      html  css  js  c++  java
  • POJ24810 Cows

    题目大意

    给定N对二元组(s,e),对于第i对二元组(s[i],e[i]),在前1~i-1对二元组中计算出符合这样要求的二元组(s[j],e[j])的总数量,s[j]<=s[i],e[j]>=e[i],并且e[j]-s[j]>e[i]-s[i]。

    题解

    先按e降序排序,如果e相等则按s升序排序,这样处理之后,接下来就和POJ2352的stars的处理是一样的,对于第i个数,只要小于a[i].s的数都是符合要求的。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define MAXN 100005
    using namespace std;
    typedef struct
    {
        int x;
        int y;
        int id;
    } NODE;
    NODE a[MAXN];
    int c[MAXN],f[MAXN];
    int n;
    int lowbit(int x)
    {
        return x&-x;
    }
    int sum(int x)
    {
        int ret=0;
        while(x>0)
        {
            ret+=c[x];
            x-=lowbit(x);
        }
        return ret;
    }
    void add(int x)
    {
        while(x<=MAXN)
        {
            c[x]++;
            x+=lowbit(x);
        }
    
    }
    bool cmp(NODE a,NODE b)
    {
        if(a.y==b.y)
            return a.x<b.x;
        return a.y>b.y;
    }
    int main(void)
    {
        int i,n,ans;
        while(scanf("%d",&n)!=EOF&&n)
        {
            memset(c,0,sizeof(c));
            for(i=1; i<=n; i++)
            {
                scanf("%d%d",&a[i].x,&a[i].y);
                a[i].x++;
                a[i].y++;
                a[i].id=i;
            }
            sort(a+1,a+n+1,cmp);
            for(i=1;i<=n;i++)
            cout<<a[i].x<<' '<<a[i].y<<endl;
            for(i=1; i<=n; i++)
                if(i>1&&a[i].x==a[i-1].x&&a[i].y==a[i-1].y)
                {
                    f[a[i].id]=ans;
                    add(a[i].x);
    
                }
                else
                {
                    ans=sum(a[i].x);
                    f[a[i].id]=ans;
                    add(a[i].x);
                }
            for(i=1; i<n; i++)
                printf("%d ",f[i]);
            printf("%d\n",f[i]);
        }
    }
  • 相关阅读:
    jquery toggle(listenerOdd, listenerEven)
    struts quick start
    hdu 1518 Square (dfs)
    hdu 2544 最短路 (最短路径)
    hdu 1754 I Hate It (线段树)
    hdu 1856 More is better (并查集)
    hdu 1358 Period (KMP)
    hdu 2616 Kill the monster (DFS)
    hdu 2579 Dating with girls(2) (bfs)
    zoj 2110 Tempter of the Bone (dfs)
  • 原文地址:https://www.cnblogs.com/zjbztianya/p/3031537.html
Copyright © 2011-2022 走看看