题目如下:一个全是32位整数的大数组,除了其中一个数字出现2次外,其余的数字都出现了3次。如何找出那个只出现了两次的数字? 1 int singleNumber3(int a[], int length){ 2 int ones = 0; 3 int twos = 0; 4 ...
分类:
其他好文 时间:
2015-08-26 17:09:14
阅读次数:
118
设置c++程序的堆栈空间解决栈溢出问题 程序的静态数据量大的时候,有时候会出现栈溢出问题,往往是程序还没运行算法呢,就down掉了,比如你在创建包含大数组的类(或数据)的时候,栈就溢出了。这是由于系统分配给程序的栈空间太小。 一种方法,就是不要静态分配,用new动态创建,是从堆中分配的,堆的空间足够...
分类:
编程语言 时间:
2015-08-08 11:54:56
阅读次数:
196
在C#里,有时候我需要能够申请一个很大的数组、使用之、然后立即释放其占用的内存。 由于在C#里提供的int[] array = new int[1000000];这样的数组,其内存释放很难由程序员完全控制,在申请一个大数组后,程序可能会变得很慢。 所有我设计了这样一个非托管的数组类型: 无unsa...
分类:
编程语言 时间:
2015-07-25 16:27:23
阅读次数:
364
void init(){ int i; fac[0] =1; for(i =1; i >=1; } return ans;}llg C(llg n, llg m){ if(m > n) return0; return fac[n]*pow(fac[m]...
分类:
编程语言 时间:
2015-07-23 17:05:46
阅读次数:
93
一个全是数字的大数组,除了其中一个数字出现2次外,其余的数字都出现了3次。如何找出那个只出现了两次的数字?其中ones记录了所有出现了模3余1次的bit,twos记录的是余2的。not_threes是当一个bit出现第3次的时候,把它清掉。public class Test3in2 { /**...
分类:
其他好文 时间:
2015-07-02 17:16:33
阅读次数:
104
题解:
首先我们把所有元素排一下序,然后枚举最小值,那么最大值是非严格单调上升的,就是一个珠子换成其后第一个的同颜色珠子时,将更新一下最大值,而最小珠子则刚好是其后第一个(反之则有空下来的永远用不上的珠子,不合逻辑。。2333)
结束。
代码:
狂野的long long 和开大数组啊……
#include
#include
#include
#include
#define...
分类:
其他好文 时间:
2015-06-05 15:53:28
阅读次数:
112
题意:求式子(1^K + 2^K + 3^K + … + N^K) % 2^32,给出N和K,1<=n <=10^15, 1 <= k <= 50。
题解:可以看到N很大,数组肯定开不下,只能从K入手,让f(x + 1) = f(x) + (x + 1) ^k,x从1开始到n-1,然后看到(x + 1)^k是一个二项展开式,针对这个展开式构造一个包含C(n, m)的矩阵。
结果是两个矩阵相乘n-...
分类:
其他好文 时间:
2015-06-03 10:00:57
阅读次数:
130
1、合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素;
合并排序一般的思路都是创建一个更大数组C,刚好容纳两个数组的元素,先是一个while循环比较,将其中一个数组A比较完成,将另一个数组B中所有的小于前一个数组A的数及A中所有的数按顺序存入C中,再将A中剩下的数存入C中,但这里是已经有一个数组能存下两个数组的全部元素,就不用在创建数组了,但只能从后往前面存,从...
分类:
编程语言 时间:
2015-05-26 21:30:46
阅读次数:
170
10^9的大数组显然开不了。所以也算比较裸的离散化了。。。令pos[i].pp[j]表示从左到右第j个高度为i的树的位置 (pp是个vector,范围0..now-1) pos[i].num表示有几个高度为i的树 pos[i].now表示当前kill到第几个了(从0开始计数)离散化模板get: 1....
分类:
其他好文 时间:
2015-05-25 21:49:41
阅读次数:
125
有个猜用户喜欢的功能,用户可以通过点击换一组,来刷新推荐的内容。 先通过数据库查询,得到前1000条数据,然后随机去除4条。 程序写完之后,发现运行的很慢,每次刷新,都要等很久才出来。 代码如下: $arr?=...
分类:
编程语言 时间:
2015-05-12 21:13:03
阅读次数:
154