1428 - Ping pong
2016-01-23 16:07
239 查看
树状数组。
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <cstdlib> using namespace std; const int INF = 100000 + 7; const int maxn = 20000 + 7; typedef long long LL; int T, n, MAX; int left_[maxn], right_[maxn]; int d[maxn]; int c[INF]; int lowbit(int x) { return x & (-x); } LL sum(int x) { LL res = 0; while(x > 0) { res += c[x]; x -= lowbit(x); } return res; } void add(int k) { while(k <= INF) { c[k] += 1; k += lowbit(k); } } int main() { scanf("%d", &T); while(T--) { memset(d, 0, sizeof(d)); memset(c, 0, sizeof(c)); memset(left_, 0, sizeof(left_)); memset(right_, 0, sizeof(right_)); MAX = -10000; scanf("%d", &n); for(int i = 0; i < n; ++i) { scanf("%d", &d[i]); add(d[i]); MAX = max(MAX, d[i]); left_[i] = sum(d[i] - 1); right_[i] = max(0LL, sum(MAX) - sum(d[i])); } LL ans = 0; for(int i = 0; i < n; ++i) { if(i == 0 || i == n - 1) continue; ans += left_[i] * ((sum(MAX) - sum(d[i])) - right_[i]); ans += right_[i] * (sum(d[i]-1) - left_[i]); } printf("%lld\n", ans); } return 0; }
相关文章推荐
- Android上层APP利用sysfs调用底层驱动分析
- js中变量作用域问题
- centos桌面的安装和卸载
- 为打开新Activity动作添加动画效果
- php非阻塞访问url 解析socket阻塞与非阻塞,同步与异步
- AngularJs 禁止模板缓存
- mysql备份与恢复
- 算法训练 安慰奶牛
- Python之面向对象进阶篇
- 克制
- IE8背景图片不显示
- JSONArry排序 java
- Windows7下 IIS(FastCGI)+ MySQL+ PHP + PHPmyadmin + Zend Optimizer 环境配置
- 《剑指offer》——二叉树的深度
- 异或运算
- Android中的页面切换动画
- 大数据(十五) - JStorm
- eclipse 创建 javaWeb 项目 如何 配置 tomcat
- W3School-CSS 伪元素 (Pseudo-elements) 实例
- awk依照多个分隔符进行切割