【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个数排序,容易想到每个自己都对应着这个有序数组中的一段……而不会是互相穿插着= =因为交换一下明 ...
随机推荐
- [连载]JavaScript讲义(03)--- JavaScript面向对象编程
- linux的文本管道连接处理技巧
举例1: strace -f -e open cpp Hello.cpp -o /dev/null 2>&1 | grep -v ENOENT | awk '{print $3}' 1) ...
- sublime text3 插件配置
(转) sublme text 全程指引:http://www.cnblogs.com/figure9/p/sublime-text-complete-guide.html 使用Package Con ...
- Python开发【第九篇】:HTML (二)
python[第十四篇]HTML基础 时间:2016-08-08 20:57:27 阅读:49 评论:0 收藏:0 [点我收藏+] 标签: 什么是HTML? H ...
- Sublime Text3使用详解
Sublime Text简介 Sublime Text - 性感的代码编辑器.程序员之必备神器 Sublime Text 是一个代码编辑器,也是HTML和散文先进的文本编辑器.Sublime Text ...
- flash与php 交互(as传参给php)
一种 不传参 直接读取PHP文件 btn.addEventListener(MouseEvent.CLICK,loadTxt);function loadTxt(evt:MouseEvent):voi ...
- Dialog式的Activity(AndroidActivity生命周期)
概述 和普通的Activity跳转稍微不同的是,当第1个Activity跳转到第二个Activity后,如果点击'back'按钮(即Android键盘的按钮,则不会调用调用第一个Activity的on ...
- SQL 中的好习惯和坏习惯
在程序员日常的工作中,SQL可以说不可避免的,高效的SQL可以带来更加愉悦的体验.好的SQL书写习惯会给我们的工作带来极大的好处.简单总结下SQL的好习惯和坏习惯. IN和NOT IN 操作符 编码中 ...
- Swift - 09 - Optionals
//: Playground - noun: a place where people can play import UIKit // swift中没有被赋值的变量是不能被使用的 //var str ...
- SQL Server附加数据库拒绝访问
打开要附加的数据库文件所在的文件夹,即扩展名为mdf的文件所在的文件夹,如下图所示: 右键单击mdf文件,选择“属性”,如下图所示: 单击“安全”选项卡,如下图所示: 单击“编辑”按钮,如 ...