分治
wang_hoho
这个作者很懒,什么都没留下…
展开
-
求逆序对数(冒泡排序交换次数)
求 a1,a2,..,an 的逆序对数一、直接求直接两个for循环跑 时间复杂度 O(n^2) for(int i=1;i<=n;i++){ for(int j=1;j<i;j++){ if(a[i]>a[j]) cnt++; }}二、树状数组(或线段树)求建一个树状数组或线段树,存每个数出现的个数,每次询问后加入,数比较大的情况下要离散化。对...原创 2018-02-10 16:33:40 · 2155 阅读 · 1 评论 -
循环赛日程表问题
可以使用分治法来完成,数据小的话,直接暴力三个for循环也是可以的#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>using namespace std;const int N = 1e4 + 10;int a[N][N],m;void s...原创 2018-02-10 17:05:04 · 209 阅读 · 0 评论 -
HDU - 6318 - Swaps and Inversions(逆序对数)
HDU - 6318 - Swaps and Inversions题意:可以花费 x 或 y 交换相邻的两个元素求将数列中所有的逆序对消除需要的最少花费 选xy中小的作为花费,消除所有的逆序对就是将序列排序,需要的交换次数就是逆序对数最后答案就是 逆序对数 * min (x, y) 可以用树状数组+离散化 或 归并排序来求出逆序对数(因为数的范围较大,所以在树状数组...原创 2018-07-26 20:48:08 · 189 阅读 · 0 评论