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

题解:AcWing 241 楼兰图腾

【题目来源】

AcWing:241. 楼兰图腾 - AcWing题库

【题目描述】

在完成了分配任务之后,西部 \(314\) 来到了楼兰古城的西部。

相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(V),一个部落崇拜铁锹(),他们分别用 V 的形状来代表各自部落的图腾。

西部 \(314\) 在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了 \(n\) 个点,经测量发现这 \(n\) 个点的水平位置和竖直位置是两两不同的。

西部 \(314\) 认为这幅壁画所包含的信息与这 \(n\) 个点的相对位置有关,因此不妨设坐标分别为 \((1,y_1),(2,y_2),\dots,(n,y_n)\),其中 \(y_1\sim y_n\)\(1\)\(n\) 的一个排列。

西部 \(314\) 打算研究这幅壁画中包含着多少个图腾。

如果三个点 \((i,y_i),(j,y_j),(k,y_k)\) 满足 \(1\le i\lt j\lt k\le n\)\(y_i>y_j,y_j<y_k\),则称这三个点构成 V 图腾;

如果三个点 \((i,y_i),(j,y_j),(k,y_k)\) 满足 \(1\le i\lt j\lt k\le n\)\(y_i<y_j,y_j>y_k\),则称这三个点构成 图腾;

西部 \(314\) 想知道,这 \(n\) 个点中两个部落图腾的数目。

因此,你需要编写一个程序来求出 V 的个数和 的个数。

【输入】

第一行一个数 \(n\)

第二行是 \(n\) 个数,分别代表 \(y_1,y_2,\dots,y_n\)

【输出】

两个数,中间用空格隔开,依次为 V 的个数和 的个数。

【输入样例】

5
1 5 3 2 4

【输出样例】

3 4

【解题思路】

image

【算法标签】

《AcWing 241 楼兰图腾》 #树状数组# #线段树# #分块#

【代码详解】

#include <bits/stdc++.h>
using namespace std;#define int long long  // 使用long long类型
const int N = 200005;  // 定义数组最大长度int n;                // 数组长度
int a[N];             // 存储原始数组
int tr[N];            // 树状数组
int Greater[N];       // 存储每个元素右边比它大的元素个数
int Lower[N];         // 存储每个元素右边比它小的元素个数// 计算x的最低有效位(用于树状数组索引计算)
int lowbit(int x)
{return x & -x;
}// 向树状数组添加值:在位置x增加c
void add(int x, int c)
{// 从x开始向上更新所有相关节点for (int i = x; i <= n; i += lowbit(i)){tr[i] += c;}
}// 查询前缀和:计算前x个元素的和
int query(int x)
{int res = 0;// 从x开始向下累加所有相关节点for (int i = x; i; i -= lowbit(i)){res += tr[i];}return res;
}signed main()
{// 输入数组长度ncin >> n;// 输入原始数组for (int i = 1; i <= n; i++){cin >> a[i];}// 第一遍扫描:从左到右计算每个元素左边的情况for (int i = 1; i <= n; i++){int y = a[i];// 计算当前元素右边比它大的元素个数Greater[i] = query(n) - query(y);// 计算当前元素右边比它小的元素个数Lower[i] = query(y - 1);// 将当前元素加入树状数组add(y, 1);}// 重置树状数组memset(tr, 0, sizeof(tr));int res1 = 0, res2 = 0;  // res1-逆序对总数,res2-顺序对总数// 第二遍扫描:从右到左计算结果for (int i = n; i; i--){int y = a[i];// 计算逆序对总数res1 += Greater[i] * (query(n) - query(y));// 计算顺序对总数res2 += Lower[i] * (query(y - 1));// 将当前元素加入树状数组add(y, 1);}// 输出结果:逆序对总数和顺序对总数cout << res1 << " " << res2 << endl;return 0;
}

【运行结果】

5
1 5 3 2 4
3 4
http://www.jsqmd.com/news/407204/

相关文章:

  • 什么是模型管理平台?从大模型治理走向企业级OPC平台
  • 2026年 空气能设备厂家推荐排行榜:一体机组/高温热泵/泳池恒温/烘干机/制冷机组/工业高温热泵,专业高效节能解决方案 - 品牌企业推荐师(官方)
  • 剖析2026年人力资源公司排名,蓝遇人才凭啥脱颖而出 - 工业设备
  • 2026年质量好的飞机小桌板/高端家居小桌板品牌厂家推荐哪家强 - 行业平台推荐
  • 机器人任务怎么确认?现场演示预置流程
  • 行业首发留学生求职机构测评:C轮融资机构综合评分(导师资质/案例数据) - Matthewmx
  • 2026年口碑好的广州高温保鲜冷库设备/啤酒防腐冷库设备公司口碑推荐哪家靠谱 - 行业平台推荐
  • 2026年知名的龙门五轴加工中心/天车五轴加工中心厂家实力参考哪家质量好 - 行业平台推荐
  • FreeRtos——6、内存模型-栈溢出与堆的碎片
  • 香港求职机构哪家靠谱?金融岗内推资源实测(附榜单) - Matthewmx
  • 少走弯路:千笔,自考论文写作神器
  • 2026四川吸烟亭厂家Top5权威榜单:兼具合规性与场景适配的实力派推荐 - 深度智识库
  • 在AI技术唾手可得的时代,挖掘新需求才是真正的挑战——从TypeScript知名函数式框架的演进看用户诉求
  • 2026年评价高的运动塑身衣/高腰塑身衣厂家实力参考哪家质量好 - 行业平台推荐
  • 当金融、SDE、科技求职进入“内卷深水区”,为什么越来越多留学生选择UniCareer? - Matthewmx
  • 基于python的旅游管理系统
  • 留学生高端求职进入“通道时代”,UniCareer成金融与科技赛道关键助推器 - Matthewmx
  • FreeRtos——4、控制流模型:信号量与事件组
  • 2026水泵选购参考:国内靠谱厂家实力排行,8040反渗透膜/美国GE反渗透膜/进口反渗透膜,水泵公司哪家权威 - 品牌推荐师
  • AI模型压测工具:TensorFlow Serving的QPS瓶颈定位实战
  • 基于python的农村低保户贫困户管理系统 网站设计与实现
  • 2026年热门的高效节能冷库变频机组/集装箱式冷库变频机组生产厂家采购指南帮我推荐几家 - 行业平台推荐
  • 2026 靠谱冷水机厂家推荐:品牌、实力、售后一次说清 - 博客万
  • FreeRtos——5、资源模型:临界区与共享资源
  • 3.4 模型排名与Elo:Pairwise对比评估实战指南
  • 过知网AIGC检测用什么降AI软件?实测推荐这几款
  • 探讨2026年铁皮打球机,高口碑厂家怎么收费 - 工业品网
  • 2026年市面上比较好的方形横流冷却塔制造企业怎么选择,冷却塔填料/冷却水塔,方形横流冷却塔直销厂家怎么选择 - 品牌推荐师
  • 维普万方查AI太严?这两款降AI工具一次搞定
  • 2026年深圳口碑排名前十天御香山花园、万科臻山府、福田熙园房产销售推荐 - myqiye