zoukankan      html  css  js  c++  java
  • JZOJ 3240. Seat

    题目

    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搞一下
    • 直接打

    代码

     1 #include<iostream>
     2 #include<map>
     3 #include<cstdio>
     4 #define ll long long
     5 using namespace std;
     6 map<string,int> mapp;
     7 ll a[100001];
     8 ll c[100001];    
     9 int n;
    10 int lowbit(int x){ return x&(-x); }
    11 void add(int i,int x)
    12 {
    13     while (i<=n)
    14     {
    15         c[i]+=x;
    16         i+=lowbit(i);
    17     }
    18 }
    19 int sum(int i)
    20 {
    21     int res=0;
    22     while(i>=1)
    23     {
    24         res+=c[i];
    25         i-=lowbit(i);
    26     }
    27     return res; 
    28 }
    29 int main ()
    30 {
    31     string s;
    32 
    33     cin>>n;
    34     for (int i=1;i<=n;i++) {cin>>s; mapp[s]=i;}
    35     for (int i=1;i<=n;i++) {cin>>s; a[i]=mapp[s];}
    36     ll ans=0;
    37     for (int i=1;i<=n;i++)
    38     {
    39         add(a[i],1);
    40         ans+=i-sum(a[i]);
    41     }
    42     cout<<ans;
    43 }
    为何要逼自己长大,去闯不该闯的荒唐
  • 相关阅读:
    ECMAScript 6 基础入门
    软件历史版本存档及下载
    arduino 编程基础
    生活中的实验 —— 家庭电路
    电子元件 —— 继电器
    电与磁 —— 电磁铁
    windows cmd 命令行 —— 进程与服务
    计算机硬件、摄影设备、物质、材料英语
    DHCP服务器备份、还原、迁移
    SVN同步
  • 原文地址:https://www.cnblogs.com/zjzjzj/p/11116141.html
Copyright © 2011-2022 走看看