垃圾poj交不上去

/*
按权值从小到大排序,
两个树状数组维护权值小于等于并且在i左边的点的个数和权值
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define maxn 20005
#define ll long long
struct node{
int w,x;
bool operator<(const node & a)const {
return w<a.w;
}
}a[maxn];
int n;
ll bitcnt[maxn],bittot[maxn],sum;
void add1(int x,int val){//bitcnt
for(int i=x;i<=;i+=i&-i)
bitcnt[i]+=val;
}
void add2(int x,int val){//bittot
for(int i=x;i<=;i+=i&-i)
bittot[i]+=val;
}
ll query1(int x){
ll res=;
for(int i=x;i;i-=i&-i)
res+=bitcnt[i];
return res;
}
ll query2(int x){
ll res=;
for(int i=x;i;i-=i&-i)
res+=bittot[i];
return res;
} int main(){
while(scanf("%d",&n)==){
memset(bitcnt,,sizeof bitcnt);
memset(bittot,,sizeof bittot);
sum=; for(int i=;i<n;i++) scanf("%d%d",&a[i].w,&a[i].x);
sort(a,a+n); ll ans=;
for(int i=;i<n;i++){
ll left_node=query1(a[i].x);
ll left_total=query2(a[i].x); ans+=a[i].w*(left_node*a[i].x-left_total);
ans+=a[i].w*((sum-left_total-(i-left_node)*a[i].x));
sum+=a[i].x;
add1(a[i].x,);
add2(a[i].x,a[i].x);
}
printf("%lld\n",ans);
}
return ;
}

poj1990两个树状数组的更多相关文章

  1. POJ-1990 MooFest---两个树状数组

    题目链接: https://vjudge.net/problem/POJ-1990 题目大意: 一群牛参加完牛的节日后都有了不同程度的耳聋,第i头牛听见别人的讲话,别人的音量必须大于v[i],当两头牛 ...

  2. hdu-3015 Disharmony Trees---离散化+两个树状数组

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3015 题目大意: 有一些树,这些树的高度和位置给出.现在高度和位置都按从小到大排序,对应一个新的ra ...

  3. hdu3015,poj1990树状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3015 题意:给定n组数,每组数有值x和值h,求n组数两两的val的总和.将所有x和所有h分别离散化(不 ...

  4. poj1990树状数组

    Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gather ...

  5. hdu3015树状数组 poj1990的离散化版本

    都是一类题目,推导调试比较烦,想出来还是不难的 /* 给定n个点对,按一维升序排序一次,每个点的序号为Di,按二维升序排序一次,每个点的序号为Hi 求sum{w(i,j)} w(i,j)=abs(Di ...

  6. Inversion_树状数组***

    Problem Description You have a sequence {a1,a2,...,an} and you can delete a contiguous subsequence o ...

  7. HDU5792 World is Exploding(树状数组)

    一共6种情况,a < b且Aa < Ab, c < d 且Ac > Ad,这两种情况数量相乘,再减去a = c, a = d, b = c, b = d这四种情况,使用树状数组 ...

  8. POJ 1990 MooFest(树状数组)

                                                                        MooFest Time Limit: 1000MS   Mem ...

  9. hdu-5497 Inversion(滑动窗口+树状数组)

    题目链接: Inversion Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

随机推荐

  1. js格式化日期工具类

    就是一个工具类  开箱即用 传进一个指定的参数,格式化 //将时间戳格式化 function getMyDate(time){ if(typeof(time)=="undefined&quo ...

  2. java虚拟内存设置 防止内存溢出 OutOfMemory【转】【原】

    outofmemory permgen 这个问题主要还是由 java.lang.OutOfMemoryError: Java heap space 引起的. 有这两种解决方法: 1.设置环境变量 解决 ...

  3. STM32固件库下载地址

    http://www.stmcu.org/document/list/index/sort-hot/category-517找标准外设库命名的资源

  4. 23. Spring Boot JPA BaseDao 配置 文章

    参考文献:(早期JPA版本的描述) https://blog.csdn.net/yingxiake/article/details/51017797 https://www.jianshu.com/p ...

  5. 六道JavaScript测验题

    1.找出数字数组中最大的元素(使用Match.max函数) var a=[123,23432,345,3,34]; console.log(Math.max.apply(null,a)); 2.转化一 ...

  6. 20155220 2016-2017-2 《Java程序设计》第七周学习总结

    20155220 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 Lambda 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只有Lamb ...

  7. pyqt5-布局控件

    在布局中添加控件用addWidght(),添加布局用addLayout() 垂直布局QVBoxLayout 需要导入  from PyQt5.QtWidgets import QVBoxLayout ...

  8. Java SE之正则表达式Demo

    @Test public void regex() {//匹配教务系统课程 // String content = "公共机座 (1-10)".replaceAll(" ...

  9. 第16月第17天 contentMode

    1. self.contentMode = UIViewContentModeScaleAspectFill; self.clipsToBounds = YES; http://blog.csdn.n ...

  10. EOF \n \0 NULL 之间的区别

    \n 是换行符 \0 是字符串的结束标志 EOF是流的结束标志 FILE* 这种流 NULL 是指针为空 第一个问题是EOF  它是end of file的缩写,表示"文字流"(s ...