
算法讨论
NotFound1
这个作者很懒,什么都没留下…
展开
-
|题目分类|BZOJ、Poj、Hdu题目分类
BZOJ:[数论]BZOJ 1477:裸的扩展欧几里得算法 [线段树]BZOJ 1593:经典线段树模型 [2-SAT]BZOJ 1823:2-SAT经典模型 [平衡树]BZOJ 2028:求大于x的最小值,set可以过 [树形DP]BZOJ 2060:经典树形DP模型 [2-SAT]BZOJ 2199:2-SAT经典模型 [树形DP, 缩点]BZOJ 2427:缩点后跑树上背包 [平原创 2017-02-07 15:27:58 · 2622 阅读 · 0 评论 -
|算法讨论|差分约束 学习笔记
题目 [差分约束]BZOJ 2330:用最短路算法求最长路求差分约束 [差分约束]poj 1201:用最短路算法求最长路求差分约束模板及讲解差分约束就是给出一些形如x−y≥cx-y \ge c的约束,问你是否有解,或求最大、最小解。该问题可以转化为图上最短路问题。1、求最大差 建立形如 A−B<=CA-B<=C 的不等式,在原图中添加边 B−>AB->A 边权为 CC 对建好的图跑最短路,如原创 2017-02-11 16:20:29 · 594 阅读 · 0 评论 -
|算法讨论|二分查找 学习笔记
以下程序对比了lower_bound和自写函数的比较,基本上能够保证正确#include<cstdio>#include<cstring>#include<algorithm>#include<ctime>using namespace std;#define ms(i,j) memset(i,j,sizeof i);const int MAXN = 1000;int n = 20;原创 2017-03-24 19:39:17 · 393 阅读 · 0 评论 -
|算法讨论|2-SAT 学习笔记
题目 [2-SAT]BZOJ 1823:2-SAT经典模型 [2-SAT]BZOJ 2199:2-SAT经典模型 [2-SAT, 二分]poj 2723:二分后建2-SAT图判断可行性模板及讲解2-SAT模板题:BZOJ 2199[Usaco2011 Jan]奶牛议会#include<cstdio> #include<algorithm> #include<cstring>原创 2017-02-04 23:22:46 · 469 阅读 · 0 评论 -
|算法讨论|贪心算法 学习笔记
题目模板及讲解选择不相交区间int end = -1, cnt = 0;//end 是上一选择区间的结束点,cnt为选择的区间个数 sort(A,A+n);//按照b排序 for(int i=0;i<n;i++)//循环每个区间 { if(end < A[i].a) //如果区间不相交原创 2017-03-11 17:05:47 · 355 阅读 · 0 评论 -
|算法讨论|Hash表 学习笔记
题目模板及讲解哈希表的基本操作 程序实现输入n,m,分别表示有n个数要插入,有m个询问 每个询问包含一个整数,如果在Hash表里,就输出”True.”,否则输出”False.” #include<cstdio> #include<algorithm> #include<cstring> #define ms(i,j) memset(i,j, sizeof i); using n原创 2017-03-11 17:01:21 · 324 阅读 · 0 评论 -
|算法讨论|Trie树 学习笔记
题目模板及讲解输入两个整数m,n(m,n<=10),分别代表字典里有m个字符串和有n个查询 接下来m行输入m行字符串,每个字符串长度不超过255,且均为小写字母 接下来n行输入n行询问,如果询问的字符串在字典里,输出1,否则输出0输入样例6 4appleappappdlbyubyuyewappewbyyyappdl输出样例1101#include<cstdio> #原创 2017-03-11 16:58:38 · 305 阅读 · 0 评论 -
|算法讨论|强连通分量Tarjan 学习笔记
题目 [树形DP, 缩点]BZOJ 2427:缩点后跑树上背包模板及讲解参考资料:https://www.byvoid.com/blog/scc-tarjan/#include<cstdio> #include<cstring> #include<algorithm> #include<stack> #include<vector> #include<cma原创 2017-03-11 16:56:38 · 433 阅读 · 0 评论 -
|算法讨论|树状数组 学习笔记
题目 [树状数组]BZOJ 1452:开多个树状数组解决问题 [树状数组, 并查集]BZOJ 3211:并查集辅助树状数组求值模板及讲解知识点: 1. 点修改,求x~y区间值 2. 区间修改,求某一点值 3. 二维树状数组 4. 离散化求逆序对1 点修改,求x~y区间值#include<cstdio> #include<algorithm> #include<cs原创 2017-03-11 16:41:15 · 375 阅读 · 0 评论 -
|算法讨论|单调队列 学习笔记
题目 [单调队列]Luogu1886 滑动窗口:单调队列模板题模板及讲解原创 2017-03-11 16:32:19 · 398 阅读 · 0 评论 -
|算法讨论|并查集 学习笔记
题目 [树状数组, 并查集]BZOJ 3211:并查集辅助树状数组求值 [左偏树, 并查集]Hdu 1512: 左偏树模板题模板及讲解参考资料:http://www.tuicool.com/articles/UjqUziE知识点: 1. 拆点 2. 带权 3. 辅助数组1 拆点 题目:http://blog.youkuaiyun.com/darost/article/details/53013154原创 2017-03-11 16:51:12 · 516 阅读 · 0 评论 -
|算法讨论|无向图割点和桥 学习笔记
模板及讲解void tarjan(int u, int fa){ 初始化low, dn为时间戳; 循环u的每一个邻接点v { v没访问过 { u的孩子数+1; 继续向下dfs; 用low[v]更新low[u]; 如果v没有反向边连回u的祖先原创 2017-05-14 16:45:06 · 522 阅读 · 0 评论 -
基础程序模板
#include<cstdio>#include<cstring>#include<algorithm>#define long long#define double db#define ms(i,j) memset(i,j)#define FOR(j,k) for (int i=j;i<=k;i++)#define REP(j,k) for (int i=k;i>=j;i--)#d原创 2017-03-25 16:10:09 · 356 阅读 · 0 评论 -
|算法讨论|RMQ 学习笔记
模板及讲解 运用st表实现区间询问区间最大/最小,初始化时间复杂度O(nlogn)O(nlogn), 查询O(1)O(1) 模板题:poj 3264#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define ms(i, j) memset(i, j, sizeof i)using namespac原创 2017-06-11 10:36:04 · 342 阅读 · 0 评论 -
|算法讨论|线段树2 学习笔记
题目 [线段树]BZOJ 1012:裸线段树单点修改+区间求最大值 [线段树]BZOJ 1593:线段树合并模型 [线段树]poj 2528:线段树离散+区间染色模型 [线段树]Hdu 1542:线段树离散化+扫描线求面积并模型 [线段树]Hdu 1828:线段树扫描线求周长并模型模板及讲解知识点: 1、单点修改 2、区间修改 3、离散化 4、扫描线求周长并 5、扫描线求面积并原创 2017-03-11 16:26:48 · 446 阅读 · 0 评论 -
|算法讨论|后缀数组 学习笔记
模板及讲解 解决字符串的有力工具。 直接上代码,注释讲解(此题为uoj #35)#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#define ms(i, j) memset(i, j, sizeof i)#define FN2 "uoj35" using namespace std;const原创 2017-05-25 21:15:17 · 335 阅读 · 0 评论 -
|算法讨论|KMP 学习笔记
题目 [KMP]poj 2406:kmp求最短循环节(周期) [KMP]poj 3461:KMP模板题 [KMP]Hdu 2087:kmp模板题模板及讲解输入两个字符串s1和s2,输出s2在s1中出现的位置(位置从0开始) inputabcdefghidefdddeeeffdefeddefoutput3920实质上是MP算法#include<cstdio> #include<a原创 2017-02-06 13:51:35 · 987 阅读 · 0 评论 -
|算法讨论|最短路 学习笔记
题目模板及讲解知识点: 1、 求两点最短距离 2、求次短路 3、求最小环1 求两点最短距离//堆优化dijkstra #include<cstdio> #include<algorithm> #include<cstring> #include<queue> #define ms(i,j) memset(i,j, sizeof i); using namespace原创 2017-03-11 16:54:03 · 378 阅读 · 0 评论 -
|算法讨论|树链剖分 学习笔记
模板及讲解 树链剖分解决树上的修改问题。 将树剖成一条条链,再用线段树、树状数组等维护#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#define fo(i, j, k) for (i=(j);i<=(k);i++)#define fd(i, k, j) for (i=(k);i>=(j);i--原创 2017-05-15 21:03:55 · 383 阅读 · 0 评论 -
OI中的常用数据生成
一、随机生成一个小于等于nn的数int RAND(int n) { srand((int)time(0)); return rand()%n+1;}二、随机生成排列int t[MAXN];int mp(int n) { int i; srand((int)time(0)); fo (i, 1, n) t[i] = i; random_shuff原创 2017-05-19 17:55:59 · 1148 阅读 · 0 评论 -
|算法讨论|LCA 学习笔记
题目 [LCA]Hdu 2586:LCA模板题模板及讲解/* Hdu 2586 LCA*/#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;#define ms(i,j) memset(i, j, sizeof i);const int M原创 2017-05-04 19:33:25 · 432 阅读 · 0 评论 -
|算法讨论|数论数学 学习笔记
题目 [数论]BZOJ 1477:裸的扩展欧几里得算法 [数论]poj 1006:裸的中国剩余定理模板及讲解欧几里得算法求gcd(a, b),即a和b的最大公倍数 欧几里得算法: gcd(a,b)=gcd(b,a%b)gcd(a, b) = gcd(b, a \% b)int gcd(int a, int b){ if (b==0) return a; gcd(b, a%b原创 2017-02-01 12:11:35 · 607 阅读 · 0 评论 -
|算法讨论|平衡树 学习笔记
题目 [平衡树]BZOJ 2028:求大于x的最小值,set可以过 [平衡树]BZOJ 3224:Treap、Splay实现名次树模板及讲解平衡树:Treap,Splay,SetTreap,Splay实现名次树:BZOJ 3224 普通平衡树#include<cstdio> #include<algorithm> #include<cstring> #include<v原创 2017-02-04 13:01:21 · 334 阅读 · 0 评论 -
|算法讨论|拓扑排序 学习笔记
题目 [拓扑排序]Hdu 1285:裸的拓扑排序模板及讲解hdu1285#include<cstdio> #include<algorithm> #include<cstring> #include<vector> #define ms(i,j) memset(i,j, sizeof i); using namespace std; const int M原创 2017-02-04 17:08:09 · 492 阅读 · 0 评论 -
|算法讨论|AC自动机 学习笔记
题目 [AC自动机]Hdu 2222:裸的AC自动机模板及讲解在学习AC自动机之前需要熟练掌握WA自动机、RE自动机与TLE自动机//伪代码(仅主题部分)procedure find(char *s)begin //枚举匹配文本的每个字符 for i = 1 -> strlen(s) do j <- ch[j][c] //其中c是s[i]-'a'原创 2017-02-07 09:59:49 · 513 阅读 · 0 评论 -
|题目分类|动态规划
动态规划前i个物品所用重量为j的最优值1. 数字三角形http://blog.youkuaiyun.com/darost/article/details/520849422. 机器分配http://blog.youkuaiyun.com/darost/article/details/520915973. 乘积最大(NOIP2000) http://blog.csdn.ne原创 2016-12-03 20:00:32 · 426 阅读 · 0 评论 -
|算法讨论|状压DP/位运算 学习笔记
题目 [状压DP]poj 3311:经典TSP问题模板及讲解状态压缩动态规划就是用于某种时候DP的状态难以表示时,使用二进制进行存储状态的一种动态规划。通常会用位运算进行操作: 位运算: 1、对xx取反:~x 2、x+1(x为偶数)x+1(x为偶数):x|1 3、2x2^x:1<<x 4、2−x2^{-x}:1>>x 5、x的对应值x的对应值(例如00对11,22对33,88对99):原创 2017-02-12 16:27:20 · 1469 阅读 · 0 评论 -
|算法讨论|可并堆 学习笔记
题目 Hdu 1512:左偏树模板题模板及讲解 左偏树:2005黄源河集训队论文原创 2017-03-04 23:07:21 · 325 阅读 · 0 评论 -
|算法讨论|线段树1(大白书版本) 学习笔记
常用方法:1、点修改,区间查询2、区间增加,区间查询3、区间修改,区间查询4、混合多种修改,区间查询1、点修改,区间查询input:10 65 4 8 9 7 2 4 1 5 71 1 100 8 61 1 101 2 50 4 -81 1 5//n m//n个数,表示线段树节点的初始值//m行,每行一个指令//0 p v,修改p节点为v/原创 2017-01-22 15:27:09 · 508 阅读 · 0 评论 -
各种错误及技巧合集
1、判断有向图有无(负)环时要每个点遍历,因为会有数据起点与环不连通2、写SPFA不要忘了visit数组的改写3、判断有向图负环用DFS的SPFA,求最短路用BFS的SPFA4、使用G[i][j]时要判断连通5、并查集只能求无向图的强连通分量,有向图要用Tarjan6、树状数组不要出现0下标7、树状数组add是+,sub是-原创 2016-08-20 11:44:53 · 658 阅读 · 0 评论 -
|算法讨论|贪心算法 学习笔记
选择不相交区间int end = -1, cnt = 0;//end 是上一选择区间的结束点,cnt为选择的区间个数 sort(A,A+n);//按照b排序 for(int i=0;i<n;i++)//循环每个区间 { if(end < A[i].a) //如果区间不相交 {原创 2016-11-27 10:56:10 · 415 阅读 · 0 评论 -
|NOIOJ|动态规划|2988:计算字符串距离
http://noi.openjudge.cn/ch0206/2988/折腾了我很久,终于会了。。设a数组为第一个字符串,b数组为第二个字符串,数组从下标1开始对于这个问题,我们设f[i][j]为ai到bj的字符串距离(ai为a[1~i], bi为b[1~j])设a数组的长度为m,b数组的长度为n初始:f[i][0] = i; (1当b数组为空时,a数组到b数组原创 2016-08-29 18:04:14 · 936 阅读 · 0 评论