题意:
     给你一些人,每个人有自己的攻击力,输入的顺序就是每个人的顺序,他们之间互相比赛,两个人比赛的条件是必须在他们两个位置之间找到一个人当裁判,这个裁判的攻击力必须在他们两个人之间,问你最多能矩形多少场比赛。

思路:

      枚举每一个点当裁判,线段树或者树状数组正着跑一遍记录大于等于当前点和小于等于当前点的个数,然后倒着跑一边,做同样处理,最后乘一下就行了。


#include<stdio.h>
#include<string.h>

__int64 num[110000] ,G[110000];
__int64 L1[110000] ,R1[110000] ,L2[110000] ,R2[110000];int lowbit(int x)
{return x & -x;
}void update(int x ,__int64 a)
{for(int i = x ;i <= 100050 ;i += lowbit(i))num[i] += a;
}__int64 get_sum(int x)
{__int64 sum = 0;for(int i = x ;i > 0 ;i -= lowbit(i))sum += num[i];return sum;
}int main ()
{int i ,t ,n;scanf("%d" ,&t);while(t--){scanf("%d" ,&n);for(i = 1 ;i <= n ;i ++)scanf("%I64d" ,&G[i]);memset(num ,0 ,sizeof(num));for(i = 1 ;i <= n ;i ++){L1[i] = get_sum(G[i]);R1[i] = get_sum(100005) - get_sum(G[i] - 1);update(G[i] ,1);}memset(num ,0 ,sizeof(num));for(i = n ;i >= 1 ;i --){L2[i] = get_sum(G[i]);R2[i] = get_sum(100005) - get_sum(G[i] - 1);update(G[i] ,1);}__int64 sum = 0;for(i = 1 ;i <= n ;i ++)sum += L1[i] * R2[i] + L2[i] * R1[i];printf("%I64d\n" ,sum);}return 0;
}

hdu2492 数状数组或者线段树相关推荐

  1. 2019南昌网络赛  I. Yukino With Subinterval 树状数组套线段树

    I. Yukino With Subinterval 题目链接: Problem Descripe Yukino has an array \(a_1, a_2 \cdots a_n\). As a ...

  2. 树状数组及线段树入门(SDNU1665-1668)

    目录 前言 树状数组 先导 单点修改区间查询 区间修改区间查询 线段树 先导 单点修改区间查询--递归形式 单点修改区间查询--非递归形式 区间修改区间查询--递归形式 区间修改区间查询--非递归形式 ...

  3. AcWing 蓝桥杯AB组辅导课 05、树状数组与线段树

    文章目录 前言 一.树状数组 1.1.树状数组知识点 1.2.树状数组代码模板 模板题:AcWing 1264. 动态求连续区间和 例题 例题1.AcWing 1265. 数星星[中等,信息学奥赛一本 ...

  4. BZOJ.4553.[HEOI2016TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)

    题目链接:BZOJ 洛谷 \(O(n^2)\)DP很好写,对于当前的i从之前满足条件的j中选一个最大值,\(dp[i]=d[j]+1\) for(int j=1; j<i; ++j)if(a[j ...

  5. LibreOJ 6277,6278,6280 数列分块入门1,2,4 树状数组,分块,线段树等.

    分块1 分块2 分块4 模板一共有九个.我试着在三天内做了3个. 应该不用超链接吧. 分块1 区间加,单点询问. 这不是裸的改版树状数组吗?用树状数组处理前缀和水过. #include<bits ...

  6. 第五讲 树状数组与线段树 【未完结】

    目录 1264. 动态求连续区间和 [树状数组板子题] 1265. 数星星 [树状数组变种] 1270. 数列区间最大值 [线段树 / 区间内求最大值] 1215. 小朋友排队 [树状数组] AcWi ...

  7. 小沙的remark(朴素DP、优化DP+树状数组OR线段树)

    题目 原题链接 问题描述 给定n(1≤n≤2∗106)n(1\leq n\leq2∗10^6)n(1≤n≤2∗106)和seedseedseed,将基于seedseedseed生成两个长度为nnn的序 ...

  8. 第五讲---树状数组与线段树(上课)

    1.树状数组 树状数组就是c[x],存的值就是原数组中(下标从1开始)[x-lowbit(x),x]这一段区间的前缀和. 1.1动态求连续区间和 #include <cstdio> #in ...

  9. P4970 全村最好的嘤嘤刀(树状数组与线段树的梦幻联动)

    题目描述 重阳节到了,我们最好的八重樱拥有全村最好的嘤嘤刀-- 在绯玉丸力量的影响下,八重村成了一条长度为 n 的八重街,并且绯玉丸可以带着八重樱出现在街上的任意地点.而我们的八重樱则会在街上任意穿梭 ...

最新文章

  1. 准官宣?余承东证实华为已有自研操作系统
  2. SQL SERVER全面优化-------写出好语句是习惯
  3. (010) java后台开发之String字符串操作
  4. Jackson中的自定义反序列化器和验证
  5. c++ 输出二进制_Q音直播编译优化与二进制集成方案
  6. nc 发布元数据_智联科发布新一代连续式NC膜粘膜划膜一体机
  7. 如何判断各个IE浏览器版本
  8. eclipse mysql tomcat,java+eclipse+tomcat+mysql+jdbc
  9. 第三周作业-实现随机点名的签到程序
  10. “IndentationError: unindent does not match any outer indentation level“ 错误解决
  11. 花生壳 动态域名 ssh
  12. python中cls和self的区别
  13. 电脑文件服务器资源管理器在哪,资源管理器在哪?怎么打开资源管理器?5种方法总有适合你...
  14. python爬虫项目-优美图库
  15. html页面颜色对应代码
  16. linux查看系统资源使用情况,查看Linux下系统资源占用常用命令
  17. 《统计学习方法》——隐马尔可夫模型
  18. 劝说语合理使用计算机,现代汉语语法部分练习,带答案
  19. RT-Thread编程手册
  20. 动手练一练,手写一个价格对比、固定表头滚动的表格

热门文章

  1. 再议C#方法中的反射方式和委托方式
  2. POJ-2584 T-Shirt Gumbo 最大流
  3. DeepStream开发日志
  4. axios请求五种方法
  5. legend2---开发常用语句
  6. Cisco 交換機命名規則
  7. Gibbs sampling
  8. 查看windows 端口进程
  9. 使用pdb调试python
  10. C# GDI+编程(二)