
算法
文章平均质量分 69
userluoxuan
这个作者很懒,什么都没留下…
展开
-
高精度计算
前几日看了刘汝佳写的原创 2014-07-08 21:10:14 · 790 阅读 · 0 评论 -
字典树模板
定义一颗字典树:struct Trie{ int n; // n可以存储相关有用信息,视情况而定 Trie *next[maxn]; //maxn视字典树中有多少种元素而定}定义字典树的根并初始化:Trie *root;void init(){ root = (Trie *)malloc(sizeof(Trie)); root ->原创 2014-08-08 15:42:15 · 785 阅读 · 0 评论 -
中国剩余定理模板(互质版和非互质版)
互质版:#include #include #include using namespace std; typedef __int64 int64; int64 a[15],b[15]; int64 Extend_Euclid(int64 a, int64 b, int64&x, int64& y) { if(b==0) {转载 2014-08-08 20:29:18 · 923 阅读 · 0 评论 -
树状数组
http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=binaryIndexedTrees#prob树状数组中用的d【】,每个点都有一定的管辖范围;如d[1]=a[1];d[2]=a[1]+a[2];d[3]=a[3];d[4]=a[1]+a[2]+a[3]+a[4];等等;这样转载 2014-07-28 16:44:29 · 457 阅读 · 0 评论 -
Floyd算法模板
Floyd可以求出任意两点间的最短距离,代码也相对简单,对于稀疏图来说效率也还是不错的,但由于三个for循环导致时间复杂度较高,不适合稠密图。Floyd算法模板(精简版):void Floyd(){ int dist[maxn][maxn]; // dist存储i到j的最短距离 for(int k = 1; k <= n; k++) for(int原创 2014-07-27 12:28:57 · 1197 阅读 · 0 评论 -
Dijkstra + heap
用优先队列实现模板:struct node{ int pos, dist; friend bool operator < (node a, node b) { return a.dist > b.dist; }};int Dijkstra(int n,int start,int end){ bool visited[maxn]原创 2014-07-27 16:17:28 · 690 阅读 · 0 评论 -
动态规划:0-1背包问题(一)
作为一个初学者,第一次接受动态规划,原创 2014-07-06 23:56:17 · 580 阅读 · 0 评论 -
朴素Dijkstra算法模板
朴素Dijkstra不需要用到堆,每次找最小值都得遍历一遍,时间复杂度较高。点是从编号0到编号n-1的n个点。以下是模板:int Dijkstra(int a,int b) //a是起点,b是终点{ bool visited[maxn]; // 记录访问点 int pos = a, min, dist[maxn]; // pos是个标记点,标记每次最小边对应的原创 2014-07-27 01:04:52 · 1784 阅读 · 1 评论 -
动态规划:0-1背包问题(二)
前一章讲到了用二维数组解题,今天加深一个原创 2014-07-08 11:31:14 · 577 阅读 · 0 评论 -
线段树模板
单点更新,区间求和:转载 2014-08-14 20:21:06 · 546 阅读 · 0 评论