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]);
        }
    }
  • 相关阅读:
    POJ 2112 二分+最大流
    POJ 3281 最大流
    枚举------暴力与优化
    动态规划入门
    简单二叉树
    花式WA
    18年第十二届东北四省赛
    18年第十三届黑龙江省赛
    ACM中的java的使用;
    CF#483(div2 C)
  • 原文地址:https://www.cnblogs.com/zjbztianya/p/3031537.html
Copyright © 2011-2022 走看看