【HDOJ】2492 Ping pong
线段树+离散化。
#include <cstdio>
#include <cstring>
#include <cstdlib> #define MAXN 20005
#define lson l, mid, rt<<1
#define rson mid+1, r, rt<<1|1 int buf[MAXN], bk[MAXN];
int sum[MAXN<<], n; int comp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
} void PushUP(int rt) {
sum[rt] = sum[rt<<] + sum[rt<<|];
} void build(int l, int r, int rt) {
sum[rt] = ;
if (l == r)
return ;
int mid = (l+r)>>;
build(lson);
build(rson);
} int query(int ll, int rr , int l, int r, int rt) {
if (ll<=l && r<=rr)
return sum[rt];
int mid = (l+r)>>;
int ret = ;
if (ll <= mid)
ret += query(ll, rr, lson);
if (rr > mid)
ret += query(ll, rr, rson);
return ret;
} void update(int x, int l, int r, int rt) {
if (l == r) {
++sum[rt];
return ;
}
int mid = (l+r)>>;
if (x <= mid)
update(x, lson);
else
update(x, rson);
PushUP(rt);
} int getIndex(int x) {
int l=, r=n, mid; while (l <= r) {
mid = (l+r)>>;
if (bk[mid] == x)
return mid;
if (x > bk[mid])
l = mid + ;
else
r = mid - ;
}
return ;
} int main() {
int t;
int i;
int index;
__int64 ll, lg, rl, rg;
__int64 ans; scanf("%d", &t);
while (t--) {
scanf("%d", &n);
for (i=; i<=n; ++i) {
scanf("%d", &buf[i]);
bk[i] = buf[i];
}
build(, n, );
qsort(bk+, n, sizeof(int), comp);
ans = ;
for (i=; i<=n; ++i) {
index = getIndex(buf[i]);
ll = query(, index, , n, );
lg = i--ll;
rl = index--ll;
rg = n-index-lg;
ans += ll*rg + lg*rl;
update(index, , n ,);
}
printf("%I64d\n", ans);
} return ;
}
【HDOJ】2492 Ping pong的更多相关文章
- HDU 2492 Ping pong (树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Ping pong Problem Description N(3<=N<=2000 ...
- POJ 3928 & HDU 2492 Ping pong(树阵评价倒数)
主题链接: PKU:http://poj.org/problem?id=3928 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Descript ...
- HDU 2492 Ping pong (数状数组)
Ping pong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 2492 Ping pong(数学+树状数组)(2008 Asia Regional Beijing)
Description N(3<=N<=20000) ping pong players live along a west-east street(consider the street ...
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- 【Linux】【通信】1.ping不通
关于为什么ping不通有很多种原因,但直接的表象就网络之间没有成功进行通讯: 在构建虚拟机和win之间的交互时,主要使用了3种网络模式: 桥接bridge VMnet0 主机host VMne ...
- 【HDOJ】【3506】Monkey Party
DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...
- 【HDOJ】【3516】Tree Construction
DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...
- 【HDOJ】【3480】Division
DP/四边形不等式 要求将一个可重集S分成M个子集,求子集的极差的平方和最小是多少…… 首先我们先将这N个数排序,容易想到每个自己都对应着这个有序数组中的一段……而不会是互相穿插着= =因为交换一下明 ...
随机推荐
- Discuz X2.5 用户名包含被系统屏蔽的字符[解决方法]
/uc_client/data/cache/badwords.php文件里的内容 删除并用 utf-8格式保存
- Jquery AJAX 调用WebService服务
对Jquery+JSON+WebService的一点认识 文章不错:http://www.cnblogs.com/tyb1222/archive/2011/10/13/2210549.html Jqu ...
- POJ3169 Layout(差分约束系统)
POJ3169 Layout 题意: n头牛编号为1到n,按照编号的顺序排成一列,每两头牛的之间的距离 >= 0.这些牛的距离存在着一些约束关系:1.有ml组(u, v, w)的约束关系,表示牛 ...
- poj2993 poj2669
扯淡题. 2993 #include <iostream> #include <stdio.h> #include <string> #include <st ...
- Note | 当代基督教圣约世界观 自序:古道与重建
本书从传统的基督教改革宗信仰角度,简介基督教神学十大主题--上帝论.人论.律法论.时间论.家庭论.教会论.国家论.经济论.国度论和策略论.其中上帝论.人论.教会论是传统基督教系统神学六论(上帝论. ...
- 用 Java 技术创建 RESTful Web 服务--转载
简介 JAX-RS (JSR-311) 是为 Java EE 环境下的 RESTful 服务能力提供的一种规范.它能提供对传统的基于 SOAP 的 Web 服务的一种可行替代. 在本文中,了解 JAX ...
- Linux 套接字编程中要注意的细节
隐患 1.忽略返回状态 第一个隐患很明显,但它是开发新手最容易犯的一个错误.如果您忽略函数的返回状态,当它们失败或部分成功的时候,您也许会迷失.反过来,这可能传播错误,使定位问题的源头变得困难. 捕获 ...
- C# 自定义线程修改UI(一)
在Wpf中界面显示数据的修改,都是通过UI线程完成,如果尝试从其他线程中直接修改控件的值回抛出异常,“调用线程无法访问此对象,因为另一个线程拥有该对象”. 例如:http://www.cnblogs. ...
- Wpf Hyperlink超链接控件使用
一.在Windows窗口中使用 1.点击链接使用系统默认游览器打开 <TextBlock Margin="10,20,-10,-20"> 默认: <Hyperli ...
- utils object doesn,t exists中毒后,就删除了.JS文件后台就出现了前面的英文。请问怎么解决
明显是你删了js丢失了函数了...从备份里还原一份.js出来放进去,前台也不能删,如果遇到名字冲突,修改一下名字即可