[luogu] P1637 三元上升子序列 树状数组
前言
真简单,数据结构真简单!!
传送门 :
思路
计算一个 三元上升序列 我们可以枚举 中间节点 然后通过乘法原理 记录Left[]和Right[]Left[] 和 Right[]Left[]和Right[]
当然数据范围是3e5+10 如果直接求会爆炸 所以我们还需要离散化
因为我们只需要 离散化 并且 枚举中间节点求出所有的Left[i]∗Right[i]Left[i]*Right[i]Left[i]∗Right[i]之和即是答案
CODE
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define unmp unordered_map<int,int>
#define x first
#define second
typedef pair<int,int> PII;
const int N = 3e4+10;
int n,m;
int c1[N],c2[N];
int l[N],r[N];
int A[N],_A[N];inline int hash_(int val){return lower_bound(_A+1,_A+m+1,val) -_A;
}inline int lowbit(int i){return i&(-i);
}void add(int *C,int pos,int val){while(pos<=N){C[pos] +=val;pos+=lowbit(pos);}
}int sum(int *C,int pos){int res = 0 ;while(pos >0 ){res+=C[pos];pos-=lowbit(pos);}return res;
}
void solve()
{cin>>n;for(int i=1;i<=n;i++){cin>>A[i];_A[i] = A[i];}sort(_A+1,_A+n+1);m = unique(_A+1,_A+n+1)-(_A+1);for(int i=1;i<=n;i++){add(c1,hash_(A[i]),1);l[i] = sum(c1,hash_(A[i])-1);}for(int i=n;i>=1;i--){add(c2,hash_(A[i]),1);r[i] = n-i-(sum(c2,hash_(A[i]))-1);}ll ans = 0 ;for(int i=2;i<n;i++)ans += l[i]*r[i];cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(false);//int t;cin>>t;while(t -- )solve();return 0;
}
[luogu] P1637 三元上升子序列 树状数组相关推荐
- CF452F Permutations/Luogu2757 等差子序列 树状数组、Hash
传送门--Luogu 传送门--Codeforces 如果存在长度\(>3\)的等差子序列,那么一定存在长度\(=3\)的等差子序列,所以我们只需要找长度为\(3\)的等差子序列.可以枚举等差子 ...
- luogu P2344 奶牛抗议 DP 树状数组 离散化
P2344 奶牛抗议 最新讨论 暂时没有讨论 题目背景 Generic Cow Protests, 2011 Feb 题目描述 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在 ...
- 【DP】【树状数组】方伯伯的玉米田/优美玉米(luogu 3287/金牌导航 数据结构优化DP-5)
正题 luogu 3287 金牌导航 数据结构优化DP-5 题目大意 有n个玉米,给出高度,你可以选择一个区间,使这个区间的玉米高度+1,你可以进行k次这样的操作,查询你操作完后最长不下降子序列最大值 ...
- luogu 2717 寒假作业 (树状数组)
题目背景 zzs和zzy正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有n项寒假作业.zzy给每项寒假作业都定义了一个疲劳值Ai,表示抄这个作业所要花的精力.zzs现在想要知道,有多少 ...
- Luogu P4178 Tree (点分治 + 树状数组)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P4178 Prob ...
- 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)
目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...
- 最长上升子序列三种模板(n^2模板,二分模板,树状数组模板)
最长上升子序列(LIS)是动态规划的入门.总结下来,经常用的模板一共有三种,分别为n^2模板,二分模板,树状数组模板. n^2模板代码如下: //n^2算法,本质就是dp,采用二重循环的方式.对于数据 ...
- 【DP】【树状数组】免费馅饼(luogu 7302/金牌导航 数据结构优化DP-4)
正题 luogu 7302 金牌导航 数据结构优化DP-4 题目大意 在坐标轴上会出现n个金币,第i个金币tit_iti时在wiw_iwi出现(只出现一个单位时间),价值为sis_isi,当你t ...
- 【LCT】【树状数组】Matches Are Not a Child‘s Play(luogu CF1137F)
正题 luogu CF1137F 题目大意 定义一棵树的产出序列为依次删除权值最小的叶子节点的顺序 进行q此操作: 1.把一个点的权值改为当前树中的最大权值+1 2.查询一个点在删除序列中的位置 3. ...
最新文章
- python3.7.4安装(Windows10)
- Hadoop 新增删除节点
- 高效开发 Android App 的 10 个建议
- 编译源码时出现 Checking API: checkapi-last (unknown): error 17解决方法
- 大专生自学web前端到找到工作的经验
- springboot+mybatis+druid 多数据源整合
- ubuntu 打开ssh登陆_Ubuntu开启SSH远程登录
- 评定数据之间的相似度指标----距离
- 英文版一元购源码开发解析
- 度分秒在线计算机,科学计算器在线计算
- Meta标签中 http-equiv属性详解
- 【文献阅读笔记】之Label Refinement Network for Coarse-to-Fine Semantic Segmentation
- mysql utf8mb4 错_MYSQL保存特殊字符失败,用编码utf8mb4解决错误 Incorrect string value ...解决方法...
- word参考文献交叉引用一次性更新全部域
- 桌面云、云桌面的区别
- 通过Gearman实现MySQL到Redis的数据复制
- 什么是json对象?
- 构建统一监管制度 加快数据要素立法修法
- “低代码,零代码,APAAS”是什么?怎么选?
- JS对象,JSBOM和JSDOM的介绍以及基本运用(JavaScript的基础使用)
热门文章
- 【网站】数字滚动效果的实现方法
- 心知天气API如何调用与json数据如何显示
- 经常调试笔记本服务器显示器,瞎折腾!闲置损坏笔记本电脑改造的DIY液晶显示屏!蜗牛星际附件。...
- win10装的AutoCAD 2012版,右上角最小化不显示的解决办法
- 什么样的公司才需要办理ICP经营许可证?
- 沧小海笔记之基于xilinx的三速以太网相关知识的学习与理解
- 【pureftp】解决filezilla连接ftp报错 服务器发回了不可路由的地址 使用服务器地址代替
- 记录一次504超时的解决方案
- 基于C51实现数码管的显示
- 如何快速查询SCI期刊JCR和ISO缩写?