- 博客(9)
- 收藏
- 关注
原创 排序谓词小测试
#include #include #include using namespace std;struct cmp{ int (*fun)(int x); cmp(int (*fun)(int x)): fun(fun) {} bool operator ()(int u, int v) { return fun(u) < fun(v); }
2009-10-09 12:59:00 430
原创 Windows下内存映射
我想用内存映射和直接读取文件分别实现MD5算法。众所周知,该算法是线性复杂度,文件的读取可能成为效率的瓶颈。以前曾写过CRT版本的,效率比我在windows下使用的WinMD5略低。 内存映射读取MapViewOfFile第一步先打开文件,推荐使用CreateFile而不是OpenFile。msdn上OpenFile可以查到:Note Only use this func
2009-07-04 15:05:00 1222
原创 Aho-Corasick automation
多串匹配,类似于KMP,可以看成是KMP的推广。首先建立所有匹配串的trie,然后对该trie建立fail指针。匹配文本时,只要让文本在改自动机上跑一遍就可以得到所有匹配成功的位置。具体实现可以用指针,也可以用数组,但是数组要求的空间很大。#include #include #include #include using namespace std;cons
2009-06-30 17:29:00 1420
原创 C语言递归访问文件
我需要生产一个文件夹下所有文件的index。所以网上查了相关代码,自己修改了一下#include #include using namespace std;const size_t PATH = 1024;void visit(LPCTSTR lpszPath, size_t dep){ TCHAR szFind[PATH]; lstrcpy(szFind,
2009-06-23 20:45:00 470
原创 任意阶幻方的构造
#include using namespace std;const int N = 1000;int a[N][N];void build(int a[N][N], int n) // No solution when n = 2{ int i, j, k, nn = n * n, m = n / 2, mm = m * m; for (i = 0; i <
2009-06-20 22:45:00 627
原创 位运算总结
1. 加1从最低位开始置0,直到碰到第一个0,置1 2. 减1从最低位开始置1,直到碰到第一个1,置0 3. 求负注意unsigned int之间运算的结果仍然是unsigned,如果结果溢出,将会加上或者减去MAX + 1多次来回到这个范围,MAX是最大的无符号整数-x 等价于 (~x) + 1 4. 常用的一些(1) x中含1的最低位清0x &
2009-06-19 09:38:00 617
原创 Cayley-Menger行列式(Heron公式的推广)
我们初中学过 Heron 公式: /Delta^2=s(s-a)(s-b)(s-c).其中 s=(a+b+c)/2.告诉你一个n-simplex的顶点坐标,计算n维体积是简单的,直接用行列式就可以了。有时候只知道这个simplex的各个边长,我们有 Cayley-Menger 行列式: V^2 = (-1)^(n+1)/2^n/(n!)^2 det(B).其中B_ij =
2009-06-18 09:03:00 2510
原创 N 皇后问题
求N皇后有多少种摆放方案,记录列和2条对角线的forbidden的信息。对于N比较小的时候可以利用位运算加速。只要找一组解的话,有直接构造方法。#include using namespace std;int all, ans;void run(int row, int ld, int rd){ if (row == all) { ans++; re
2009-06-17 23:06:00 582
原创 大整数FFT乘法
#include #include #include #include using namespace std;const double PI = acos(-1.0);typedef complex cp;typedef long long int64;const int N = 1 << 16;int64 a[N], b[N], c[N << 1];
2009-06-08 11:42:00 2562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人