PAT-TL 1009. Triple Inversions

MobaXterm终端工具个人学习版安装包及常用配置备份 资源包含 MobaXterm 个人版的安装包以及日常运维常用的基础配置备份文件。适用于网络工程师及运维人员用于日常的服务器管理、SSH 连接及串口调试。 压缩包内附带了个人整理的软件使用技巧与配置说明(仅供个人学习参考)。请各位同行下载后注意,技术工具请尽量支持官方正版,本资源仅供个人测试与交流使用,切勿用于商业环境。 立即下载

1、知识点:逆序数
2、思路:求中间节点arr[i]前面比它大的数left_big_num[i],后面比它小的数right_small_num[i],答案就是对left_big_num[i]*right_small_num[i]求和, i从2到n-1。用树状数组计算left_big_num[i],right_small_num[i]可以用一个小技巧间接求得,没必要重复计算。看了网上几篇博文,发现有人用排序离散化,其实由于本题n<10^5,可以不用。

/*用途:
**说明:
**算法:
*/

#define LOCAL
#include <cstdio>
#include <string.h>
using namespace std;
#define MAXN 100000+10
typedef long long LL;

int N;
int arr[MAXN];
int tree_arr[MAXN]; 
LL left_big_num[MAXN];
LL right_small_num[MAXN];

int low_bit(int a);
int get_sum(int ind);
void insert(int ind, int val);
int main()
{
#ifdef LOCAL
    freopen("1009_Triple_Inversions.in", "r", stdin);
    freopen("1009_Triple_Inversions.out", "w", stdout);
#endif
    scanf("%d", &N);
    for(int i=1; i<=N; i++)
        scanf("%d", &(arr[i]));

    if(N < 3){
        printf("0");
        return 0;
    }

    for(int i=1; i<=N; i++){
        int ls = get_sum(arr[i]);//出现在arr[i]前面且比arr[i]小的数的个数
        left_big_num[i] = i-1 - ls;//arr[i]前面出现的所有数的个数减去ls(因为在树状数组中,比arr[i]大的数都插到的arr[i]后面了)
        right_small_num[i] = arr[i]-1-ls;//总共比arr[i]小的数减去左边比它小的数 
        insert(arr[i], 1);//以arr[i]的值为下标插入  
    }

    LL ans = 0;
    for(int i=2; i<=N-1; i++)
        ans += left_big_num[i] * right_small_num[i];

    printf("%lld", ans);

    return 0;
}

inline int low_bit(int a)
{
    return a&(-a);
}

inline int get_sum(int ind)
{
    int sum=0;
    while(ind){
        sum += tree_arr[ind];
        ind -= low_bit(ind);
    }
    return sum;
}

inline void insert(int ind, int val)
{   
    while(ind <= N){
        tree_arr[ind] += val;
        ind += low_bit(ind);
    }
}
机械臂的「抽风」自救指南:从万向节死锁到毫米级丝滑抓取 立即下载

相关推荐

科技中介服务机构如何借助平台提升技术撮合服务的专业性与响应速度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【PAT顶级】1009 Triple Inversions (35 分)【树状数组】

Given a list of NNN integers A1​​,A2,A3,…,ANA_1​​, A_2, A_3, \dots, A_NA1​​​,A2​,A3​,…,AN​ there’s a famous problem to count the number of inversions in it. An inversion is defined as a piar of indices i<ji<ji<j such that Ai​​>A​jA_i​​>A​_jA

memcpy0的博客 638

产业园区如何利用AI技术提升科技成果转化服务的响应速度与转化成功率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

PAT顶级(归并排序求逆序对)——1009 Triple Inversions (35 分)超详细

1009 Triple Inversions (35 分) 解题思路: 先来真实的,一开始看到题没有思路考虑骗分,三个for,得了19分,意料中的4个T,但是19分不低了说实话,这个暴力就是白送的: 然后思考能不能多骗点分,于是想出了一个O(n^2)的写法,对于每一个值,我都是算出比他大在他左边的元素t2,以及比他小在他右边的元素t1,然后乘法组合一下得到这个值为三元逆序对中间那个值的情况贡献了t1*t2个答案。 代码: signed main() { int n=rd; for (in

ylwhxht的博客 252

中国1990-2021连续30年土地利用CLCD数据分享

CLCD(China Land Cover Dataset)数据集是由武汉大学黄昕老师基于Google Earth Engine上的335,709景Landsat数据制作的中国年度土地覆盖数据集。为了提高CLCD的时空一致性,还提出了一种包含时空滤波和逻辑推理的后处理方法。该数据集最大的优势在于每年30米的土地利用分类结果,且连续覆盖了30年时间。相比其他产品如GLC_FCS30、Global30、AGLC2000_2015、FROM-GLC10、ESA10、ESRI10等,CLCD在时间分辨率上更高。

qq_48539301的博客 1万+

STM32CubeMX实战:TIM定时器中断配置避坑指南(附100ms精准定时代码)

本文深入解析STM32CubeMX配置TIM定时器中断的常见误区与避坑技巧,重点阐述时钟源、预分频器与自动重装载值的精准计算方法。通过实战案例,提供一份可直接复用的100ms精准定时中断代码模板,并分享调试验证方法,帮助开发者构建稳定可靠的嵌入式系统心跳。

grafana8visual的博客 500

1009 Triple Inversions

这个题一般都是用树状数组做的,但是还没学,现在在学线段树,就用来练习线段树把,就是很一般的权值线段树,难度是洛谷绿题,洛谷有和这个一模一样的题。

m0_73035684的博客 213

WIN下使用visual studio 2022安装GMSSL命令行工具

2.1 使用管理员权限打开visual studio(非常重要,否则最后一步 nmake install会失败)右键vs2022,以管理员身份运行即可。2.4 配置环境变量,gmssl可执行程序默认会被安装到如下目录。将如下路径添加到系统环境变量即可。添加后的环境变量如下。2.编译解压后的gmssl源码,编译过程主要参考install.md中的内容,README.md中的步骤不完整。2.2 打开vs2022的命令终端,右键文件,选择在终端中打开。1.下载gmssl源码,解压到相应目录。

qq_45794382的博客 1269

PAT (Top Level) Practise 1009 Triple Inversions (35)

1009. Triple Inversions (35) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng Given a list of N integers A1, A2, A3,...

Occult 930

基于PINN的一个简单的求解偏微分方程实例

本人是做化工模拟的一名学生,最近在学习PINN(Physics-Informed Neural Networks,物理信息神经网络)对管道动力学进行建模研究,PINN由于其对机理与数据的良好兼顾性非常热门,本文是作者对PINN入门研究过程的一个练手小题目,main code也是作者代码是基于pytorch2.6.0写的,发上来供各位参考,欢迎研究管道动力学和PINN的小伙伴一起讨论~

weixin_64491760的博客 1741

腾讯开源CubeSandbox:为Agent打造可随时丢弃的安全沙箱环境

在人工智能与自动化技术快速发展的今天,智能体(Agent)在执行复杂任务时往往需要独立、完整的计算环境,但环境失控带来的安全风险一直是落地瓶颈。为解决这一痛点,可丢弃式沙箱技术应运而生。它通过轻量虚拟化原理实现环境秒级重建,并严格隔离宿主资源,即使Agent执行了恶意或误操作,也不会波及其他系统。这种技术价值在于平衡了灵活性与安全性,使开发者敢于赋予Agent更多自主操作权限。目前,这类技术已广泛应用于AI编程、自动化测试、数字员工、恶意代码分析等真实场景,成为Agent可靠运行的基石。腾讯开源的CubeS

weixin_42539414的博客 254

T1009 Triple Inversions

T1009 Triple Inversions 文章目录T1009 Triple Inversions题目大意题目限制条件本题考察知识点解题思路AC代码 题目大意 如果在一个序列A中存在i<j<k, 且A_i>A_j>A_k,则(A_i, A_j, A_k)是一个三元逆序对。现要求统计给定数组中的三元逆序对的数量。 题目限制条件 时间限制:300ms 内存限制:64MB 本题考察知识点 树状数组 解题思路 用树状数组求二元逆序对是一道很经典的题。我们回顾一下求二元逆序对的过程

Breezewords的博客 385

手把手教你用TUSB2E22中继器实现eUSB2与USB 2.0互转(附实测数据对比)

本文详细介绍了如何利用TUSB2E22中继器实现eUSB2与USB 2.0的高效互转,包括技术背景、硬件设计要点、信号完整性测试方法及故障排查策略。通过实测数据对比,展示了TUSB2E22在信号延迟、功耗和眼图性能上的显著优势,为工程师提供了实用的工程方案。

weixin_29199873的博客 283

1009. Triple Inversions (35)(树状数组求逆序数)

1009. Triple Inversions (35)和1010一样,考察树状数组求逆序数,注意int可能溢出,用long long (2,3测试点)#include &lt;bits/stdc++.h&gt; using namespace std; const int sz=100000+1024; int c[sz],a[sz],n; int ltb[sz],rts[sz]; void a...

L_Aster的专栏 400

沁恒CH32V30X学习笔记02--GPIO的使用教程及2次封装驱动

刚复位后,GPIO 口运行在初始状态,这时大多数 IO 口都是运行在状态所有的 GPIO 口都可以被配置外部中断输入通道,但一个外部中断输入通道最多只能映射到一个GPIO 引脚上,且外部中断通道的序号必须和 GPIO 端口的位号一致,,两方都是一对一的关系。复用功能。

Car12 706

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

王老师青少年编程 3396

pat顶级1009 Triple Inversions (35 分)

欢迎访问我的pat顶级题解目录哦 题目描述 算法设计 可以利用树状数组来解决这个问题。 由于输入序列的每个元素的值都不会超过10510^5105,因此我们可以开辟一个长105+510^5+5105+5的树状数组c。设计getSum(x)函数表示1到x这些数字在序列中出现次数之和。设计update函数用于更新数字出现次数。 我们要对整个序列A进行两次遍历,第一次从前向后遍历,针对遍历到的数字A[i...

日沉云起的博客 509

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

1009 Triple Inversions (35 分)

树状数组PAT顶级

姚军 316

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

PAT顶级 1009 Triple Inversions (35分)(树状数组)

题目链接: 1009 Triple Inversions (35分) 思路: 1.如果是两个数字的情况,那就是逆序数问题,一个树状数组即可解决,可以参考顶级1010题; 2.本地是计算三个数组构成的逆序数对数;我们在计算两个数构成的逆序数时,采用从后往前遍历,每次查询、然后加入的操作,目的是看有多少数排在自己后面却比自己小;同样的我们在计算本题时,需要多维护一个树状数组:从后往前遍历,设su...

Yuhan的博客 383

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

1009. Triple Inversions (35)

PAT上一道题目。题意是在一个1~n组成的n元数组A中,计算三元逆序的个数(满足i<j<k,Ai>Aj>Ak的(Ai,Aj,Ak))的个数。 所有的三元逆序对,从中间数Aj考虑。对每一个数Ap,如果知道在p之前比Ap大的个数leftBigger以及在p 之后比Ap小的个数rightSmall。那么以Aj作为中间数的三元逆序对个数为leftBigger*rightSmall。对每一个p,计算以Ap为

lemnHacker的专栏 1186

pat-top 1009. Triple Inversions (35)

https://www.patest.cn/contests/pat-t-practise/1009 这道题首先用了一个简单的dp: const int maxn = 1e5 + 2; int lar[maxn]; int a[maxn]; int main() { int n, k, ans = 0; scanf("%d", &n); for (int i = 0; i <

guojiaqi007的专栏 391

1009. Triple Inversions (35)解题报告

思路 这道题既可以用分块思想解决(O(n^1.5)),也可以用树状数组解决(O(nlogn))。这道题可能存在相同数字,因此需要遍历整个输入两遍。解题过程中我参考了《计算机 考研复试上机指导全书》。long long类型需要对应%lld才能正确输出。 另外参考了以下博客: PAT (Top Level) Practise 1009 Triple Inversions (35) 1009. ...

信道者 692

PAT TOP 1009. Triple Inversions (35)

问题描述:1009. Triple Inversions (35)时间限制300 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CAO, PengGiven a list of N integers A1, A2, A3,...AN, there's a famous problem to count the number of inversions in it....

kircher的博客 324

PAT 1009. Triple Inversions (35)

树状数组 A[0]数组用来求大于k的个数 A[1]数组用来求大于x的二维逆序对个数 没遍历一个数x,ans都加上到当前位置前方大于x的二维逆序对个数#pragma warning(disable:4996) #include<iostream> using namespace std; typedef long long LL; const int maxn = 100005; //树状数组

Bendaai的博客 235
下一篇: PAT-TL 1010. Lehmer Code
EverydayIsLife
博客等级 码龄12年 9粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值