• poj 1990


    题目链接

    借鉴cxlove大神的思路

    题意:听力v,位置x,2个牛交流声音为max(v1,v2)*(x1-x2),求总的

    10000^2 tle

    用的树状数组做的,排序,2个,小于vi的牛的总数和距离总和

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    #define maxn 20005
    int arr[maxn],s[maxn];
    //pair<int , int> cow[MAXN]; 类似结构体
    struct tree
    {
        int x,v;
    }a[maxn];
    int cmp(tree a,tree b)
    {
        return a.v<b.v;
    }
    int lowbit(int x)
    {
        return x&-x;
    }
    void update(int *a,int x,int val)
    {
        while(x<maxn)
        {
            a[x]+=val;
            x+=lowbit(x);
        }
    }
    int getsum(int *a,int x)
    {
        int sum=0;
        while(x>0)
        {
            sum+=a[x];
            x-=lowbit(x);
        }
        return sum;
    }
    int main()
    {
        int n,i,j;
        while(scanf("%d",&n)!=EOF)
        {
            memset(arr,0,sizeof(arr));
            memset(s,0,sizeof(s));
            for(i=0;i<n;i++) scanf("%d%d",&a[i].v,&a[i].x);
            __int64 ans=0,total=0;
            sort(a,a+n,cmp);
            for(i=0;i<n;i++Q){
                update(arr,a[i].x,1);
                update(s,a[i].x,a[i].x);
                total+=a[i].x;
                __int64 s_num=getsum(arr,a[i].x);
                __int64 s_x=getsum(s,a[i].x);
                ans+=a[i].v*(s_num*a[i].x-s_x+total-s_x-(i+1-s_num)*a[i].x);
    
            }
            printf("%I64d
    ",ans);
        }
        return 0;
    }
    


     

  • 相关阅读:
    十一.状态设计模式
    十. 享元设计模式
    Orcale(一)概念
    java类加载器
    spring中的事务管理机制
    spring中的annotation注解类配置
    countDownLatch和Semaphore用于多线程
    布隆过滤器
    mybatis-genator自动生成的mapper中模糊查询使用方法
    java中的异常
  • 原文地址:https://www.cnblogs.com/riskyer/p/3266451.html
Copyright © 2020-2023  润新知