Description

你和你的伙伴正在筹备村里的万人宴,由于村子是长条形的,所有宾客将坐在一张超级长桌的一侧就餐。

正当筹备工作进行得火热朝天,你和你的伙伴发现一个严重问题:由于缺乏沟通,你俩各自制作了一张座位图发给各位宾客。你必须计算出有多少对宾客,他们在两份座位图中次序安排是不同的。

例如,对以下两份座位图:

A B C D E

B A D E C

有三对宾客(A,B),(C,D)和(C,E),他们在两份座位图中的次序不同。

Input

输入的第一行是一个整数N(1<=N<=100000),代表宾客的数量。接下来的两行分别代表两张座位图。每行由N个空格分隔的字符串组成,这些字符串代表宾客,宾客名互不相同,只包含字母,长度不超过5个字符。两张座位图上的宾客名单保证是一致的。

Output

输出一个整数,代表有多少对宾客被两份座位图安排了不同的次序。

Sample Input

输入1:
3
Frank Sam Billy
Sam Frank Billy

输入2:
5
A B C D E
B A D E C

Sample Output

输出1:
1

输出2:
3

Data Constraint

1<=N<=100000

分析

题意简单:给定一个标准,让你求另一个序列的逆序对数

序列都是字符串形式,字符串哈希即可,这里我选择map(反正也能过)

然后用树状数组经典求法即可

#include <iostream>
#include <cstdio>
#include <map>
#include <cstring>
#include <string>
#define lowbit(x) x&-x
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll t[N],ans;
int a[N];
map<string,int> h;
string c;
int n,cnt;void Add(int x) {for (;x<N;x+=lowbit(x)) t[x]++;
}ll Sum(int x) {ll ans=0;for (;x;x-=lowbit(x)) ans+=t[x];return ans;
}int main() {scanf("%d",&n);for (int i=1;i<=n;i++) {    cin>>c;h[c]=++cnt;}for (int i=1;i<=n;i++) {cin>>c;a[i]=h[c];}for (int i=n;i;i--)ans+=Sum(a[i]),Add(a[i]);printf("%lld",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/mastervan/p/11117918.html

[树状数组][哈希]JZOJ 3240 Seat相关推荐

  1. 【牛客 - 331E】炫酷划线(权值线段树,树状数组哈希,随机数)

    题干: 链接:https://ac.nowcoder.com/acm/contest/331/E 来源:牛客网 平面上有一个圆,圆环上按顺时针顺序分布着从1到n,一共n个点. 现在无聊的小希开始按某种 ...

  2. The Untended Antiquity (二维树状数组 哈希)

    题意: 3种操作 1 在左上角 (r1,c1).右下角 (r2,c2) 的矩形框上设置围墙 2 把左上角 (r1,c1).右下角 (r2,c2) 的矩形框上的围墙删掉 3 询问 (r1,c1) 能否不 ...

  3. HDU - 5658 CA Loves Palindromic(回文自动机/哈希+树状数组)

    题目链接:点击查看 题目大意:给出一个字符串 s ,接下来给出 m 个查询,每次查询的形式会给出一个 l 和 r ,问区间 [ l , r ] 内有多少个本质不同的回文子串 题目分析:因为查询的次数比 ...

  4. 【CF869E】The Untended Antiquity(哈希+二维树状数组)

    当覆盖两点的最小矩形不同时,一定不可达 这样的问题不难想到经典的二维树状数组+差分来支持二维区间覆盖+查询 对于覆盖操作 我们可以差分的给这个矩阵里加上一个编号 对于操墙操作 我们可以反着减去这个编号 ...

  5. JZOJ 3.10 1542——跑步(树状数组+模拟+排序/归并排序)

    题目描述 FJ觉得赛马很无聊,于是决定调查将赛牛作为一种运动的可能性.他安排了N(1 <= N <= 100,000)头奶牛来进行一个L圈的赛牛比赛,比赛在一个环形的长度为C的跑道上进行. ...

  6. [虚树][树状数组][lca] Jzoj P5908 开荒

    Description 题目背景: 尊者神高达作为一个萌新,在升级路上死亡无数次后被一只大黄叽带回了师门.他加入师门后发现有无穷无尽的师兄弟姐妹,这几天新副本开了,尊者神高达的师门作为一个 pve师门 ...

  7. [cdq分治][树状数组] Jzoj P4419 hole

    Description GFS打算去郊外建所别墅,享受生活,于是他耗费巨资买下了一块风水宝地,但令他震惊的是,一群DSJ对GFS的富贵生活深恶痛绝,决定打洞以搞破坏. 现在我们简化一下这个问题,在这片 ...

  8. 树状数组 | 1057

    用哈希,把push的数x作为下标给hashTable(实则不存在,直接用tree树状数组记录数据)+1,pop则是以最后一个数x作为下标-1 . 树状数组和其原理不再赘述,需要注意的是最后的二分搜索( ...

  9. js 数组 实现 完全树_算法和数据结构 | 树状数组(Binary Indexed Tree)

    本文来源于力扣圈子,作者:胡小旭.点击查看原文 力扣​leetcode-cn.com 树状数组或二叉索引树(英语:Binary Indexed Tree),又以其发明者命名为 Fenwick 树.其初 ...

最新文章

  1. 百度不再效仿谷歌,否认分拆阿波罗
  2. 全面、经典视频教程(php、java、jsp、ajax、linux...)
  3. linux socket 阻塞与非阻塞,同步与异步
  4. linux socket中 send recv函数的 flags参数
  5. OpenCV DIS光流OpticalFlow的实例(附完整代码
  6. CF思维联系–CodeForces - 223 C Partial Sums(组合数学的先线性递推)
  7. matlab在电磁场与电磁波中的应用,matlab在电磁场与电磁波学习中的应用.docx
  8. showdoc如何创建文件夹_showDoc生成文档
  9. java 调度etl_Easy Scheduler是一个工作流调度系统,主要解决数据研发ETL错综复杂的依赖关系...
  10. java 调用枚举种方法_Java中枚举类型的一种使用方式
  11. 基于STM32的双向DC-DC变换器(论文+原理图+PCB+源码)
  12. 使用GDI绘制一个类似进度条的控件(1)
  13. ET框架——demo与自定义登录
  14. f检验matlab计算,F检验(F-Test)计算公式与在线计算器_三贝计算网_23bei.com
  15. 非常不错的停用词词表
  16. python+opencv直方图均衡化
  17. Win7输入法图标不见了怎么办
  18. 本地搭建start.spring.io
  19. ESP8266学习——Flash
  20. 怎样解决Keil复制文注释到记事本出现乱码

热门文章

  1. DataCapa 启动
  2. jQuery原理第四天
  3. 轻松弄懂var、let、const之间的区别
  4. ie6中容器内浮动元素的border边框不完全显示的bug
  5. Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks -译文
  6. 修改oracle 的dbname,在oracle 10g上修改dbname的实验
  7. mysql 查询包含1或者2_Mysql:同一个表上有2个不同的查询,包含count和group by
  8. 1011 牛牛学说话之-浮点数
  9. 4024-砾石的交换排序(C++,附思路)
  10. PTA16、列表元素个数的加权和(1) (10 分)