题目是一道求逆序对的题目,但是我们先要将每一个名字转化为数字再进行计算

求逆序对的个数用树状数组或归并即可

题目有个坑点,名字包含大小写字母,所以字典树需要开大一点

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define ss(a)       scanf("%s",a)
#define sd(a)       scanf("%d",&a)
#define pd(a)       printf("%d\n",a)
#define pll(a)      printf("%lld\n",a)
#define rush()      int T;cin>>T;while(T--)
using namespace std;
typedef long long ll;
const int N=1e5+5;int n,m;int i,j,k;int a[N];int ch[N*5][100],val[N*5];int tot=0;int c[N];int lowbit(int x){ return x&(-x); }int idx(char ch){ return ch-'A'; }void insert(char *s,int rt,int tag)
{for(int i=0;s[i];i++){int x=idx(s[i]);if(ch[rt][x]==0) ch[rt][x]=++tot;rt=ch[rt][x];}val[rt]=tag;
}int search(char *s,int rt)
{for(int i=0;s[i];i++){int x=idx(s[i]);rt=ch[rt][x];}return val[rt];
}void add(int x,int k)
{for(;x<=n;x+=lowbit(x)) c[x]+=k;
}ll ask(int x)
{ll ans=0;for(;x;x-=lowbit(x)) ans+=c[x];return ans;
}int main()
{//IOS;char s[10];while(~sd(n)){for(int i=1;i<=n;i++) ss(s),insert(s,0,i);for(int i=1;i<=n;i++) ss(s),a[i]=search(s,0);ll ans=0;for(int i=1;i<=n;i++) add(a[i],1),ans+=i-ask(a[i]);pll(ans);}return 0;
}

洛谷 P5149 会议座位(树状数组+Trie)相关推荐

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

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

  2. 洛谷 P5149 会议座位

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

  3. 洛谷 - P2617 Dynamic Rankings(树状数组套主席树)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a,再给出 m 次操作: Q l r k:返回区间 [ l , r ] 内第 k 大的数 C x y:令 a[ x ] = y 题目分析:其实 ...

  4. 洛谷P5149 会议座位

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

  5. 洛谷 P2357 守墓人(树状数组)

    树状数组区间更新,区间查询的入门好题 const int N=2e5+5;int i,j,k;int n,m,t;ll a[N]; ll c[N][2];ll sum[N];void add(int ...

  6. 洛谷-5149 会议座位

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

  7. 洛谷P3688/uoj#291. [ZJOI2017]树状数组

    传送门(uoj) 传送门(洛谷) 这里是题解以及我的卡常数历程 话说后面那几组数据莫不是lxl出的这么毒 首先不难发现这个东西把查询前缀和变成了查询后缀和,结果就是查了\([l-1,r-1]\)的区间 ...

  8. 树状数组入门——以洛谷3374为例

    树状数组入门 含义:顾名思义,用树状表示的数组 功能:是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值:经过简单修改可以在log( ...

  9. 洛谷P3374 【模板】树状数组 1

    题目链接:[模板]树状数组 1 - 洛谷 模板题就不多说了 ac代码: #include <cstdio> #include <iostream> #include <a ...

最新文章

  1. 70.nodejs操作mongodb
  2. linux swp 内存不足,Linux 增加 Swap 交换分区解决内存不足
  3. python 发送邮件解决所有乱码问题
  4. JavaScript历史状态管理
  5. 西瓜书学习记录-绪论
  6. java连接unix_Java 使用 UnixSocket 调用 Docker API
  7. 华为否认今年将推出搭载鸿蒙系统手机;苹果或在 3 年内推出 5G 基带芯片;Node.js 12.12.0 发布 | 极客头条...
  8. 设置eclipse中的字体大小
  9. 永磁同步电机矢量控制(四)——simulink仿真搭建
  10. 给 QuickTime 播放器添加方向键快进/快退功能
  11. 修改 exchange服务器地址,绑定exchange邮箱服务器地址
  12. 用C语言写一个图书管理系统大作业
  13. android手机变windows8,安卓手机如何把手机界面投屏到windows8/10电脑上
  14. 解析压敏电阻与TVS管的性能对比,谁能更胜一筹?
  15. python 矩阵输出
  16. 撸了隔壁的网,满足一下窝的偷窥癖
  17. 改造industrial_robot_simulator给joint_states的velocity赋值,便于测试轨迹规划的速度平滑性
  18. 微信的新消息一键标为已读.简单的微信脚本,使用autojs编写的安卓自动化脚本
  19. 2017.10.12 记者招待会
  20. 利用turtle画一个五角星

热门文章

  1. MATERIAL DESIGN的学习笔记
  2. discord 自动水群脚本
  3. 进度压缩: 赶工与快速跟进
  4. 多做善事,会得到好报的
  5. JavaScriptTypeScript
  6. [PWNHUB 公开赛 2018]傻 fufu 的工作日
  7. easypoi导出隔行样式设置
  8. 揭露人性丑恶的五大心理实验
  9. 常用html/css/js总结
  10. 用电击大脑戒毒、减肥、变成游戏高手:正在沦为民科的经颅电磁刺激