思路:由于只能交换相邻的数,所以每次最多减小1个逆序对(且如果存在逆序对那么肯定可以减小1个)!于是乎。。就是统计逆序对的裸题了。树状数组或归并都行。

 #pragma comment(linker, "/STACK:10240000,10240000")

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <map>
#include <queue>
#include <deque>
#include <cmath>
#include <vector>
#include <ctime>
#include <cctype>
#include <set> using namespace std; #define mem0(a) memset(a, 0, sizeof(a))
#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1 | 1
#define define_m int m = (l + r) >> 1
#define Rep(a, b) for(int a = 0; a < b; a++)
#define lowbit(x) ((x) & (-(x)))
#define constructInt4(name, a, b, c, d) name(int a = 0, int b = 0, int c = 0, int d = 0): a(a), b(b), c(c), d(d) {}
#define constructInt3(name, a, b, c) name(int a = 0, int b = 0, int c = 0): a(a), b(b), c(c) {}
#define constructInt2(name, a, b) name(int a = 0, int b = 0): a(a), b(b) {} typedef double db;
typedef long long LL;
typedef pair<int, int> pii;
typedef multiset<int> msi;
typedef multiset<int>::iterator msii;
typedef set<int> si;
typedef set<int>::iterator sii;
typedef vector<int> vi; const int dx[] = {, , -, , , , -, -};
const int dy[] = {, -, , , -, , , -};
const int maxn = 1e5 + ;
const int maxm = 1e5 + ;
const int maxv = 1e7 + ;
const int MD = 1e9 +;
const int INF = 1e9 + ;
const double PI = acos(-1.0);
const double eps = 1e-; int tmp[maxn], a[maxn]; LL merge(int l, int m, int r) {
int p = m + , t = l;
LL res = ;
for (int i = l; i <= m; i++) {
while (p <= r && a[i] > a[p]) {
tmp[t++] = a[p++];
}
res += p - m - ;
tmp[t++] = a[i];
}
for (int i = l; i < p; i++) a[i] = tmp[i];
return res;
} LL merge_sort(int l, int r) {
if (l == r) return ;
define_m;
return merge_sort(l, m) + merge_sort(m + , r) + merge(l, m, r);
} int main() {
//freopen("in.txt", "r", stdin);
int n;
LL k;
while (cin >> n >> k) {
for (int i = ; i < n; i++) {
scanf("%d", a + i);
}
LL ans = merge_sort(, n - ) - k;
ans = max(ans, 0LL);
cout << ans << endl;
}
return ;
}

Hint:做这题的时候发现一个不容易发现的坑(与这题本身无关),多个函数相加并不一定按从左至右的顺序执行(可能是为了某种意义上地优化代码)。此代码用c++交好像w会a掉,不信可以一试~(c++貌似优化程度比较高?)

最新文章

  1. 健忘vs总结
  2. SSM环境搭建(接口编程方式)
  3. Javascript定时器(一)——单线程
  4. find命令学习
  5. CallableAndFuture
  6. vc 获取当前时间
  7. Android Animations 视图动画使用详解!!!
  8. 更改mysql 数据库名称
  9. php系统无法上传图片问题
  10. CSV文件解析工具
  11. UWP Popup 弹出
  12. 基于MATLAB的中值滤波均值滤波以及高斯滤波的实现
  13. 值得注意的CSS属性
  14. eclipse search java 可以搜到 source.jar里的
  15. JavaSE_坚持读源码_Class对象_Java1.7
  16. Log4Net日志配置
  17. JS ——document、“或”、event(事件对象)
  18. ubuntu14.4.4安装smb服务实现文件共享
  19. todo:区块链????????
  20. Js中的this关键字(吉木自学)

热门文章

  1. 详解 NIO流
  2. [html]浏览器标签小图标LOGO简单设置
  3. HTML+CSS教程(三)marquee滚动效果
  4. 一个可能是世界上最全的 API 接口集合库开源项目
  5. java 容器(collection)--ArrayList 常用方法分析 源码分析
  6. apache虚拟主机配置-域名/IP和端口两种配置
  7. 浅谈 PHP 与手机 APP 开发
  8. 深入理解Java枚举
  9. 使用 html5 FileReader 获取图片, 并异步上传到服务器 (不使用 iframe)
  10. SaaS 公司如何切入大客户