P5149 会议座位 题解 归并排序 逆序对

会议座位

传送门

题目背景

话说校长最近很喜欢召开全校教职工大会,让老师们强行听他装逼

题目描述

现在校长在校园网上公布了一份座位表, n n n 位老师从左到右依次排成一行。老师们都对这个座位很满意。

然而到了开会时,校长不小心把座位表打乱了,老师们很不满。老师们并不在意自己的位置变了多少,但如果有一对老师 a a a b b b,他们原来的座位是 a a a b b b 左边,现在变成了 a a a b b b 右边,那么这一对老师便会贡献一单位不满值。

校长想知道这些老师的总不满值是多少。

输入格式

第一行一个正整数 n n n,为 n n n 位老师。

第二行有 n n n 个字符串,每个字符串代表老师的名字(大小写敏感)。这一行代表原来的座位表。

第三行有 n n n 个字符串,代表打乱后的座位表。

输出格式

一行,一个正整数,表示老师们的总不满值。

样例 #1

样例输入 #1

3
Stan Kyle Kenny
Kyle Stan Kenny

样例输出 #1

1

样例 #2

样例输入 #2

5
A B C D E
B A D E C

样例输出 #2

3

提示

对于 30 % 30\% 30% 的数据, 1 ≤ n ≤ 1 0 3 1\le n \le 10^3 1n103

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 5 1\le n \le 10^5 1n105,每位老师名字长度不超过 5 5 5,只有大小写字母并且互不相同。注意名字对大小写敏感。

注明

以上来自洛谷 以上来自洛谷 以上来自洛谷

解题思路

温馨提示,建议你好好读题。 如果你还没思路,再往看。

题目提到:

老师们并不在意自己的位置变了多少,但如果有一对老师 a a a b b b,他们原来的座位是 a a a b b b 左边,现在变成了 a a a b b b 右边,那么这一对老师便会贡献一单位不满值。

由此可得,题目要求为,给你原始顺序序列以及打乱后的序列,求逆序对个数。不一样的是,将原本整型元素改为了字符串。

如果你不会逆序对求法,那么建议你先做这题。

AC Code

#include<bits/stdc++.h>
using namespace std;
template<typename T>inline void Quick_Write(T x) {
	if (x < 0) putchar('-'), x = -x;
	if (x > 9) Quick_Write(x / 10);
	putchar(x % 10 + '0');
	return;
}
struct Project_String {
	string _string, a;
} String[100005];
int n;
string a[100005], b[100005];
long long Answer;
inline void Merge_Sort(int left, int right) {
	if (left >= right) return;
	int middle = ((right - left) >> 1) + left;
	Merge_Sort(left, middle), Merge_Sort(middle + 1, right);
	int i = left, j = middle + 1, k = left;
	while (i <= middle && j <= right) {
		if (a[i] < a[j]) b[k++] = a[i++];
		else b[k++] = a[j++], Answer += middle - i, ++Answer;
	}
	while (i <= middle) b[k++] = a[i++];
	while (j <= right) b[k++] = a[j++];
	for (register int i = left; i <= right; ++i) a[i] = b[i];
}
inline bool Compar(Project_String x, Project_String y) {
	return x._string < y._string;
}
signed main() {
	ios::sync_with_stdio(0), cin.tie(0), cin >> n;
	for (register int i = 1; i <= n; ++i) cin >> String[i]._string;
	for (register int i = 1; i <= n; ++i) cin >> String[i].a;
	sort(String + 1, String + n + 1, Compar);
	for (register int i = 1; i <= n; ++i) a[i] = String[i].a;
	Merge_Sort(1, n), Quick_Write(Answer);
	return 0;
}

这部分不是题解,但建议你看看

注意到洛谷给到的此题标签为:
洛谷tag
虽说这道题可以用 Trie 树解,但至于吗?

然后是题解中对此题的一些评价:
评价1
评价2
最后,本人的疑问:这题是怎么把时间卡到 200ms 以内的?(希望能在评论区看见答复)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源的前端思维导图库介绍

在开源社区中&#xff0c;有许多优秀的思维导图库可供开发者使用。这些库通常具有丰富的功能和灵活的API&#xff0c;可以满足不同需求的前端开发。以下是一些流行的开源前端思维导图库&#xff0c;以及它们的特点和区别。 1. **MindMap** 特点&#xff1a; - 基于原生…

c1-第三周

文章目录 1月份2.定义一个整形数组arr2.定义整形栈s3.输入一个字符串包括大小写和数字&#xff0c;将其中的大写英文字母改为小写&#xff0c;并且输出数字个数4.根据下面数据&#xff0c;编程实现要求功能&#xff1a; 9月1.编写程序实现以下功能或问题3.完成以下功能4.对运算…

义乌慧鼎思是做什么的?

根据天眼查的信息&#xff0c;我们可以对其进行一番探究。义乌慧鼎思(义乌市慧鼎思商务信息咨询有限公司)成立于2021年&#xff0c;注册地位于我国浙江省义乌市。从其名称来看&#xff0c;“慧鼎思”寓意着智慧、重量和思考&#xff0c;这三个词汇也许能为我们揭示企业的经营理…

基于JAVA+ springboot实现的抗疫物质信息管理系统

基于JAVA springboot实现的抗疫物质信息管理系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 …

IR 召回测试数据集(中文测试集)——T2Ranking

文章排名包括两个阶段&#xff1a;文章检索和文章重排序&#xff0c;这对信息检索&#xff08;IR&#xff09;领域的学术界和业界来说都是重要而具有挑战性的课题。然而&#xff0c;常用的文章排名数据集通常集中在英语语言上。对于非英语场景&#xff0c;如中文&#xff0c;现…

简单实现微信机器人-接入ChatGPT3.5

前端基于开源项目&#xff1a;wechaty实现微信网页版功能&#xff0c;感兴趣的小伙伴可以自行研究。 前端代码已开源&#xff1a;https://github.com/labi-xiaoxin/wechat-bot-wechat4u.git 本项目搭建愿景&#xff1a; 1、在无法科学上网的情况下&#xff0c;实现ChatGPT对话…

unicloud 云数据库概念及创建一个云数据库表并添加记录(数据)

云数据库概念 uniCloud提供了一个 JSON 格式的文档型数据库。顾名思义&#xff0c;数据库中的每条记录都是一个 JSON 格式的文档。 它是 nosql 非关系型数据库&#xff0c;如果您之前熟悉 sql 关系型数据库&#xff0c;那么两者概念对应关系如下表&#xff1a; 关系型JSON 文…

基于React的低代码开发:探索应用构建的新模式

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-OywB1Epu30PrvOJQ {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

华为“仓颉”不是中文编程:中文编程早有所属,势如破竹

“何时能见证中国自主研发的编程语言崛起&#xff1f;”这是我们这些对IT生态心怀关切的人常常深思的问题。 语言&#xff0c;作为文化的灵魂&#xff0c;总是与特定的环境和人群紧密相连。无论是中文还是英语&#xff0c;它们都不仅仅是交流的工具&#xff0c;更是各自文化背…

SL3038宽电压降压恒压 72V降12V,110V降压12V 开关型降压芯片

SL3038宽电压降压恒压开关型降压芯片是一款高效、稳定的电源管理芯片&#xff0c;广泛应用于各种电子设备中。它能够将高电压降至所需的低电压&#xff0c;并保持输出电压的稳定&#xff0c;从而确保设备的正常运行。本文将详细介绍SL3038的工作原理、特点、应用以及使用注意事…

5分钟 electron 入门

文章目录 番茄钟应用起步安装初始化启动 electron 项目nodemon 启动项目 主进程 app 和窗口管理 BrowserWindowapp 、BrowserWindowready 事件webContent&#xff1a;主进程控制网页退出应用 装载网页到窗口资源来源安全声明SPA 单页应用 进程的环境Chromium 沙盒Electron 主进…

vs2022方法上面看不到引用条数

vs2022 Win11 开发过程中经常要查看方法的引用情况&#xff0c;这个功能一直好好的&#xff0c;但是有一天突然不行了&#xff0c;看不到引用了&#xff0c;这就让人很难受&#xff0c;从网上查找资料说需要设置CodeLens&#xff0c;这个一直是勾着的&#xff0c;没动过这个设…

JVM-对象创建与内存分配机制深度剖析 3

JVM对象创建过程详解 类加载检查 虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个 符号引用代表的类是否已被加载、解析和初始化过。如果没有&#xff0c;那必须先执行相应的类加载过程。 new…

好用的便签软件,好用便签排行榜

在生活和工作中&#xff0c;便签软件的使用已经成为我们日常不可或缺的工具。随着技术的发展&#xff0c;便签软件的功能越来越强大&#xff0c;用户也有了更多选择。好用的便签软件有哪些&#xff0c;希望大家能从好用便签排行榜中找到适合自己的工具。 ##1.好用便签 好用便签…

CNC机加工引入复合机器人可以提高生产效率,降低成本

CNC加工企业在过去依赖大量的人工来完成生产线上的各项任务&#xff0c;包括CNC机床的上下料、物料搬运以及部分装配工作。然而&#xff0c;随着产能需求的不断增长和人工成本的持续上升&#xff0c;企业逐渐意识到自动化升级的重要性与迫切性。 面临的挑战与需求&#xff1a; …

Win系统创建虚拟环境利用pyinstaller打包python文件为.exe文件

0. 前提&#xff1a;win系统已经安装Aaconda&#xff0c;检查是否安装成功&#xff0c;命令如下&#xff1a; conda -V输出如下则安装成功&#xff0c;否则需要安装网上教程重新安装一下&#xff08;PS&#xff1a;内存允许的话&#xff0c;建议装固态盘&#xff0c;不然很慢&…

小孩近视用白炽灯好吗?多款热门护眼台灯实测分享

如今对于家长而言&#xff0c;最关心的事情除了孩子的学习成绩以外&#xff0c;最重要的就是孩子的视力健康问题&#xff0c;现在的孩子近视率实在太高了&#xff0c;不少还在小学阶段的学生都开始配戴上了眼镜。所以想要保护孩子的视力健康一盏好的台灯肯定是必不可少的&#…

5G工业网关是什么?

随着科技的飞速发展&#xff0c;5G技术已经逐渐渗透到我们生活的方方面面。而在工业领域&#xff0c;5G工业网关作为连接工业设备与网络的关键组件&#xff0c;正发挥着越来越重要的作用。HiWoo Box其5G工业网关产品以其卓越的性能和稳定性&#xff0c;正助力企业实现数字化转型…

枚举 --java学习笔记

什么是枚举 枚举是一种特殊类 格式&#xff1a; 修饰符 enum 枚举类名{ 名称1&#xff0c;名称2&#xff0c;...&#xff1b; //枚举类的第一行必须罗列的是枚举对象的名字 其他成员... } 枚举类的第一行只能罗列一些名称&#xff0c;这些名称都是常量&#xff0c;…

为什么不用 index 做 key?

“在 Vue 中&#xff0c;我们在使用 v-for 渲染列表的时候&#xff0c;为什么要绑定一个 key&#xff1f;能不能用 index 做 key&#xff1f;” 在聊这个问题之前我们还得需要知道 Vue 是如何操作 DOM 结构的。 虚拟DOM 我们知道&#xff0c;Vue 不可以直接操作 DOM 结构&am…