题目地址:

https://www.luogu.com.cn/problem/P5149

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

题目描述:
现在校长在校园网上公布了一份座位表,nnn位老师从左到右依次排成一行。老师们都对这个座位很满意。然而到了开会时,校长不小心把座位表打乱了,老师们很不满。老师们并不在意自己的位置变了多少,但如果有一对老师aaa和bbb,他们原来的座位是aaa在bbb左边,现在变成了aaa在bbb右边,那么这一对老师便会贡献一单位不满值。校长想知道这些老师的总不满值是多少。

输入格式:
第一行一个正整数nnn,为nnn位老师。
第二行有nnn个字符串,每个字符串代表老师的名字(大小写敏感)。这一行代表原来的座位表。
第三行有nnn个字符串,代表打乱后的座位表。

输出格式:
一行,一个正整数,表示老师们的总不满值。

数据范围:
对于30%30\%30%的数据,1≤n≤1031\le n \le 10^31≤n≤103。
对于100%100\%100%的数据,1≤n≤1051\le n \le 10^51≤n≤105,每位老师名字长度不超过555,只有大小写字母并且互不相同。注意名字对大小写敏感。

其实就是求逆序对个数,可以用归并排序。代码如下:

#include <iostream>
#include <unordered_map>
using namespace std;const int N = 1e5 + 10;
int n, a[N], tmp[N];
unordered_map<string, int> mp;long merge_sort(int l, int r) {if (l == r) return 0;int mid = l + (r - l >> 1);long res = merge_sort(l, mid) + merge_sort(mid + 1, r);int i = l, j = mid + 1, idx = l;while (i <= mid && j <= r)if (a[i] <= a[j]) {res += j - mid - 1;tmp[idx++] = a[i++];} else tmp[idx++] = a[j++];while (i <= mid) tmp[idx++] = a[i++], res += r - mid;while (j <= r) tmp[idx++] = a[j++];for (i = l; i <= r; i++) a[i] = tmp[i];return res;
}int main() {scanf("%d", &n);for (int i = 1; i <= n; i++) {string s;cin >> s;mp[s] = i;}for (int i = 1; i <= n; i++) {string s;cin >> s;a[i] = mp[s];}printf("%ld\n", merge_sort(1, n));
}

时间复杂度O(nlog⁡n)O(n\log n)O(nlogn),空间O(n)O(n)O(n)。

【洛谷】P5149 会议座位相关推荐

  1. 洛谷 P5149 会议座位

    洛谷 P5149 会议座位 Description 现在校长在校园网上公布了一份座位表,n位老师从左到右依次排成一行.老师们都对这个座位很满意. 然而到了开会时,校长不小心把座位表打乱了,老师们很不满 ...

  2. 洛谷P5149——会议座位【字典树 + 逆序对】

    洛谷P5149--会议座位 大致思路:我们先用字典树把单词存起来,在每个单词的末尾节点给这个单词按照出现顺序标号,然后在查找的过程中,把其出现顺序用一个数组一次存起来,然后求这个数组的逆序对即可. # ...

  3. 洛谷P5149 会议座位

    P5149 会议座位 字符串哈希 + 归并排序 代码 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10 ...

  4. 洛谷 P5149 会议座位(树状数组+Trie)

    题目是一道求逆序对的题目,但是我们先要将每一个名字转化为数字再进行计算 求逆序对的个数用树状数组或归并即可 题目有个坑点,名字包含大小写字母,所以字典树需要开大一点 #include <iost ...

  5. 洛谷-5149 会议座位

    题目描述 现在校长在校园网上公布了一份座位表,n位老师从左到右依次排成一行.老师们都对这个座位很满意. 然而到了开会时,校长不小心把座位表打乱了,老师们很不满.老师们并不在意自己的位置变了多少,但如果 ...

  6. [Luogu] 逆序数P5149 会议座位

    P5149 会议座位 目录 前言 归并排序求逆序数 tire+树状数组求 逆序数 前言 这题的标签 有trie感觉奇奇怪怪的 没想到trie树还可以搞这个 牛逼66 归并排序求逆序数 #include ...

  7. P5149 会议座位

    P5149 会议座位 题意: 其实还是求逆序对数. 解法: 用离散化统计每个数,再用树状数组求逆序对. CODE: #include<iostream> #include<cstdi ...

  8. P5149 会议座位(逆序对)

    P5149 会议座位(逆序对) 看到本题有字典树就来了,结果直接map下,也可做. 思路1:map,然后上BIT. 思路2:字典树实现类map,然后上BIT. code #include<bit ...

  9. P5149 会议座位(逆序对 离散化 hash 归并排序)

    题目链接:会议座位 - 洛谷 题目背景 话说校长最近很喜欢召开全校教职工大会,让老师们强行听他装逼 题目描述 现在校长在校园网上公布了一份座位表,n 位老师从左到右依次排成一行.老师们都对这个座位很满 ...

最新文章

  1. 蓄力十年,做一个成就
  2. 使用IDEA创建maven父子工程项目
  3. OpenCASCADE绘制测试线束:几何命令之展示
  4. [PHP语法]PHP基础语法与数据类型
  5. python进阶之学习笔记_干货 | Python进阶系列之学习笔记(四)
  6. ❤️六W字《计算机基础知识》(八)(建议收藏)❤️
  7. shell遍历文件夹
  8. Python练习:阶乘累计求和
  9. camera---(4)双摄像头分类
  10. python scheduler 定时执行_python使用apscheduler做定时任务的管理
  11. 对外提供dubbo服务的最佳实践
  12. 自定义办法设置 localStorage 过期时间
  13. SI5341驱动(verilog)
  14. yuv420p 详解_YUV格式详解,图文详解YUV420数据格式
  15. 数据库监控 Prometheus + Grafana
  16. 获取手机mac地址工具类
  17. Remote Execution - SaltStack远程执行模块使用指南
  18. python爬取旅游信息_Python 爬取 13 个旅游城市,告诉你五一大家最爱去哪玩?
  19. 关于Android高德地图路线规划的学习
  20. raid10模型比raid01模型的冗余度高

热门文章

  1. 前端导出pdf以及导出内容截断的解决办法
  2. 常见花材的固定的方法有哪些_插花方法之巧妙固定花材
  3. 解决微软拼音不显示备选字的问题
  4. 图像去雾,利用《bringing old photos back to life》 训练并修改
  5. [网鼎杯 2020 白虎组]PicDown(精讲)
  6. 7.3.1 B树及其基本操作
  7. macOS Big Sur 11.7 (20G817) Boot ISO 原版可引导镜像
  8. Generative Adversarial Networks in Computer Vision: A Survey and Taxonomy(计算机视觉中的GANs:综述与分类)
  9. SQL-10-14 4-4 查询具有最高价格的机器的型号,机器包括PC、Laptop、Printer (10分)
  10. ESP32/ESP8266/ESP32C3系列模组 AT固件MQTT 对接阿里物联网平台