前面我们谈到了,可用通过异或运算交换两个数,而不需要任何的中间变量。 如下面:void exchange(int&a,int&b){a ^=b;b ^=a;a ^=b;}然而,这里面却存在着一个非常隐蔽的陷阱。通常我们在对数组进行操作的时候,会交换数组中的两个元素,如exchang(&a[i], &...
分类:
其他好文 时间:
2014-10-26 21:13:00
阅读次数:
179
题目大意:给定一个序列,m次交换两个数,求初始逆序对数及每次交换后的逆序对数
首先离散化,分块,对于每块建立一个树状数组,保存这个块中的所有元素
然后对于每个询问(x,y) (x
a[i]
a[i]>a[x] ++ans
a[i]
a[i]>a[y] --ans
然后对于块中的树状数组处理,块外的暴力
注意此题元素有重复 亲测可信
RANK5吓尿0.0 为何块套树要比树套树还快…...
分类:
编程语言 时间:
2014-10-22 14:42:48
阅读次数:
286
#include
#include
#include
using namespace std;
/*
* 交换两个数
*/
void exchange(unsigned int *p,unsigned int *q)
{
unsigned int temp;
temp=*p;
*p=*q;
*q=temp;
}
/*
* 快速排序
*
*/
unsigned i...
分类:
编程语言 时间:
2014-10-15 18:01:26
阅读次数:
203
int x=1;int y=3;x=x+y;y=x-y;x=x-y;如果int x=1000000;int y=3000000;x=x^y;y=x^y;x=x^y;一个数据异或两次得到数据本身例如5^10^10的值还是5.这个技术还可以用在加密解密里面。
分类:
其他好文 时间:
2014-09-29 00:07:06
阅读次数:
191
#include using namespace std;int main () { int a = 3; int b = 5; cout<<"a="<<a<<",b="<<b<<endl; a = a+b; ///a=7 b = a-b; ///b=3; ...
分类:
其他好文 时间:
2014-09-16 18:45:40
阅读次数:
197
1119: [POI2009]SLOTime Limit:30 SecMemory Limit:162 MBSubmit:379Solved:181[Submit][Status]Description对于一个1-N的排列(ai),每次你可以交换两个数ax与ay(xy),代价为W(ax)+W(ay)...
分类:
其他好文 时间:
2014-09-08 10:42:56
阅读次数:
278
1、定义结构体的这种写法会导致调试时不能监视结构体成员变量 typedef struct listnode { int data; struct listnode *next; }listnode; 两个listnode相同导致上述问题。 2、交换两个数的问题 用位运算和无中间值得方法,若交换的两个...
分类:
其他好文 时间:
2014-09-05 17:48:41
阅读次数:
202
1.基本冒泡排序假设有n个数据需要由小到大排序,从最后一个数开始,进行相邻数的两两比较,若上面的数比下面的数大,则交换两个数的位置,则第一趟两两比较过后,n个数中最小的数到达最上面。重新从最后一个数开始,进行相邻数的两两比较,第二趟比较过后,次小的数也到了它应该到的最终位置。一趟比较确定一个位置上的...
分类:
其他好文 时间:
2014-09-01 19:27:43
阅读次数:
211
1.基本冒泡排序假设有n个数据需要由小到大排序,从最后一个数开始,进行相邻数的两两比较,若上面的数比下面的数大,则交换两个数的位置,则第一趟两两比较过后,n个数中最小的数到达最上面。重新从最后一个数开始,进行相邻数的两两比较,第二趟比较过后,次小的数也到了它应该到的最终位置。一趟比较确定一个位置上的...
分类:
其他好文 时间:
2014-09-01 19:16:03
阅读次数:
176
最近有些懒,好久没写代码了,现在写个快排练练手吧。public class QucikSort { //此处交换两个数 public static void swap(int a[],int low,int high) { int temp=a[low]; a[low]=a[high]; a[...
分类:
其他好文 时间:
2014-08-24 20:52:32
阅读次数:
179