【链接】h在这里写链接


【题意】


在这里写题意

【题解】


莫队算法+树状数组。
区间增加1或减少1.
对逆序对的影响是固定的。
(用冒泡排序变成升序的交换次数,就是逆序对的个数)

【错的次数】


0

【反思】


在这了写反思

【代码】

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N = 3e4;
  5.  
  6. int n,m, a[N + 10], l, r;
  7. long long ans[N + 10],now = 0;
  8.  
  9. struct BI {
  10.     int a[N + 10];
  11.  
  12.     int lowbit(int x) {
  13.         return x&(-x);
  14.     }
  15.  
  16.     void add(int x,int y) {
  17.         while (x <= N) {
  18.             a[x] += y;
  19.             x += lowbit(x);
  20.         }
  21.     }
  22.  
  23.     int sum(int x) {
  24.         int now = 0;
  25.         while (x > 0) {
  26.             now += a[x];
  27.             x -= lowbit(x);
  28.         }
  29.         return now;
  30.     }
  31.  
  32.     int get_sum(int l, int r) {
  33.         return sum(r) - sum(l - 1);
  34.     }
  35. }BIT;
  36.  
  37. struct abc {
  38.     int l, r, id;
  39. }Q[N+10];
  40.  
  41. bool cmp(abc a, abc b) {
  42.     if (a.l / 100 == b.l / 100) {
  43.         return a.r < b.r;
  44.     }
  45.     else
  46.         return a.l < b.l;
  47. }
  48.  
  49. int main() {
  50.     //freopen("F:\\rush.txt", "r", stdin);
  51.     ios::sync_with_stdio(0);
  52.     cin >> n;
  53.     for (int i = 1; i <= n; i++) cin >> a[i];
  54.     cin >> m;
  55.     for (int i = 1; i <= m; i++) {
  56.         cin >> Q[i].l >> Q[i].r;
  57.         Q[i].id = i;
  58.     }
  59.     sort(Q + 1, Q + 1 + m, cmp);
  60.     l = 1, r = 1, BIT.add(a[1], 1), now = 0;
  61.     for (int i = 1; i <= m; i++) {
  62.         while (r < Q[i].r) {
  63.             r++;
  64.             now += BIT.get_sum(a[r] + 1, n);
  65.             BIT.add(a[r], 1);
  66.         }
  67.         while (l > Q[i].l) {
  68.             l--;
  69.             now += BIT.get_sum(1, a[l] - 1);
  70.             BIT.add(a[l], 1);
  71.         }
  72.         while (r > Q[i].r) {
  73.             now -= BIT.get_sum(a[r] + 1, n);
  74.             BIT.add(a[r], -1);
  75.             r--;
  76.         }
  77.         while (l < Q[i].l) {
  78.             now -= BIT.get_sum(1, a[l] - 1);
  79.             BIT.add(a[l], -1);
  80.             l++;
  81.         }
  82.         ans[Q[i].id] = now;
  83.     }
  84.     for (int i = 1; i <= m; i++)
  85.         cout << ans[i] << endl;
  86.     return 0;
  87. }

【2017 ACM/ICPC 乌鲁木齐赛区网络赛环境测试赛 E】蒜头君的排序的更多相关文章

  1. 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)

    为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997)     状态压缩DP Rotate(hdu4998)    相对任一点的旋转 Overt(hdu4999 ...

  2. 2017 ACM/ICPC 南宁区 网络赛 Overlapping Rectangles

    2017-09-24 20:11:21 writer:pprp 找到的大神的代码,直接过了 采用了扫描线+线段树的算法,先码了,作为模板也不错啊 题目链接:https://nanti.jisuanke ...

  3. Skiing 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛H题(拓扑序求有向图最长路)

    参考博客(感谢博主):http://blog.csdn.net/yo_bc/article/details/77917288 题意: 给定一个有向无环图,求该图的最长路. 思路: 由于是有向无环图,所 ...

  4. 2017 ACM/ICPC 新疆赛区 I 题 A Possible Tree 带权并查集

    传送门 题意:给定一棵带权树的形态, 但是并不知道每天条边的具体权重. 然后给m个信息, 信息格式为u v val, 表示在树上u 到 v 的路径上经过的边的权重的异或和为val, 问前面最多有多少个 ...

  5. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 M. Frequent Subsets Problem【状态压缩】

    2017 ACM-ICPC 亚洲区(南宁赛区)网络赛  M. Frequent Subsets Problem 题意:给定N和α还有M个U={1,2,3,...N}的子集,求子集X个数,X满足:X是U ...

  6. 2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest

    2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest A - Arranging Wine 题目描述:有\(R\)个红箱和\(W\)个白箱,将这 ...

  7. 2017 ACM/ICPC Asia Regional Shenyang Online spfa+最长路

    transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/1 ...

  8. 2017 ACM ICPC Asia Regional - Daejeon

    2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...

  9. 2017 ACM/ICPC Shenyang Online SPFA+无向图最长路

    transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/1 ...

随机推荐

  1. ThinkPHP数据分页Page.class.php

    获取分页类 ThinkPHP提供了数据分页的扩展类库Page,能够在http://www.thinkphp.cn/extend/241.html下载,或者下载官方的完整扩展包(http://www.t ...

  2. JavaLearning:日期操作类

    package org.fun.classdemo; import java.util.Calendar; import java.util.GregorianCalendar; public cla ...

  3. oracle 数据库批处理文件

    文件夹结构 初始化脚本 |----orcl_sql |----init_user.sql |----tab_home.sql |----TAB_USER.sql |----init.bat init. ...

  4. Excel的版本

    https://en.wikipedia.org/wiki/Microsoft_Excel 取自维基百科,需要特别注意的是,从v12开始,有很大的改变.后缀名从xls变为xlsx Versions 5 ...

  5. android 图片特效处理之怀旧效果

    图片特效处理系列将介绍图片的像素点的特效处理,这些物资注重的是原理.也就是说只要你知道这些算法不管是C++,VB,C#,Java都可以做出相同的特效.下面将介绍图片怀旧效果的算法.算法如下: 上面公式 ...

  6. POJ 1904 思路题

    思路: 思路题 题目诡异地给了一组可行匹配 肯定有用啊-. 就把那组可行的解 女向男连一条有向边 如果男喜欢女 男向女连一条有向边 跑一边Tarjan就行了 (这个时候 环里的都能选 "增广 ...

  7. vue和miniui 一起使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. python 内存中写入文件(read读取不到文件解决)

    from io import StringIO a = StringIO.StringIO('title') a.write('content1\n') a.write('content2') a.s ...

  9. 谈一谈Nginx的强大

    什么是Nginx? Nginx是一款高性能,开源的,支持高并发而轻量级的Web服务器,同时也是具有反向代理服务器及电子邮件(IMAP/POP3)的代理服务器. 基于REST架构风格,并且以统一资源描述 ...

  10. spring之AOP(转)

    Spring之AOP篇: AOP框架是Spring的一个重要组成部分.但是Spring IOC 并不依赖于AOP,这就意味着你有权力选择是否使用AOP,AOP作为Spring IOC容器的一个补充,使 ...