随笔分类 -  ACM模板

数位DP专题
摘要:这周开始刷数位DP,在网上找到一份神级数位DP模板,做起题目来爽歪歪。http://www.cnblogs.com/jffifa/archive/2012/08/17/2644847.html1 int dfs(int i, int s, bool e) {2 if (i==-1) retu... 阅读全文

posted @ 2014-08-04 22:55 仗剑奔走天涯 阅读(381) 评论(0) 推荐(0)

高斯消元模板
摘要:typedef int Matrix[maxn][maxn];int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int lcm(int a,int b){ return a/gcd(a,b)*b;}int gauss(Matrix A,int n,int m){ int row,col; for(row=0,col=0; ro... 阅读全文

posted @ 2014-03-25 21:13 仗剑奔走天涯 阅读(167) 评论(0) 推荐(0)

BZOJ1901 - Dynamic Rankings(树状数组套主席树)
摘要:题目大意给定一个有N个数字的序列,然后又m个指令,指令种类只有两种,形式如下:Q l r k 要求你查询区间[l,r]第k小的数是哪个C i t 要求你把第i个数修改为t题解动态的区间第k小,如果还是按照静态的主席树做的话,每次修改需要对n个线段树进行修改,这样显然会TLE,所以我们需要用树状数组,这样每次只需要对logn颗线段树修改即可,修改的时间复杂度为logn^2,询问的时间复杂度为logn^2,空间复杂度为nlogn^2还有一种空间复杂度为nlogn+mlogn^2的方法,就是先建立n颗静态的主席树,空间复杂度为nlogn,然后再更新的时候用树状数组套线段树,这样空间复杂度为mlogn 阅读全文

posted @ 2013-10-02 16:45 仗剑奔走天涯 阅读(331) 评论(0) 推荐(0)

POJ2104&&HDU2665(静态区间第K小)
摘要:题目大意 给定一个有N个数字的序列,然后又m个查询,形式如下: l r k 要求你返回区间[l,r]第k小的数是哪个 题解 终于弄懂主席树是个啥东西了,O(∩_∩)O~~,这题正是主席树的裸题,主席树具体是啥东西,可以去看CLJ的论文~~~~ 代码是学习haha593572013大神的~~~ 代码: #include #include #include #include using namespa... 阅读全文

posted @ 2013-10-01 14:10 仗剑奔走天涯 阅读(241) 评论(0) 推荐(0)

AC自动机模板
摘要:struct AhoCorasickAutomata { int ch[maxnode][sigma_size],last[maxnode]; int fail[maxnode],val[maxnode]; int sz; void init() { memset(ch[0],0,sizeof(ch[0])); sz=1; } int idx(char c){return c-'a';} void insert(char *s,int v) { int u=0,n=strlen(s); ... 阅读全文

posted @ 2013-09-23 19:47 仗剑奔走天涯 阅读(209) 评论(0) 推荐(0)

Trie树模板~~~
摘要:const int maxnode = 4000 * 100 + 10;const int sigma_size = 26;// 字母表为全体小写字母的Triestruct Trie { int ch[maxnode][sigma_size]; int val[maxnode]; int sz; // 结点总数 void clear() { sz = 1; memset(ch[0], 0, sizeof(ch[0])); } // 初始时只有一个根结点 int idx(char c) { return c - 'a'; } // 字符c的编号 // 插入字符串s,附加信息为v。 阅读全文

posted @ 2013-09-12 14:03 仗剑奔走天涯 阅读(193) 评论(0) 推荐(0)

RMQ总结
摘要:以下摘自刘汝佳大神的《训练指南》。范围最小值问题(Range Minimum/Maximum Query,RMQ)。给出一个n个元素的数组A1,A2……An,设计一个数据结构,支持查询操作Query(L,R):计算min{A(L),A(L+1),……,A(R)} Sparse-Table算法能够很好的解决这个问题,它的预处理时间是O(nlogn),但是查询只需要O(1),而且常数很小。最重要的... 阅读全文

posted @ 2013-05-05 16:36 仗剑奔走天涯 阅读(290) 评论(0) 推荐(0)

树状数组总结
摘要:最近做了近20道树状数组题目,发现有点痴迷于它了,这个数据结构真是太优美了,小巧又强悍,编程复杂度极其低,大爱呀!先丢上模板lowbit操作:int lowbit(int x){ return x&-x;}add操作:void add(int x,int d){ while(x0) { ret+=c[x]; x-=lowbit(x); } return ret;}运用树状数组我们可以解决一下几类问题:一、单点修改,区间查询这是树状数组最基本的操作一维:POJ3928 - Ping pongPOJ - Ultra-QuickSort(求逆... 阅读全文

posted @ 2013-05-02 18:23 仗剑奔走天涯 阅读(511) 评论(0) 推荐(0)

导航