ps:鉴于你们的蒟蒻yxj实在太蒻辽, 所以, 看不懂也是正常的........

树状数组

xxy学姐给我们讲的树状数组, 她讲的真的是太好啦!qwq!吹爆xxy

然后, 为了巩固自己, 硬着头皮写题解

题目链接

读完题之后来分析是要求逆序对

可以先离散化

因为我们要顺序存, f1数组的第i小和f2数组的第i小在同一个位置一定就是最优的

然后再求在离散化的那个数组里的逆序对的个数

你们将就着看代码吧,水平不够啊qwq..

#include <iostream>
#include <cstdio>
#include <algorithm>
#define mod 99999997
using namespace std;
const int N = ;
struct node {
long long h, id;
}f1[N], f2[N];
int n;
int id[N], c[N];
int cmp (node x, node y) {
return x.h < y.h;
}
int lowbit (int k) {
return k & (-k);
}
void change (int k) {
while (k <= n) {
c[k]++;
c[k] %= mod;
k += lowbit (k);
}
}
int query (int k) {
long long sum = ;
while (k) {
sum += c[k];
sum %= mod;
k -= lowbit (k);
}
return sum;
}
int main () {
scanf ("%d", &n);
for (int i = ; i <= n; i++)
scanf ("%lld", &f1[i].h),f1[i].id = i;
for (int i = ; i <= n; i++)
scanf ("%lld", &f2[i].h), f2[i].id = i;
sort (f1 + , f1 + + n, cmp);
sort (f2 + , f2 + + n, cmp);
for (int i = ; i <= n; i++)
id[f1[i].id] = f2[i].id;
long long ans = ;
for (int i = ; i <= n; i++) {
change (id[i]);
ans += i - query(id[i]);
ans %= mod;
}
printf ("%lld", ans);;
return ;
}

最新文章

  1. 第K大数
  2. 25个最佳的 WordPress Gallery 画廊插件
  3. Spark MLib 数据类型
  4. .NET NLog 详解(一)
  5. jQuery实现置顶和置底特效
  6. view视图--display中echo出ob_get_contents的缓冲内容--(实现,拼接好文件--导入文件)
  7. 如何给grldr.mbr和grldr改名
  8. Vim 第一天
  9. 用JS获取地址栏中的参数的简易方法
  10. android应用中去android市场去评分的功能实现(吐槽一波个人应用上线...)
  11. 通过IntelliJ IDEA和Maven命令查看某个jar包是怎么引入的
  12. python基础语法及知识点总结
  13. nwjs 解决手指可滑动问题
  14. 关于jQuery中click&amp;live&amp;on中的坑
  15. 批量删除SQL数据库中的所有表【笔记】
  16. android 分辨率
  17. Android实现EditText的富文本编辑
  18. 软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比
  19. vue-cli环境搭建初探!
  20. C++继承 派生类中的内存布局(单继承、多继承、虚拟继承)

热门文章

  1. Elastic Stack 7.5.0白金版永不过期
  2. C# GDI graphics.DrawImage 的参数问题
  3. 使用HttpWebRequest和HttpWebResponse时接收数据中文乱码的情况
  4. js-beautify 不换行
  5. Spring IOC 概述
  6. SQL Server中查找包含某个文本的存储过程 SQL 查找存储过程中出现过的文字怎么查询 查询整个数据库中出现的文本 sql 全局搜索
  7. SpringCloud-Consul开发环境配置
  8. 在python当中使用redis
  9. Web前端面试总结(别人的)
  10. Android常用五种布局