【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个数排序,容易想到每个自己都对应着这个有序数组中的一段……而不会是互相穿插着= =因为交换一下明 ...
随机推荐
- Structual设计--Flyweight模式
1.意图 运用共享技术有效地支持大量细粒度的对象. 2.别名 无 3.动机 有些应用程序得意于在其整个设计过程中採用对象技术,但简单化的实现代价极大.如我们在使用word的时候.假设设置正文字体为:t ...
- 关于配置tnsnames来使用PLSQL连接数据库
关于配置tnsnames来使用PLSQL连接数据库 要想用ORACLE SQLdeveloper或者第三方工具PLSQLdeveloper.Toad等连接ORACLE数据库,必需要配置TNSnames ...
- ubuntu下安装tomcat和配置mysql
1.到官网 http://jakarta.apache.org/tomcat-7.0.2.tar.gz 安装文件,JDK假设已经安装完毕,接下来直接安装tomcat-7.0.2.tar.gz # ls ...
- Android系统移植与驱动开发——第七章——LED驱动
LED驱动的实现原理 编写LED驱动: 测试LED驱动之前需要用USB数据线连接开发板,然后打开电源,成功启动之后,执行build.sh脚本文件编译和安装LED驱动,顺利则会自动连接 如果有多个设备文 ...
- 【iOS UISearchBar父控件是UIScrollView时,上移的问题】
如果UISearchViewController的父控件是UIScrollView,点击UISearchBar后,它会移出控制器外.如下,使用UIScrollView作为"消息"和 ...
- C#学习第二天
在C#中数据类型大概有两类:值类型和引用类型,需要由定义类型的开发人员决定在什么地方分配一个实例. 值类型和引用类型在使用原理上也有所不同,值类型在使用时是传递或者得到一个值的副本,而引用类型在使用时 ...
- ASP.NET-FineUI开发实践-12
1.网上找到了行合并的示例,extjs写的,我把它挪过来改了下,FineUI也能用,就是只能放着看,选择和编辑行扩展列没有测试,放出来大家看着用吧. <script> F.ready(fu ...
- 移动页面缩放方法之(二)控制HTML
<!DOCTYPE HTML> <html lang="zh-cn"> <head> <meta http-equiv="Con ...
- css.day.05.eg
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 抓取锁的sql语句-第六次修改
增加异常处理 CREATE OR REPLACE PROCEDURE SOLVE_LOCK AS V_SQL VARCHAR2(3000); --定义 v_sql 接受抓取锁的sql语句V_SQL02 ...