先吐槽


这题做了两天,昨天讲分治,老师用归并讲了一遍,今天又用树状数组讲了一遍

归并不难,啊啊啊我居然才调出来

思路

  归并两个数组时,对于第二个数组的元素a[c2],它与第一个数组中目前还没归到总数组里的元素形成逆序对

  c1,c2是指针,对于a[c2],它与a[c1..mid]构成逆序对,贡献{mid - c1 + 1}对

注意

  ans开longlong,不然会WA一半!

  临时数组c开成全局变量,函数里放不下

两种记录方式

  >函数不返回值,ans开成全局变量,在每次归并两个数组时增加对数

  >函数返回值,ans开在函数里,赋值递归两个分数组的返回值之和,再加上归并两个数组时的对数

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath> using namespace std; long long n , ans;
int a[] , c[];
long long back(int l , int r)
{
  if(l == r)
    return ;
  int mid = l + (r - l) / ;
  long long ans = back(l , mid);
  ans += back(mid + , r);
  int c1 = l , c2 = mid + , top = l;//c[500010]太大,只能开全局
  while (c1 <= mid && c2 <= r)
  {
    if(a[c1] <= a[c2])
      c[top++] = a[c1++];
    else
    {
      c[top++] = a[c2++];
      ans += mid - c1 + ;
    }   }
  while (c1 <= mid)
    c[top++] = a[c1++];
  while (c2 <= r)
    c[top++] = a[c2++];
  for (int i = l ; i <= r ; i++)
    a[i] = c[i];
  return ans;
} int main()
{
  cin >> n;
  for (int i = ; i <= n ; i++)
  {
    cin >> a[i];
  }
  ans = back( , n);
  cout << ans << endl;
  return ;
}

【题解】P1908 逆序对——归并算法的更多相关文章

  1. 洛谷P1908 逆序对

    P1908 逆序对 2.2K通过 4.4K提交 题目提供者该用户不存在 标签云端 难度普及/提高- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 归并排序党注意了!数组要开… ...

  2. 「杂烩」精灵魔法(P1908逆序对弱化版)

    「杂烩」精灵魔法(P1908逆序对弱化版) 题面: 题目描述 \(Tristan\)解决了英灵殿的守卫安排后,便到达了静谧的精灵领地--\(Alfheim\) .由于$ Midgard$ 处在$ Al ...

  3. 洛谷 P1908 逆序对 Label:归并排序||树状数组 不懂

    题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定 ...

  4. 洛谷 P1908 逆序对

    \[传送门qwq\] 题目描述 猫猫\(TOM\)和小老鼠\(JERRY\)最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计. 最近,\(TOM\)老猫查阅 ...

  5. P1908 逆序对

    传送门 这题似乎不应该出现在这里.. 日常做法(归并): #include<iostream> #include<cstdio> #include<algorithm&g ...

  6. 洛谷P1908 逆序对【递归】

    题目:https://www.luogu.org/problemnew/show/P1908 题意:给定一个数组,求逆序对个数. 思路: 是一个很经典的题目了.通过归并排序可以求逆序对个数. 现在有一 ...

  7. 【洛谷】【归并排序】P1908 逆序对

    [题目描述:] 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是 ...

  8. 洛谷P1908 逆序对 [权值线段树]

    题目传送门 逆序对 题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的 ...

  9. P1908 逆序对-(树状数组)

    https://www.luogu.org/problem/P1908 比较喜欢线段树,懒得用树状数组(只会套模板,位运算的精髓没有领悟到),一直没有记录树状数组代码,又得捡回来,趁这道题记录一下模板 ...

随机推荐

  1. deepin idea2019注册码

    找了好久终于找到能用的注册码了https://blog.csdn.net/zixiao217/article/details/82942476第一个好像是已经过期了,然后试了下第二个发现可以直接官网下 ...

  2. linux下大文件查询具体段内容

    有时候我们的文件比较大,比如几十G,甚至上百G.这么大的文件怎么查询呢? 有很多种方法都可以实现,这儿选择用 cat 这个命令实现. 先来看看 cat 的介绍 cat 有个对应的命令 tac,cat反 ...

  3. nginx负载均衡动态自动更新(微博开源模块nginx-upsync-module使用)

    这几天项目有个需求:负载要求能根据节点健康状态动态的增减.nginx自带的upstram已经很强大,而且基于Nginx Upstream配置动态更新已经有很多开源方案,大多数都是基于生成配置文件后进行 ...

  4. FastOne专业计算平台助力生命科学研发

    11月16日,由AWS主办的云计算行业沙龙在中油阳光酒店举行,速石科技CEO陈熹就高性能计算如何助力生命科学领域发表了精彩的演讲. 面临的问题及挑战 在算力及高性能领域,随着行业客户的业务需求量,数据 ...

  5. MySQL/数据库 知识点总结

    书籍推荐 <SQL基础教程(第2版)> (入门级) <高性能MySQL : 第3版> (进阶) 文字教程推荐 SQL Tutorial (SQL语句学习,英文).SQL Tut ...

  6. 权限认证基础:区分Authentication,Authorization以及Cookie、Session、Token

    1. 认证 (Authentication) 和授权 (Authorization)的区别是什么? 这是一个绝大多数人都会混淆的问题.首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我 ...

  7. postgresql gin索引使用

    由于属于老项目,postgresql使用版本9.6,主要解决‘%name%"查询无法使用索引问题.pg_trgm模块提供函数和操作符测定字母,数字,文本基于三元模型匹配的相似性, 还有支持快 ...

  8. UidGenerator springboot2集成篇

    uid-generator 官网集成文档: https://github.com/baidu/uid-generator/blob/master/README.zh_cn.md 由于并没有提供spri ...

  9. Python Selenium定位元素常用解决办法

       在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException), ...

  10. 谈谈 InnoDB引擎中的一些索引策略

    如果我们在工作能够更好的利用好索引,那将会极大的提升数据库的性能. 覆盖索引 覆盖索引是指在普通索引树中可以得到查询的结果,不需要在回到主键索引树中再次搜索 建立如下这张表来演示覆盖索引: creat ...