P1637 三元上升子序列[线段树维护 + 离散化]

P1637 三元上升子序列

时间限制: 1.00s 内存限制: 128.00MB

复制 Markdown

中文

退出 IDE 模式

题目描述

Erwin 最近对一种叫thair的东西巨感兴趣。。。

在含有 n 个整数的序列 a1​,a2​,…,an​ 中,三个数被称作thair当且仅当 i<j<k 且 ai​<aj​<ak​。

求一个序列中thair的个数。

输入格式

开始一行一个正整数 n,

以后一行 n 个整数 a1​,a2​,…,an​。

输出格式

一行一个整数表示thair的个数。

输入输出样例

输入 #1复制运行

4 2 1 3 4

输出 #1复制运行

2

输入 #2复制运行

5 1 2 2 3 4

输出 #2复制运行

7

说明/提示

样例2 解释

7 个thair分别是:

  • 1 2 3
  • 1 2 4
  • 1 2 3
  • 1 2 4
  • 1 3 4
  • 2 3 4
  • 2 3 4
数据规模与约定
  • 对于 30% 的数据 保证 n≤100;
  • 对于 60% 的数据 保证 n≤2000;
  • 对于 100% 的数据 保证 1≤n≤3×104,1≤ai​≤105。

数字范围大于数组范围 防止浪费空间可以开离散化

我们可以用一个桶 然后每次在对应位置上加1 那么当添加了i-1个数字的时候 比第i个数字小的数字就是桶i前面的所有桶的数字之和 这个过程正反均来一遍就可以得到一个数字前面有多少比他小以及后面有多少比他大 最后的答案乘起来即可

离散化后 num[i]就表示 第i个数字的大小 由于离散化 和桶排序 也代表了桶的序号

统计num[i]的情况的时候 就需要算出1~num[i]-1的所有桶的数字和 就是有多少个数字小于他

大于同理

#include <bits/stdc++.h> using namespace std; #define int long long const int N=3e4+5; int n,low[N],up[N],cnt,num[N]; pair<int ,int>a[N]; struct SegmentTree{ int l,r,sum; #define l(x) tree[x].l #define r(x) tree[x].r #define sum(x) tree[x].sum }tree[N<<2]; void pushup(int p){ sum(p)=sum(p<<1)+sum(p<<1|1); } void build(int p,int l,int r){ l(p)=l,r(p)=r; if(l==r){sum(p)=0;return;} int mid=(l+r)>>1; build(p<<1,l,mid); build(p<<1|1,mid+1,r); pushup(p); } void update(int p,int pos){ if(l(p)==r(p)&&l(p)==pos){ sum(p)++; return; } int mid =(l(p)+r(p))>>1; if(pos<=mid)update(p<<1,pos); else update(p<<1|1,pos); pushup(p); } int query(int p,int l,int r){ if(l<=l(p)&&r>=r(p)) return sum(p); int mid =(l(p)+r(p))>>1; int val=0; if(l<=mid)val+=query(p<<1,l,r); if(r>mid)val+=query(p<<1|1,l,r); return val; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++)cin>>a[i].first,a[i].second=i; sort(a+1,a+1+n); for(int i=1;i<=n;i++){ if(a[i].first>a[i-1].first)cnt++; num[a[i].second]=cnt; } build(1,1,cnt); for(int i=1;i<=n;i++){ if(num[i]>1)low[i]=query(1,1,num[i]-1); else low[i]=0; update(1,num[i]); } build(1,1,cnt); for(int i=n;i>=1;i--){ if(num[i]<cnt)up[i]=query(1,num[i]+1,cnt); else up[i]=0; update(1,num[i]); } int ans=0; for(int i=1;i<=n;i++){ ans+=low[i]*up[i]; } cout<<ans<<'\n'; return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1135876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

医院信息管理|基于Python + Django医院信息管理系统(源码+数据库+文档)

医院信息管理 目录 基于PythonDjango医院信息管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango医院信息管理系统 一、前言 博主介绍&#xff1a…

低成本DSP变频器方案全解析:C语言源码、编译码、PCB图纸及物料清单详解

低成本dsp变频器方案&#xff0c;有C语言源码&#xff0c;编译码&#xff0c;PCB图纸&#xff0c;物料清单。最近在捣鼓个低成本DSP变频器方案&#xff0c;折腾了半个月总算有点眉目了。这次直接把PCB图纸甩进立创EDA就能打板&#xff0c;物料成本压到五十块以内&#xff0c;核…

让陪伴不缺席,让安心常在线——智慧康养服务APP功能一览

当忙碌让陪伴变得稀缺&#xff0c;当衰老让安全充满顾虑&#xff0c;这款专为老年群体量身打造的智慧康养服务APP&#xff0c;以AI技术精准匹配适老需求&#xff0c;将情感陪伴、记忆珍藏、安全守护三大核心价值融于一体——既为独居老人筑牢全天候温暖防线&#xff0c;也让异地…

RustFS主要有哪些竞争对手?一文讲透对象存储选型

当MinIO转身拥抱商业化的消息传开&#xff0c;技术圈一片哗然。寻找下一个靠谱的开源对象存储&#xff0c;突然成了许多开发团队的紧急任务。RustFS虽亮眼&#xff0c;但这条赛道上可不止它一位选手。 自从MinIO在2025年底宣布其开源版本进入“维护模式”&#xff0c;不再进行主…

基于USB3.0传输速度的工业U盘设计:从零实现

一块能扛住工厂震动、高温和24小时写入的U盘&#xff0c;是怎么做出来的&#xff1f;你有没有遇到过这种情况&#xff1a;产线上的检测设备每天生成几十GB的数据&#xff0c;导出一次要等半小时&#xff1f;或者车载记录仪在零下30C的东北冬天突然“罢工”&#xff0c;数据全丢…

牛批了,文字转语音神器

有时候在做一些短视频时&#xff0c;需要进行配音。有一些配音软件是收费的&#xff0c;今天给大家介绍一款免费的文字转语音的软件&#xff0c;有需要的小伙伴一定要下载收藏。 Read Aloud 免费的文字转语音软件 这款软件体积非常小巧&#xff0c;大小只有3兆。 软件无需安装…

实现多点触控支持:Synaptics驱动开发进阶指南

打造流畅多点触控体验&#xff1a;深入 Synaptics 驱动开发实战你有没有遇到过这种情况——在笔记本上用两个手指缩放图片时&#xff0c;光标突然跳走&#xff1f;或者三指滑动切换桌面时毫无反应&#xff1f;这些看似“玄学”的问题&#xff0c;背后往往藏着驱动层的细节玄机。…

【收藏】AI时代产品经理的生死劫:不懂架构师思维的PM将被淘汰

文章探讨了AI时代产品经理角色的根本转变。随着App和传统界面的消亡&#xff0c;AI产品经理必须从传统的需求分析者转变为系统架构师。未来的产品形态将是"用户→意图→数据→模型→Agent→工具→反馈→再生成"的智能链路&#xff0c;AI PM需要具备系统架构、意图理解…

企业员工管理|基于Python + Django企业员工管理系统(源码+数据库+文档)

企业员工管理 目录 基于PythonDjango企业员工管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango企业员工管理系统 一、前言 博主介绍&#xff1a…

户外设备宽温ARM工控机选型与应用指南

在工业自动化、智慧交通、户外能源监控等前沿领域&#xff0c;设备的运行环境常常超出我们的想象。想象一下&#xff0c;在东北的寒冬&#xff0c;变电站的监控系统需要在零下40摄氏度的冰天雪地里持续工作&#xff1b;而在新疆的戈壁滩&#xff0c;光伏电站的汇流箱监测设备则…

AUTOSAR网络管理入门必看:CAN NM基础概念解析

深入理解CAN NM&#xff1a;AUTOSAR网络管理的底层逻辑与实战解析你有没有遇到过这样的场景&#xff1f;车辆熄火后&#xff0c;某个控制模块迟迟不休眠&#xff0c;导致蓄电池几天就被耗尽&#xff1b;或者车门一解锁&#xff0c;空调、座椅、中控屏瞬间联动唤醒——这一切的背…

【必藏】AI产品经理忠告:2026年Agent框架选型避坑指南,选错损失百万!

分享了2026年Agent框架选型指南&#xff0c;将框架分为流程控制型、团队协作型和轻量级/API型三大类&#xff0c;详细分析各类框架的特点、优势及适用场景。通过制造业工单分派系统的案例展示了LangGraph的实际应用&#xff0c;并给出三条黄金法则&#xff1a;业务驱动、成本意…

1.4 Unity运行时路径

1.Unity运行时路径1.Unity运行时路径 1).Resourcesa.核心定位: 工程内特殊文件夹, 打包进安装包b.不同平台存储位置 随安装包存储(与游戏程序同目录)c.读写权限只读(运行时无法写入/修改) d.加载/访问方式- Resources.Load<T>()- Resources.LoadAsync<T>() e.关键注…

企业人力资源管理|基于Python + Django企业人力资源管理系统(源码+数据库+文档)

企业人力资源管理 目录 基于PythonDjango企业人力资源管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango企业人力资源管理系统 一、前言 博主介绍…

【收藏】AI生态与30年前互联网惊人相似!产品经理必知的10个底层概念,看懂少走5年弯路

详解了AI领域的10个核心概念&#xff1a;神经网络、RAG、Agent、MCP、模型参数、训练与推理、Token、微调、Transformer和梯度下降。文章强调作为产品经理不仅需会用AI工具&#xff0c;更要理解底层逻辑&#xff0c;才能构建有生命力的AI原生应用&#xff0c;并提供了免费AI教学…

图书管理|基于Python + Django图书管理系统(源码+数据库+文档)

图书管理 目录 基于PythonDjango图书管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于PythonDjango图书管理系统 一、前言 博主介绍&#xff1a;✌️大厂码农…

PMBus CLEAR_FAULTS命令机制:操作指南说明

PMBus 的CLEAR_FAULTS命令&#xff1a;不只是“清个错”那么简单你有没有遇到过这样的场景&#xff1f;系统突然断电&#xff0c;日志显示某个电源模块触发了过流保护。工程师第一反应是&#xff1a;“重启一下试试。”但如果是部署在千里之外的数据中心机柜里的设备呢&#xf…

【建议收藏】AI前端开发全攻略:6个月转型路线+5大核心能力详解

本文深入解析AI前端开发的核心能力&#xff0c;强调真正的AI前端前端工程能力AI能力产品理解。详细介绍了大模型认知、Prompt Engineering、AI应用场景、技术组合及Agent调用五大能力&#xff0c;并提供6个月转型路线。AI不会取代前端&#xff0c;但将淘汰只会CRUD的开发者&…

前端开发者转型AI领域需要掌握的7大关键技能

本文系统介绍前端AI开发全流程&#xff0c;涵盖AI基础知识、TensorFlow.js/ONNX.js集成技术、Web Workers优化应用、数据处理方法、交互设计原则及前后端协作策略。详细讲解了模型优化、部署技巧&#xff0c;以及如何结合React等框架构建AI应用&#xff0c;并提供了丰富的学习资…

10. CPU-GPU协作渲染

1.GPU是如何知道要渲染对象 2.CPU 怎么知道 GPU 渲染完毕 3.GPU 的显存数据是什么时机上传的1.GPU是如何知道要渲染对象 GPU是典型的"被动执行设备", 自己不会主动渲染, 所有渲染任务都由CPU通过"命令缓冲区(Command Buffer)"下方, 流程分四步:1).CPU准备&…