[LUOGU]P5149 会议座位
传送门
老早以前做的题,出了点小锅一直没修,今天突然来了兴致
于是
修了下。。。。。。
大概就是按原顺序编号,然后把编号丢到第二个序列中,求遍逆序对(这里用树状数组求)。
而关于存人名的问题---->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 会议座位相关推荐
- luogu P5149 会议座位
本题是核心是求逆序对,但是题目的序列是字符串,因此可以用map+归并排序求解. 将字符串用map维护然后再通过读入第二组字符串将pos[i]更新为原本字符串对应的下标,再通过归并排序求解逆序对. #i ...
- [Luogu] 逆序数P5149 会议座位
P5149 会议座位 目录 前言 归并排序求逆序数 tire+树状数组求 逆序数 前言 这题的标签 有trie感觉奇奇怪怪的 没想到trie树还可以搞这个 牛逼66 归并排序求逆序数 #include ...
- 洛谷P5149 会议座位
P5149 会议座位 字符串哈希 + 归并排序 代码 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10 ...
- 洛谷 P5149 会议座位
洛谷 P5149 会议座位 Description 现在校长在校园网上公布了一份座位表,n位老师从左到右依次排成一行.老师们都对这个座位很满意. 然而到了开会时,校长不小心把座位表打乱了,老师们很不满 ...
- P5149 会议座位
P5149 会议座位 题意: 其实还是求逆序对数. 解法: 用离散化统计每个数,再用树状数组求逆序对. CODE: #include<iostream> #include<cstdi ...
- 洛谷P5149——会议座位【字典树 + 逆序对】
洛谷P5149--会议座位 大致思路:我们先用字典树把单词存起来,在每个单词的末尾节点给这个单词按照出现顺序标号,然后在查找的过程中,把其出现顺序用一个数组一次存起来,然后求这个数组的逆序对即可. # ...
- P5149 会议座位(逆序对)
P5149 会议座位(逆序对) 看到本题有字典树就来了,结果直接map下,也可做. 思路1:map,然后上BIT. 思路2:字典树实现类map,然后上BIT. code #include<bit ...
- P5149 会议座位(逆序对 离散化 hash 归并排序)
题目链接:会议座位 - 洛谷 题目背景 话说校长最近很喜欢召开全校教职工大会,让老师们强行听他装逼 题目描述 现在校长在校园网上公布了一份座位表,n 位老师从左到右依次排成一行.老师们都对这个座位很满 ...
- 【洛谷】P5149 会议座位
题目地址: https://www.luogu.com.cn/problem/P5149 题目背景: 话说校长最近很喜欢召开全校教职工大会,让老师们强行听他装逼 题目描述: 现在校长在校园网上公布了一 ...
最新文章
- Java项目:进销存系统(java+Gui)
- arm下的linux可以运行qt吗,Ubuntu平台Arm下QT环境搭建
- CodeForces - 1265D Beautiful Sequence(贪心+构造+思维)
- 只安装python_AI帮你写Python,安装只需5步,还能任你调教 | 开源
- idea使用junit测试_在JUnit测试中使用Builder模式
- 使用IDEA创建Maven项目和Maven使用入门(配图详解)
- 前端学习(2143):webpack的config.js配置和package.json
- 云漫圈 | 学Python还是Java, 8张漫画带你全面分析
- OpenCV属性页配置问题~
- Fields of Mathematics
- python实现文件转数组
- Android 源代码中的res
- C#-Activex插件操作指南
- 使用阿里云code和git管理项目
- 为什么c语言没落了,编程语言Go飞速大涨,Delphi走向没落
- 引领IT大迁徙 Emulex持续优化应用交付
- python 正则表达式的应用
- UltraVNC源码编译流程
- rss 是什么?有什么用?
- 「JAVA」通过抢气球案例,来梳理线程基础知识
热门文章
- windows 强制删除文件夹 不提示确认
- apicloud 第三方登录授权、微信、扣扣、微博登录授权
- 黑鲨手机计算机科学技术器,手机秒变3D 黑鲨科技与康得新共推裸眼3D神奇“膜”法...
- ASP.NET如何导出excel和txt并可以个性化修改表头添加统计行等,并传回客户端下载
- 【接口篇 / Wan】(6.0) ❀ 02. 用 4G 做备用宽带 (下) ❀ FortiGate 防火墙
- WPG闪电充移动电源5000m毫安石墨烯聚合物超薄便携移动电源智能苹果安卓手机通用
- 如何关闭苹果手机自动扣费_如果你用的是苹果手机,那这个功能必须关闭,否则每月会自动扣费...
- Jupyter Notebook使用技巧:换皮肤
- C# 窗口全屏 隐藏任务栏 (代码)
- git报错Another git process seems to be running in this repository, e.g. an editor opened by ‘git commi