pat顶级1009 Triple Inversions (35 分)

2023-10-06 15:02

本文主要是介绍pat顶级1009 Triple Inversions (35 分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎访问我的pat顶级题解目录哦

题目描述

pat顶级1009 Triple Inversions (35 分)题目描述

算法设计

可以利用树状数组来解决这个问题。
由于输入序列的每个元素的值都不会超过 1 0 5 10^5 105,因此我们可以开辟一个长 1 0 5 + 5 10^5+5 105+5的树状数组c。设计getSum(x)函数表示1到x这些数字在序列中出现次数之和。设计update函数用于更新数字出现次数。
我们要对整个序列A进行两次遍历,第一次从前向后遍历,针对遍历到的数字A[i],求其左侧比A[i]大的数字出现次数之和,并把结果存储到数组left中。第二次从后向前遍历,针对遍历到的数字A[i],求其右侧比A[i]小的数字出现次数之和,假设为k,计算 A [ i ] ∗ k A[i]*k A[i]k,即为以A[i]为中间的数的triple inversion的个数。累加所有这样的 A [ i ] ∗ k A[i]*k A[i]k,即为最终结果。

C++代码

#include <bits/stdc++.h>
using namespace std;
auto lowbit = [](int x) { return x & (-x); };
vector<int> c(100005);
void update(int x, int v) {for (int i = x; i < c.size(); i += lowbit(i))c[i] += v;
}
int getSum(int x) {int sum = 0;for (int i = x; i > 0; i -= lowbit(i))sum += c[i];return sum;
}
int main() {int n;long long ans = 0;cin >> n;vector<int> A(n), left(n);for (int i = 0; i < A.size(); ++i) {cin >> A[i];update(A[i], 1);left[i] = i + 1 - getSum(A[i]);}fill(c.begin(), c.end(), 0);for (int i = A.size() - 1; i >= 0; --i) {update(A[i], 1);ans += left[i] * 1LL * getSum(A[i] - 1);}cout << ans;return 0;
}

这篇关于pat顶级1009 Triple Inversions (35 分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/153335

相关文章

『功能项目』战士的平A特效【35】

我们打开上一篇34武器的切换实例的项目, 本章要做的事情是在战士的每次按A键时在指定位置生成一个平A特效 首先将之前下载的技能拖拽至场景中 完全解压缩后重命名为AEffect 拖拽至预制体文件夹 进入主角动画的战士动画层级 双击第一次攻击 选择Animation 创建事件 创建的动画事件帧放在攻击动画挥剑指定处 命名为PerpetualAtt

【SGU】180. Inversions(归并排序求逆序数)

以前一般用树状数组和线段树做这种题 这次换个思路试试,归并排序! #include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int maxn = 111111;int n;int array[maxn];int tmp[maxn];L

NoSQL数据库的35个应用场景

现在我们站在各个用例的角度上来考虑那种系统适合于这些用例。   你的意见是?   首先,我们要纵览各种数据模型。这些模型的分类方法来自于Emil Eifrem和NoSQL databases。   文档数据库   源起:受Lotus Notes启发。   数据模型:包含了key-value的文档集合   例子:CouchDB, MongoDB   优点:数据模型自然,编

印度再现超级大片,豪华阵容加顶级特效

最近,印度影坛再次掀起了风潮,一部名为《毗湿奴降临》的神话大片强势登陆各大影院,上映首周票房就飙升至105亿卢比,成功占据了票房榜首的位置。之后,这部电影也在北美上映,海外市场的表现同样不俗,收获了相当亮眼的票房成绩。作为一部印度神话科幻大片,《毗湿奴降临》不仅在本土大火,在国际市场上也引发了不小的关注。 《毗湿奴降临》由印度著名导演纳格·阿什温执导,卡司阵容极其豪华,集结了迪皮卡·帕度柯妮

什么是顶级域名后缀?

在互联网发展的历程中,顶级域名(Top-Level Domain,简称TLD)扮演着至关重要的角色。而这些顶级域名的后缀,则更是成为了整个网络世界的分类标准和识别依据。 顶级域名后缀,通常指位于域名最右端的部分,如".com"、“.org”、".cn"等。它们为下层的二级域名和三级域名提供了一个基础的分类框架,让互联网上的各类网站、组织和个人能够根据自身特点选择合适的域名后缀。 不同类型的顶级

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

Apache顶级项目Ambari正式宣告退役!

点击上方蓝色字体,选择“设为星标” 回复”面试“获取更多惊喜 截止本文发稿时,Apache Ambari官网正式宣告该项目退役。 截止本文发稿时,Apache Ambari官网正式宣告该项目退役。 This project has retired. Apache Ambari 是一个基于 Web 的 Apache Hadoop 集群的供应、管理和监控工具,曾是 Apache Soft

推荐几个顶级数据学习平台

今天分享几位资深大佬,他们都是数据领域的顶级专家,大家可以根据需要按需关注。 进击吧大数据 从事大数据行业多年,涉及范围包括基础支撑、计算引擎、数据整合、数据应用等方向。《大数据技术架构手册》编制者,目前带领团队建设实时数仓及主导数据治理。 一册在手,走遍天下(大数据技术架构手册之上篇十四万字问世) 大数据架构师 老彭,数字化老兵,历任多家公司大数据总监,仅代表个人观点。公众号分享大量干货,包括

PAT (Advanced Level) Practice——1011,1012

1011:  链接: 1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn) 题意及解题思路: 简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。 同时还需要记录每一次选择的是W,T还是L

MySQL-35个DQL练手题(难)

第1题 取得每个部门最高薪水的人员名称 第一步:取得每个部门最高薪水 select max(sal) topsal, deptno from emp group by deptno; 第二步:将上面第一步的查询结果当做一张临时表t,进行表连接,条件是:t.deptno=e.deptno and t.maxsal=e.sal select e.ename, t.* from emp e