Problem Description
One day Sophia finds a very big square. There are n trees in the square. They are all so tall. Sophia is very interesting in them.




She finds that trees maybe disharmony and the Disharmony Value between two trees is associated with two value called FAR and SHORT.



The FAR is defined as the following:If we rank all these trees according to their X Coordinates in ascending order.The tree with smallest X Coordinate is ranked 1th.The trees with the same X Coordinates are ranked the same. For example,if there are 5 tree with
X Coordinates 3,3,1,3,4. Then their ranks may be 2,2,1,2,5. The FAR of two trees with X Coordinate ranks D1 and D2 is defined as F = abs(D1-D2).



The SHORT is defined similar to the FAR. If we rank all these trees according to their heights in ascending order,the tree with shortest height is ranked 1th.The trees with the same heights are ranked the same. For example, if there are 5 tree with heights
4,1,9,7,4. Then their ranks may be 2,1,5,4,2. The SHORT of two trees with height ranks H1 and H2 is defined as S=min(H1,H2).



Two tree’s Disharmony Value is defined as F*S. So from the definition above we can see that, if two trees’s FAR is larger , the Disharmony Value is bigger. And the Disharmony value is also associated with the shorter one of the two trees. 



Now give you every tree’s X Coordinate and their height , Please tell Sophia the sum of every two trees’s Disharmony value among all trees.
 
Input
There are several test cases in the input



For each test case, the first line contain one integer N (2 <= N <= 100,000) N represents the number of trees.



Then following N lines, each line contain two integers : X, H (0 < X,H <=1,000,000,000 ), indicating the tree is located in Coordinates X and its height is H.
 
Output
For each test case output the sum of every two trees’s Disharmony value among all trees. The answer is within signed 64-bit integer.
 
Sample Input
2
10 100
20 200
4
10 100
50 500
20 200
20 100
 
Sample Output
1 13 这道题和之前那题几乎相同。开两个一维树状数组b1,b2。分别维护x的位置和小于等于x位置的个数。 先对x,h进行离散化,用r1,r2储存他们的名次。然后按h大小从大到小的顺序依次枚举即可了。
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;
struct node{
int x,h,r1,r2;
}a[100006];
int b1[100006],b2[100006],n; bool cmp1(node a,node b){
return a.x<b.x;
}
bool cmp2(node a,node b){
return a.h<b.h;
} int lowbit(int x){
return x&(-x);
}
void update1(int pos,int num)
{
while(pos<=n){
b1[pos]+=num;pos+=lowbit(pos);
}
}
int getsum1(int pos)
{
int num=0;
while(pos>0){
num+=b1[pos];pos-=lowbit(pos);
}
return num;
} void update2(int pos,int num)
{
while(pos<=n){
b2[pos]+=num;pos+=lowbit(pos);
}
}
int getsum2(int pos)
{
int num=0;
while(pos>0){
num+=b2[pos];pos-=lowbit(pos);
}
return num;
} int main()
{
int m,i,j,p,t1,t2;
__int64 sum,sum1;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++){
scanf("%d%d",&a[i].x,&a[i].h);
b1[i]=b2[i]=0;
}
sort(a+1,a+1+n,cmp1);
a[1].r1=1;p=1;
for(i=2;i<=n;i++){
if(a[i].x==a[p].x){
a[i].r1=a[p].r1;
}
else{
a[i].r1=i;p=i;
}
}
sort(a+1,a+1+n,cmp2);
a[1].r2=1;p=1;
for(i=2;i<=n;i++){
if(a[i].h==a[p].h){
a[i].r2=a[p].r2;
}
else{
a[i].r2=i;p=i;
}
} sum=0;sum1=0;
for(i=n;i>=1;i--){
t1=getsum1(a[i].r1);
t2=getsum2(a[i].r1);
sum+=a[i].r2*( t2*a[i].r1-t1 + sum1-t1-(n-i-t2)*a[i].r1 );
sum1+=a[i].r1;
update1(a[i].r1,a[i].r1);
update2(a[i].r1,1);
//printf("%I64d\n",sum);
}
printf("%I64d\n",sum);
}
}

hdu3015 Disharmony Trees的更多相关文章

  1. HDU-3015 Disharmony Trees [数状数组]

    Problem Description One day Sophia finds a very big square. There are n trees in the square. They ar ...

  2. Disharmony Trees 树状数组

    Disharmony Trees Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

  3. Disharmony Trees

    /* 写完这篇博客有很多感慨,过去一段时间都是看完题解刷题,刷题,看会题解,没有了大一那个时候什么都不会的时候刷题的感觉,这个题做了一天半,从开始到结束都是从头开始自己构思的很有感觉,找回到当初的感觉 ...

  4. hdu 3015 Disharmony Trees (离散化+树状数组)

    Disharmony Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. Disharmony Trees HDU - 3015

    Disharmony Trees HDU - 3015 One day Sophia finds a very big square. There are n trees in the square. ...

  6. HDU 3015 Disharmony Trees(树状数组)

    题意:给你n棵树,每棵树上有两个权值X H 对于X离散化 :3 7 1 5 3 6 -> 2 6 1 4 2 5,对于H一样 然后F = abs(X1-X2)   S=min(H1,H2) 求出 ...

  7. HDU 3015 Disharmony Trees

    题解:在路边有一行树,给出它们的坐标和高度,先按X坐标排序.记录排名,记为rankx,再按它们的高度排序,记录排名,记为rankh.两颗树i,j的差异度为 fabs(rankx[i]-rankx[j] ...

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

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

  9. HDU 3015 Disharmony Trees 【 树状数组 】

    题意:给出n棵树,给出横坐标x,还有它们的高度h,先按照横坐标排序,则它们的横坐标记为xx, 再按照它们的高度排序,记为hh 两颗树的差异度为 abs(xx[i] - xx[j]) * min(hh[ ...

随机推荐

  1. javascript 关于 this 作用域链

    使用 function f() {}  或者 var f = function() {}  来定义的函数,this 是指向 全局对象   var  a = {    b: 1,    c: funct ...

  2. ④bootstrap列表使用基础案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Kotlin实现LeetCode算法题之Two Sum

    LeetCode介绍 LeetCode是算法练习.交流等多功能网站,感兴趣的同学可以关注下(老司机请超车).页面顶部的Problems菜单对应算法题库,附带历史通过滤.难易程度等信息. 未来计划 打算 ...

  4. ldap数据库--ODSEE--schema

    ldap服务器包含上百个对象类型(object class)和属性,这些对象类和属性都可以满足大部分需求,如果你想定义自己的schema,你只能继承扩展现有的schema进行操作. tip: 增加的新 ...

  5. openstack学习心得:glance 架构、概念、后端存储配置方式

    glance 架构 glance 服务概述 Image 服务 使得用户可以发现.注册.检索虚拟机镜像.它对外提供REST API使得你能够查询虚拟机镜像元数据和检索一个真实的镜像.你可以通过镜像服务将 ...

  6. C#动态获取鼠标坐标

    .Net封装好的方法 int Control.MousePosition.X;int Control.MousePosition.Y; 用API方法 using System.Runtime.Inte ...

  7. 我两年的web开发生涯

    我两年的web开发生涯 与以前的文章分享给大家自己的知识和观点不同,这篇文章更多的是写给自己的总结. 现在是 2017年10月18. 从 2015年9月 开始接触前端开发,至今两年零一个月. 从 20 ...

  8. [Egret]长按图片分享、分享图片、本地存储

    egret 分享有API可以把一个显示对象树渲染成一个位图纹理,我把它赋值给 HTML 的 Image 元素,就实现了图片的显示,在微信中,通过长按图片可以分享出去.当然在其他浏览器可以保存在本地. ...

  9. JavaScript学习笔记(八)——变量的作用域与解构赋值

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  10. angular 使用概术

    框架技术细节说明 must 该文档详细说明了基于Angular的机制及关键技术. 目录: - 路由机制 - 通过路由来切分页面模块 - Lazyload机制 - 指令 - 程序bootstrap - ...