求逆序对问题与解决方案原理
在一个数列中,如果规定从小到大为正序,那么如果排在后面的某个元素比前面的某一个元素小,那么就称这两个数构成一个逆序对,例如,数列5,4,3,2,1中,任一个数都与它前面的数构成逆序对,这个序列中一共就有1+2+3+4=10个逆序对,数列23541中有5个逆序对,那么任给定一个数列,如何知道有多少个逆序对呢?简单的方法是将每个元素与它后面的元素比较,然后就可以累加出总的...
分类:
其他好文 时间:
2015-05-22 09:52:32
阅读次数:
221
最近实现一个算法要用到求逆等矩阵运算,在网上搜到一个别人写的矩阵类,试了一下效果不错,贴在这里,做个保存。matrix.h文件: 1 #ifndef __MATRIX_H__ 2 #define __MATRIX_H__ 3 4 #pragma once 5 6 #include ...
分类:
编程语言 时间:
2015-05-21 22:22:59
阅读次数:
205
题目链接 Solution 比较明显的树形DP模型。 首先可以先用一次DFS求出以1为根时,sum[i](以i为子树的根时,满足要求的子树的个数)。 考虑将根从i变换到它的儿子j时,sum[i]产生的变化. 在变化前sum[i]不为0时,可以用求逆元的方法求出新的sum[i]. ...
分类:
其他好文 时间:
2015-05-19 22:08:19
阅读次数:
106
作者:i_dovelemon
来源:CSDN
日期:2015/5/18
主题:仿射变换,正交矩阵,求逆,矩阵乘法引言好久没有写博客了,这段时间一直忙着,今天抽空写下实习的时候遇到的问题,同时继续更新自己的博客。
今天想要说的是自己一直以来对3D变换的一些疑惑之处。主要体现在什么是仿射变换?什么是正交矩阵?如何快速的求出正交矩阵的逆矩阵?以及进行矩阵乘法的顺序问题。齐次坐标我们都知道,在3D图...
分类:
编程语言 时间:
2015-05-18 23:02:17
阅读次数:
258
题目传送门1 /*2 求逆序数的四种方法3 */ 1 /* 2 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]....t[N] 3 它的逆序列个数是N个,如果把t[1]放到t[N]后面,逆序列个...
分类:
其他好文 时间:
2015-05-10 17:14:39
阅读次数:
133
//(a/b)%c ==> a%c = (b*k) %c;
// k = (a*(b_1))%c ,b_1为b的逆元
#include
#include
#include
using namespace std ;
const int mod = 9973 ;
typedef __int64 ll;
int exgcd(int a ,int b , ll &x ,ll &y)
{...
分类:
其他好文 时间:
2015-05-09 16:39:10
阅读次数:
138
cdq分治的思想非常简单, 就是每次分别递归处理在左半边区间内和右半边区间内答案的贡献, 然后像归并排序一样把左半边和有半边合起来, 顺带统计一下左半边区间中的修改对右半边区间中的询问做出的贡献。 归并排序求逆序对就是cdq分治最简单的应用了。容易分析得出应用到cdq分治时需要满足这些条件:每个修改...
分类:
其他好文 时间:
2015-05-07 22:00:03
阅读次数:
113
题意:问给一堆数排序要交换多少次……这个排序方法读题的时候没看出来是什么……后来百度了一下说是冒泡,也就是说这是一个求逆序数的题。解法:求逆序数有三种方法,线段树,树状数组,归并排序。以上三种方法是按我做的顺序排的,实际最优的是归并和树状数组,线段树有常数。线段树:首先要离散化处理,离散化的方法是给...
分类:
其他好文 时间:
2015-05-05 18:50:05
阅读次数:
125
1.归并排序#include using namespace std;const int maxn = 1000;int a[maxn],b[maxn];int ans;void merge_sort(int x,int y){ if(y-x>1) { int m = x+...
分类:
其他好文 时间:
2015-05-02 01:04:09
阅读次数:
122
一开始只会用归并排序算,但不知怎么的蜜汁WA,所以还是学习一下树状数组的方法。。。树状数组的方法看起来比归并排序简单很多。
分类:
编程语言 时间:
2015-05-01 21:14:33
阅读次数:
146