传送门

老早以前做的题,出了点小锅一直没修,今天突然来了兴致

于是

修了下。。。。。。

大概就是按原顺序编号,然后把编号丢到第二个序列中,求遍逆序对(这里用树状数组求)。

而关于存人名的问题---->map

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define re register
 4 #define LL long long
 5 #define DB double
 6 #define For(x,a,b) for(re int x=a;x<=b;x++)
 7 #define For2(x,a,b) for(re int x=a;x>=b;x--)
 8 #define LFor(x,a,b) for(re LL x=a;x<=b;x++)
 9 #define LFor2(x,a,b) for(re LL x=a;x>=b;x--)
10 #define Abs(x) ((x>0)? x:-x)
11 map<string,LL>tch;
12 int n;
13 char s[100005][7];
14 LL p[100005];
15 LL f[100005];
16 LL c[500005];
17 LL ans;
18 struct pp
19 {
20     LL val,pos;
21 }a[100005];
22 inline LL lowbit(LL x) {return x&(-x);}
23 inline bool cmp(pp x,pp y) {return x.val==y.val? x.pos>y.pos:x.val>y.val;}
24 LL query(LL x)
25 {
26     LL sum=0;
27     while(x>0)
28     {
29         sum+=c[x];
30         x-=lowbit(x);
31     }
32     return sum;
33 }
34 void update(LL x)
35 {
36     while(x<=n)
37     {
38         c[x]+=1;
39         x+=lowbit(x);
40     }
41 }
42
43 int main()
44 {
45     scanf("%d",&n);
46     int tot=0;
47     For(i,1,n)
48     {
49         scanf("%s",s[i]);
50         tch[s[i]]=++tot;
51     }
52     For(i,1,n)
53     {
54         scanf("%s",s[i]);
55         a[i].val=tch[s[i]];
56         a[i].pos=i;
57     }
58     sort(a+1,a+n+1,cmp);
59     ans=0;
60     For(i,1,n)
61     {
62         update(a[i].pos);
63         ans+=query(a[i].pos-1);
64     }
65     printf("%lld",ans);
66     return 0;
67 }

View Code

转载于:https://www.cnblogs.com/3soon/p/11530372.html

[LUOGU]P5149 会议座位相关推荐

  1. luogu P5149 会议座位

    本题是核心是求逆序对,但是题目的序列是字符串,因此可以用map+归并排序求解. 将字符串用map维护然后再通过读入第二组字符串将pos[i]更新为原本字符串对应的下标,再通过归并排序求解逆序对. #i ...

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

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

  3. 洛谷P5149 会议座位

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

  4. 洛谷 P5149 会议座位

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

  5. P5149 会议座位

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

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

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

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

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

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

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

  9. 【洛谷】P5149 会议座位

    题目地址: https://www.luogu.com.cn/problem/P5149 题目背景: 话说校长最近很喜欢召开全校教职工大会,让老师们强行听他装逼 题目描述: 现在校长在校园网上公布了一 ...

最新文章

  1. Java项目:进销存系统(java+Gui)
  2. arm下的linux可以运行qt吗,Ubuntu平台Arm下QT环境搭建
  3. CodeForces - 1265D Beautiful Sequence(贪心+构造+思维)
  4. 只安装python_AI帮你写Python,安装只需5步,还能任你调教 | 开源
  5. idea使用junit测试_在JUnit测试中使用Builder模式
  6. 使用IDEA创建Maven项目和Maven使用入门(配图详解)
  7. 前端学习(2143):webpack的config.js配置和package.json
  8. 云漫圈 | 学Python还是Java, 8张漫画带你全面分析
  9. OpenCV属性页配置问题~
  10. Fields of Mathematics
  11. python实现文件转数组
  12. Android 源代码中的res
  13. C#-Activex插件操作指南
  14. 使用阿里云code和git管理项目
  15. 为什么c语言没落了,编程语言Go飞速大涨,Delphi走向没落
  16. 引领IT大迁徙 Emulex持续优化应用交付
  17. python 正则表达式的应用
  18. UltraVNC源码编译流程
  19. rss 是什么?有什么用?
  20. 「JAVA」通过抢气球案例,来梳理线程基础知识

热门文章

  1. windows 强制删除文件夹 不提示确认
  2. apicloud 第三方登录授权、微信、扣扣、微博登录授权
  3. 黑鲨手机计算机科学技术器,手机秒变3D 黑鲨科技与康得新共推裸眼3D神奇“膜”法...
  4. ASP.NET如何导出excel和txt并可以个性化修改表头添加统计行等,并传回客户端下载
  5. 【接口篇 / Wan】(6.0) ❀ 02. 用 4G 做备用宽带 (下) ❀ FortiGate 防火墙
  6. WPG闪电充移动电源5000m毫安石墨烯聚合物超薄便携移动电源智能苹果安卓手机通用
  7. 如何关闭苹果手机自动扣费_如果你用的是苹果手机,那这个功能必须关闭,否则每月会自动扣费...
  8. Jupyter Notebook使用技巧:换皮肤
  9. C# 窗口全屏 隐藏任务栏 (代码)
  10. git报错Another git process seems to be running in this repository, e.g. an editor opened by ‘git commi