当前位置: 首页 > news >正文

[算法进阶]dp+树状数组题目

题目

三元上升

题目意思

找出i<j<k全部ai<aj<ak的数量

分析

  我们遍历顺序是从左往右,人工跑一遍样例

5
1 2 2 3 4

发现:(1 2 3)和(1 2 4)这两个thair是有重叠(1 2)。我们可以想到 dp 来处理重叠子问题, (1 2 3)和(1 2 4) 都是由 (1 2)这个部分推导过来。
现在我们只要知道以下两个就可以解题了

  1. 序列长度为1且末尾比当前数字小的总个数
  2. 序列长度为2且末尾比当前数字小的总个数

怎么求这个呢?
我们能想到构建一个两个树状数组来维护两个桶分别代表上面两个,因为遍历顺序总是从左往右,所以我们只要每次查询完当前的数字x的thair 再把这个数字添加到桶里就行了,查询也是直接查询 1~x 的区间总和。

代码

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define int long long
const int N = 100005;struct BIT
{int n;vector<int> tr;BIT(int _n) : n(_n), tr(_n + 1) {}int lowbit(int x){return x & -x;}void add(int x, int v){for (int i = x; i <= n; i += lowbit(i)){tr[i] += v;}}int query(int x){int res = 0;for (int i = x; i; i -= lowbit(i)){res += tr[i];}return res;}
};signed main()
{IOS;int n;cin >> n;BIT tr1(N);BIT tr2(N);int cnt_all = 0;for (int i = 1; i <= n; i++){int x;cin >> x;int cnt1 = tr1.query(x - 1);int cnt2 = tr2.query(x - 1);cnt_all += cnt2;tr1.add(x, 1);tr2.add(x, cnt1);}cout << cnt_all << '\n';return 0;
}
http://www.jsqmd.com/news/390343/

相关文章:

  • [嵌入式系统-235]:传感器:小电流类检测的基本原理:是通过跨阻放大器(TIA)将微弱电流“无损”地转化为电压
  • AI元人文:在白河界面上架设金兰桥——基于空性界面自感理论的深化与整合
  • WebForms SortedList 深入解析
  • 基于Java Web的驾校考试管理系统的设计与实现
  • 《放置(Droppable)》:游戏体验与策略分析
  • ionic 对话框:深度解析与最佳实践
  • 大数据领域数据产品的一致性算法研究
  • 并查集 - ## 并查集
  • 数据产品监控:实时告警与性能追踪系统
  • 为什么使用 Web Services?
  • AI应用架构师的企业级AI平台架构设计的实践探索
  • Bootstrap5 网格系统
  • 大数据清洗面试经验:字节跳动数据开发岗,数据清洗考点总结
  • 基于uni-app+Nodejs+vue3的校园失物招领微信小程序
  • AI应用架构师带你深挖AI驱动质量管理与业务融合点
  • 第七章 LoRA训练稳赢指南:数据集工程“三件套“全解析
  • 别再记混了!阻止事件冒泡≠防止事件冒泡(附趣味解析)
  • 构建未来教育新生态:智慧校园信息系统方案关键模块建设浅析
  • 构建未来教育新生态:智慧校园信息平台方案关键模块建设浅析
  • 构建未来教育新生态:智慧校园解决方案关键模块建设浅析
  • g4f(GPT4Free)下哪些免费大模型好用? 竟然有ernie了!
  • 背包问题 - I NEED A OFFER!
  • Python中的素材序列之元组
  • 年味还能这样打开?魔乐社区新年征文赛今日启动,等你来战
  • 大年初一 魔乐社区给你发算力红包啦!
  • 1美金/小时,更快更强更智能,为真实世界生产力而生!MiniMax M2.5开源并上线魔乐社区
  • GLM-5上线魔乐社区,基于昇腾的模型推理+训练部署教程请查收!
  • 叮~~Qwen3.5上线魔乐社区,基于昇腾的部署教程来了
  • Linux如何设置 /etc/init.d 类型的服务开机自启
  • Linux service 命令详解