Weakness

求数列区间 \(\{a_n\}\) 中满足 \(i < j < k, a_i > a_j > a_k\) 的 \((i, j, k)\) 对的数目。

设对 \(a_i\),左侧大于 \(a_i\) 的数的数目为 \(L_i\),右侧小于 \(a_i\) 的数的数目为 \(R_i\),易知答案为 \(\sum_i L_i R_i\)。

构建数值大小线段树,\(L_i\) 即为 \(i - \text{query}(1, A_i)\),反向建树同理可得 \(R_i\)。

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. #define lson k<<1, l, mid
  5. #define rson k<<1|1, mid+1, r
  6. using namespace std;
  7. int n, A[1000003], L[1000003], R[1000003], M;
  8. int t[1000003<<2];
  9. long long ans;
  10. void modify(int k, int l, int r, int x) {
  11. if (l==r&&l==x) {++t[k]; return; }
  12. register int mid=l+r>>1;
  13. if (x<=mid) modify(lson, x);
  14. if (mid<x) modify(rson, x);
  15. ++t[k];
  16. }
  17. int query(int k, int l, int r, int x, int y) {
  18. if (x<=l&&r<=y) return t[k];
  19. register int mid=l+r>>1, res=0;
  20. if (x<=mid) res+=query(lson, x, y);
  21. if (mid<y) res+=query(rson, x, y);
  22. return res;
  23. }
  24. int main() {
  25. scanf("%d", &n);
  26. for (int i=1; i<=n; ++i) scanf("%d", &A[i]), M=max(M, A[i]);
  27. for (int i=1; i<=n; ++i) modify(1, 1, M, A[i]), L[i]=i-query(1, 1, M, 1, A[i]);
  28. memset(t, 0, sizeof t);
  29. for (int i=n; i; --i) {modify(1, 1, M, A[i]); if (A[i]-1) R[i]=query(1, 1, M, 1, A[i]-1); else R[i]=0; }
  30. for (int i=1; i<=n; ++i) ans+=(long long)L[i]*R[i];
  31. printf("%lld\n", ans);
  32. return 0;
  33. }

11 November的更多相关文章

  1. Mysql - 函数

    Mysql提供的函数是在是太多了, 很多我都见过, 别说用了. 园子里面, 有人弄了一个比较全的. MYSQL函数 我这里会将他写的完全拷贝下来, 中间会插入一些自己项目中使用过的心得 一.数学函数 ...

  2. MySQL函数

    MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: 系统信息函数: 加密函数: 格式化函数: 一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ...

  3. 【转】MySql中的函数

    原文:http://www.cnblogs.com/kissdodog/p/4168721.html MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: ...

  4. mysql常用函数

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. 注:对大小写不敏感 ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大 ...

  5. Mysqle 常用 函数

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等.             select   可以用作输出 ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL ...

  6. Mysql 函数分类

    比较重要的 1 REVERSE(s)    将字符串s的顺序反过来 2 TRIM(s)          去掉字符串s开始和结尾处的空格 一.数学函数  数学函数主要用于处理数字,包括整型.浮点数等. ...

  7. salesforce 零基础开发入门学习(十五)salesforce中formula的使用(不含Date/Time)

    本文参考官方的formula介绍PDF:https://resources.docs.salesforce.com/200/latest/en-us/sfdc/pdf/salesforce_usefu ...

  8. MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...

  9. MySQL数据库常用函数

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 不区分大小写 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等 ...

随机推荐

  1. 能够打开国内网络,比如百度微信,但是打不开外国网站,该怎么解决(主要是DNS的问题)

    (1)公司设置局域网外网打不开解决方法一: 如果是代理服务器上网,是因为服务上没有映射好外网访问网页的!解决方法是在服务器上开一个端口映射软件! 如果是路由器上网,就是路由器上没有映射外网访问的端口, ...

  2. ☆☆☆☆☆Placeholder兼容各大浏览器的例子☆☆☆☆☆

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  3. node搭建个人博客promise警告解除

    警告 (node:8500) UnhandledPromiseRejectionWarning: undefined (node:8500) UnhandledPromiseRejectionWarn ...

  4. android——屏幕适配

    一,基本概念 1:dip: 其实也就是dp,与像素无关 2:px: 像素,在安卓布局中不用px,因为每个手机像素不同,px显示的布局大小也就不同 3:dpi: 通俗点就是每英寸多少个像素,简称像素密度 ...

  5. KFK2060穿越者

  6. django基础篇02-url路由系统

    django的路由系统: 一.基本用法: 1.path('index', views.index), # 通过类的方式创建url映射 2.path('home', views.Home.as_view ...

  7. 多线程 - 内存屏障和cpu缓存

    CPU性能优化 - 缓存 为了提高程序运行的性能,现代CPU在很多方面会对程序进行优化.CPU的处理速度是很快的,内存的速度次之,硬盘速度最慢.在cpu处理内存数据中,内存运行速度太慢,就会拖累cpu ...

  8. 025-Cinder服务-->安装并配置一个本地存储节点(ISCSI)

    一:Cinder提供块级别的存储服务,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和卷类型的功能,块存储服务通常包含下列组件:cin ...

  9. Java并发(具体实例)——几个例子

    一步步优化页面渲染功能                                                           本节将模拟一个简单的页面渲染功能,它的作用是将HTML页面绘 ...

  10. 长沙理工大学第十二届ACM大赛-重现赛 J 武藏牌牛奶促销

    链接:https://ac.nowcoder.com/acm/contest/1/J 来源:牛客网 武藏牌牛奶促销 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他 ...