hdu 1394 线段树求逆序对
来源:互联网 发布:万网域名转移godaddy 编辑:程序博客网 时间:2024/06/02 03:00
HDU 1394
数据略水, 并且, 建树函数都没必要用了, 暴力也能过(学长说的), 一颗赛艇。
题解:找初始逆序对, 然后, 没往后移一位的逆序对数变化为,增加n - a[i], 减少 a[i] - 1,(a[i]自增处理过的);
找初始逆序对, 就找 {a[i] + 1, n}区间内出现的个数,没输入一个都处理;
AC code:
//lrl's submission#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define debug 0#define mid ((l + r) >> 1)#define ls rt << 1, l, mid#define rs rt << 1 | 1, mid + 1, r#define M(a, b) memset(a, b, sizeof(a))const int maxn = 5000 + 5;int sum[maxn << 2], n, a[maxn];void pushUp(int rt){sum[rt] = sum[rt << 1] + sum[rt << 1|1];}void update(int a, int rt, int l, int r){if(a < l || a > r)return;if(l == r){sum[rt]++;return;}update(a, ls);update(a, rs);pushUp(rt);}int query(int ql, int qr, int rt, int l, int r){if(ql <=l && qr >= r)return sum[rt];int ans = 0;if(ql <= mid)ans += query(ql, qr, ls);if(qr > mid)ans += query(ql, qr, rs);return ans;}int main(){#if debug freopen("in.txt", "r", stdin);#endif // debug while(~scanf("%d", &n)) { M(sum, 0); // build(); int s = 0, mn; for(int i = 1; i <= n; i++){scanf("%d", &a[i]);a[i]++;s += query(a[i] + 1, n, 1, 1, n);update(a[i], 1, 1, n);}mn = s;for(int i = 1; i < n; i++){mn -= a[i] - 1 + a[i] - n;s = min(s, mn);}printf("%d\n", s); } return 0;}
1 0
- hdu 1394 线段树求逆序对
- hdu 1394 Minimum Inversion Number(线段树求逆序对)
- HDU 1394 Minimum Inversion Number (线段树 求逆序对)
- hdu 1394(线段树求逆序数)
- hdu 1394 线段树 求逆序数
- hdu 1394 线段树求逆序数
- HDU 1394 线段树 求逆序对数
- hdu 1394 线段树求逆序数
- HDU 1394 线段树求逆序数
- HDU 1394 线段树求逆序数
- [hdu]1394 Minimum Inversion Number -- 暴力求逆序、树状数组求逆序、线段树求逆序、归并排序求逆序
- HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)
- HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)
- HDU 1394 Minimum Inversion Number(线段树求逆序对数目)
- 线段树系列-hdu-1394-Minimum Inversion Number-单点修改区间求和(求逆序对)
- hdu-1394Minimum Inversion Number(暴力解法或者线段树 求最少逆序对)
- hdu 1394 Minimum Inversion Number -求逆序对的个数- 线段树单节点更新
- HDU 1394 Minimum Inversion Number(求逆序对+线段树||归并排序)
- sdcc 51 迁移记录
- mosquitto源码分析(一)
- To Do
- iOS:ssh手机后,命令行的方式将手机中的文件拷贝到电脑上
- LeetCode---5. Longest Palindromic Substring(最长回文子串)
- hdu 1394 线段树求逆序对
- BZOJ 1925 [Sdoi2010]地精部落
- mosquitto源码分析(二)
- C++ 对象的内存布局(上)
- xTrans: 可能是比较快的手机、PC在线文字传输
- C++ 对象的内存布局(下)
- mosquitto源码分析(三)
- <c:forEach varStatus="status">中 varStatus的属性简介
- 数据结构(二)--------队列