摘要:Dijkstra求解次短路径,使用cnt和dis数组记录最小、次小的个数和长度。重写更新操作。 1 /* 1688 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #includ...
阅读全文
摘要:三位树状数组。/* 3584 */#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define MAXN 1...
阅读全文
摘要:二维树状数组。 1 /* poj2155 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #inc...
阅读全文
摘要:差分约束。 1 /* 4109 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 using namespace std;11 12 #define...
阅读全文
摘要:基础差分约束。 1 /* 3592 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 10 #define MAXN 100511 #define M...
阅读全文
摘要:无向图求割点和连通块。 1 /* POJ2117 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 10 #define MAXN 1000511 1...
阅读全文
摘要:双连通缩点+求树的直径,图论基础题目。 1 /* 4612 */ 2 #pragma comment(linker, "/STACK:1024000000,1024000000") 3 #include 4 #include 5 #include 6 #include 7 #i...
阅读全文
摘要:二维RMQ。 1 /* 2888 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 #define MAXN 30510 #define MAXM 911 12 int...
阅读全文
摘要:RMQ。 1 /* 3183 */ 2 #include 3 #include 4 #include 5 6 #define MAXN 1005 7 8 char s[MAXN], ans[MAXN]; 9 int dp[MAXN][MAXN];10 int n,len,m;11 12 i...
阅读全文
摘要:SPFA求最短路径。见图的时候注意逆向建图。 1 /* 3696 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 using ...
阅读全文
摘要:Tarjan解无向图的割点和桥,参考白书。 1 /* 4587 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 10 #define MAXN 50...
阅读全文
摘要:简单DFS。 1 /* 2414 */ 2 #include 3 #include 4 #include 5 6 const int n = 8; 7 char map[10][10]; 8 int x, y, d; 9 char dirs[5] = "^v"; 10 in...
阅读全文
摘要:暴力DFS 1 /* 2589 */ 2 #include 3 #include 4 #include 5 6 #define MAXN 21 7 8 bool map[MAXN][MAXN]; 9 bool visit[MAXN][MAXN];10 int l, n;11 12 bool...
阅读全文
摘要:模拟+DFS。 1 /* 2780 */ 2 #include 3 #include 4 #include 5 6 char map[10][10]; 7 int visit[10][10][10]; 8 int fn; 9 int fx[6], fy[6]; 10 11...
阅读全文
摘要:DFS。 1 /* 2782 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 #define MAXN 650 10 11 int n, m; 1...
阅读全文
摘要:暴力+计算几何。 1 /* 5128 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 typedef struct point { 10 i...
阅读全文
摘要:这一章节特别有意思。习题也比较多,但是很容易掌握。主要描述的就是在已知数据结构的基础上,通过增加或修改部分基础操作。来构造更加有效的新数据结构。14.1动态数据统计本节主要介绍如何修改红黑树,使得可以在O(lgn)时间内确定顺序统计量,如何在O(lgn)时间内确定一个元素的秩,即它在集合线性序中的位...
阅读全文
摘要:状态压缩+逆向BFS。方向数组就是任意相邻的两点(初始化时减1),每个顶点均有4个相邻点。因此,共有16*4/2=32个方向。按序排列即可找到。 1 /* 3220 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 us...
阅读全文
摘要:超简单BFS。 1 /* 3329 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 #define MAXN 105 10 11 typedef ...
阅读全文
摘要:简单DFS。 1 /* 3325 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 #define MAXN 100005 10 #define IN...
阅读全文
摘要:DFS。 1 /* 5179 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 #define MAXN 150010 11 map tb;12 int a[MAXN]...
阅读全文