传统算法入门学习
rsy56640
学生
展开
-
POJ 3636 Nested Dolls -(最长上升子序列)
题目链接:http://poj.org/problem?id=3636最小链划分数 = 最长反链长度按如下关系排序:w1>w2∨(w1=w2∧h1≤h2)w_1 \gt w_2 \lor (w_1 = w_2 \land h_1 \le h_2)w1>w2∨(w1=w2∧h1≤h2)定义反链:w1≥w2∧h1≤h2w_1 \ge w_2 \land ...原创 2019-06-26 16:07:48 · 1431 阅读 · 0 评论 -
POJ 1258 Agri-Net - (MST - Kruskal+并查集)
题目链接:http://poj.org/problem?id=1258#include <stdio.h> #include <vector> #include <algorithm>#include <queue>using namespace std;//POJ 1258 Agri-Nettypedef struct...原创 2018-04-21 21:25:55 · 97 阅读 · 0 评论 -
POJ 1258 Agri-Net - (MST-Prim)
题目链接:http://poj.org/problem?id=1258#include <stdio.h> #include <vector> #include <algorithm>#include <queue>using namespace std;//POJ 1258 Agri-Nettypedef struct E...原创 2018-04-21 19:09:46 · 108 阅读 · 0 评论 -
POJ 1611 The Suspects - (并查集)
题目链接:http://poj.org/problem?id=1611#include <stdio.h> #include <vector> #include <algorithm>#include <map>using namespace std;//POJ 1611 The Suspectsinline int get...原创 2018-04-21 16:43:45 · 152 阅读 · 0 评论 -
POJ 2457 Part Acquisition - (BFS最短路打印)
题目链接:http://poj.org/problem?id=2457#include <stdio.h> #include <vector> #include <algorithm>#include <queue>using namespace std;//POJ 2457 Part Acquisitionstruct E...原创 2018-04-21 10:33:12 · 162 阅读 · 0 评论 -
POJ 1125 Stockbroker Grapevine - (Floyd)
题目链接:http://poj.org/problem?id=1125#include <stdio.h>#include <algorithm>using namespace std;const int N = 105 + 3;const int MAXN = 10000;int matrix[N][N][N];//POJ 1125 Stockbroke...原创 2018-04-20 23:37:20 · 101 阅读 · 0 评论 -
线段树模板(pushDown) - 做题用
普通线段树lazy更新版本。#include <iostream>#include <algorithm>#include <vector>#include <time.h>using namespace std;class A{public: A(const vector<int>& Vec) :v(...原创 2018-04-20 23:27:57 · 504 阅读 · 0 评论 -
KMP - 字符串匹配算法
工业级源码: https://github.com/rsy56640/rsy_little_lib/tree/master/library_for_algorithm/KMP \quad \quad (做题用)模板#include <iostream> #include <algorithm>#include <iterator>#includ...原创 2018-04-19 23:08:29 · 136 阅读 · 0 评论 -
POJ 2524 Ubiquitous Religions - (并查集)
题目链接:http://poj.org/problem?id=2524#include <stdio.h> #include <vector> #include <algorithm>using namespace std;//POJ 2524 Ubiquitous Religionsinline int getFather(int *p...原创 2018-04-21 23:28:59 · 149 阅读 · 0 评论 -
MST - (Kruskal+并查集) - 模板
#include <stdio.h> #include <vector> #include <algorithm>#include <queue>using namespace std;//POJ 2560 Frecklestypedef struct Edge_info{ int length; int in...原创 2018-04-21 23:14:30 · 144 阅读 · 0 评论 -
POJ 1287 Networking - (MST - Kruskal+并查集)
题目链接:http://poj.org/problem?id=1287#include <stdio.h> #include <vector> #include <algorithm>#include <cmath>#include <queue>using namespace std;//POJ 2560 Fre...原创 2018-04-21 23:12:42 · 107 阅读 · 0 评论 -
POJ 1847 Tram - (Dijkstra)
题目链接:http://poj.org/problem?id=1847#include <stdio.h> #include <vector> #include <algorithm>#include <queue>using namespace std;//POJ 1847 Tramconst int MAX = 0x7ff...原创 2018-04-12 16:36:44 · 152 阅读 · 0 评论 -
POJ 1860 Currency Exchange - (Bellman-Ford)
题目链接:http://poj.org/problem?id=1860水一水,#include <stdio.h> #include <vector> #include <algorithm>using namespace std;//POJ 1860 Currency Exchangestruct Edge{ int in...原创 2018-04-12 15:13:42 · 137 阅读 · 0 评论 -
POJ 2560 Freckles - (MST - Kruskal+并查集)
题目链接:http://poj.org/problem?id=2560注意io#include <stdio.h> #include <vector> #include <algorithm>#include <cmath>#include <queue>using namespace std;//POJ ...原创 2018-04-21 22:31:02 · 140 阅读 · 0 评论 -
POJ 2377 Bad Cowtractors - (MST - Kurskal+并查集)
题目链接:http://poj.org/problem?id=2377#include <stdio.h> #include <vector> #include <algorithm>#include <cmath>#include <queue>using namespace std;//POJ 2560 F...原创 2018-04-21 22:53:11 · 110 阅读 · 0 评论 -
HDUOJ 5418 Victor and World -(状压DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5418#include <iostream>#include <cstdio>#include <cstdlib>#include <string>#include <map>#include <algorithm>#...原创 2019-05-06 14:35:50 · 805 阅读 · 0 评论 -
CCF 201712-5-商路 30分。。。枯了
我的思路按照拓扑排序DP用S[i]表示 i 的最大价值,那么有S[i]=maxi→j{S[j]+v[i]−(f[i]−dij)2} S[i] = max_{i\to j} \{ S[j] + v[i] - (f[i] - d_{ij})^2 \} S[i]=maxi→j{S[j]+v[i]−(f[i]−dij)2}中间做了一点优化,貌似是拖慢了时间。但其实有多种优化思路,...原创 2019-03-16 21:38:14 · 447 阅读 · 0 评论 -
无旋Treap 模板
同时是BST和最小堆支持 插入,删除,查找,第K大,前驱查找,后继查找,元素排名#include &amp;lt;iostream&amp;gt;#include &amp;lt;cstdio&amp;gt;#include &amp;lt;cstdlib&amp;gt;using namespace std;#define maxn (10000 + 5)inline int原创 2019-03-15 14:30:46 · 130 阅读 · 0 评论 -
POJ 1442 Black Box - (无旋Treap)
题目链接:http://poj.org/problem?id=1442无旋treap挺好用,参考:https://www.bilibili.com/video/av46204315/?p=2#include &amp;amp;lt;iostream&amp;amp;gt;#include &amp;amp;lt;queue&amp;amp;gt;#include &amp;amp;lt;stdlib.h&原创 2019-03-15 12:13:10 · 126 阅读 · 0 评论 -
POj 1014 Dividing - (DP)
题目链接:http://poj.org/problem?id=1014 多重背包 –&amp;gt; 01背包。#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;vector&amp;gt; #include &amp;lt;algorithm&amp;gt;#include &amp;lt;queue&a原创 2018-09-09 14:25:55 · 156 阅读 · 0 评论 -
POJ 1088 滑雪 - (DP)
题目链接:http://poj.org/problem?id=1088#include <stdio.h> #include <vector> #include <algorithm>#include <queue>#include <functional>using namespace std;//POJ 108...原创 2018-09-09 12:51:24 · 113 阅读 · 0 评论 -
POJ 1050 To the Max - (DP)
题目链接:http://poj.org/problem?id=1050#include &lt;stdio.h&gt; #include &lt;vector&gt; #include &lt;algorithm&gt;using namespace std;//POJ 1050 To the Maxint matrix[101][101];int sumrow[101]...原创 2018-09-09 11:07:53 · 144 阅读 · 0 评论 -
POJ 3093 Stock Exchange - (DP)
题目链接:http://poj.org/problem?id=3903#include <stdio.h> #include <vector> #include <algorithm>using namespace std;//POJ 3903 Stock Exchangeint main(){ int N; while...原创 2018-09-08 11:13:39 · 155 阅读 · 0 评论 -
Hash IN C
做了点微小的工作,回家两天全是水,之后要抓紧了。 把红黑树移植到了C语言上,另外发现之前写的 operator-- 有点问题。 Hash in C - github/rsy56640 在设计上又花费了一点心思,主要是 object ownership 和接口友好。 hash 的实现就是散列,桶里面放红黑树。...原创 2018-07-27 21:26:23 · 270 阅读 · 0 评论 -
B树 学习笔记3 - 从B树上中删除关键字
接上,算法导论 - 18.3 从B树中删除关键字 这一节没有给出伪代码,写起来怕是会有坑,放点参考: https://www.youtube.com/watch?v=svfnVhJOfMc https://www.geeksforgeeks.org/b-tree-set-3delete/ (含代码) \quad 在删除关键字时,要重新安排这个结点的孩子,并且必须保证一个结点不会再删除期间...原创 2018-04-29 17:34:22 · 3339 阅读 · 0 评论 -
B树 学习笔记2 - B树上的基本操作
接上,算法导论 - 18章-2 B树上的基本操作 \quad 本节将给出 B-TREE-SEARCH、B-TREE-CREATE 和 B-TREE-INSERT 操作的细节。在这些过程中,我们采用两个约定:\quad\quad1. B树的根结点始终在主存中,这样无需对根做 DISK-READ 操作;然而,当根结点被改变后,需要对根结点做一次 DISK-WRITE 操作。\quad\qu...原创 2018-04-28 22:58:02 · 303 阅读 · 0 评论 -
B树 学习笔记1 - 定义
参考资料:算法导论 - 18章 - B树 先来谈一谈磁盘, 磁盘有两个机械运动的部分:盘片旋转 和 磁臂震动。 为了摊还机械移动所花费的等待时间,磁盘会一次存取多个数据项而非一个。信息被分为一系列相等大小的在柱面内连续出现的位页面(page),并且每个磁盘读或写一个或多个完整的页面。 \quad 我们在此只考虑两类运行时间: 1)磁盘存取次数 2)CPU计算时间 (注:磁盘存取时间...原创 2018-04-28 20:40:11 · 194 阅读 · 0 评论 -
图算法 - 单源最短路径
由于这部分算法比较 trivial ,我就水个几篇文章。\quad 在最短路径问题中,我们给定一个有向图 G=(V,E)G=(V,E)G=(V,E) 和权重函数 w:E→Rw:E→Rw: E \to R ,该权重函数将每条边映射到实数值的权重上。 \quad 图中的一条路径 p=<v0, v1, ..., vk>p=<v0, ...原创 2018-04-11 23:36:02 · 441 阅读 · 0 评论 -
POJ 2387 Til the Cows Come Home - (Dijkstra)
题目链接:http://poj.org/problem?id=2387Dijkstra模板题,不过话说今天做了几个就这一个AC,其他全部WA,也是很迷。。。#include <stdio.h> #include <vector> #include <algorithm>#include <queue>using namesp...原创 2018-04-03 00:05:29 · 114 阅读 · 0 评论 -
POJ 2240 Arbitrage - (floyd)
题目链接:http://poj.org/problem?id=2240#include <stdio.h> #include <vector> #include <algorithm>#include <map>#include <string>using namespace std;//POJ 2240 Arbi...原创 2018-04-09 23:42:20 · 256 阅读 · 1 评论 -
POJ 1837 Balance - (DP)
题目链接:http://poj.org/problem?id=1837#include <stdio.h> #include <vector> using namespace std;//POJ 1837 Balanceconst int MAX = 15001;int dp[21][MAX]; //dp[i][j]表示放前i个砝码,力矩为j的总方法数...原创 2018-02-18 19:30:28 · 187 阅读 · 0 评论 -
POJ 3436 ACM Computer Factory - (网络流)
题目链接:http://poj.org/problem?id=3436一直WA,把queue换成stack突然AC,,,,,很迷当然POJ还是不支持C++ 11,std::move()无法编译#include <stdio.h> #include <vector> #include <queue> using namespace std;//PO...原创 2018-02-10 23:02:46 · 161 阅读 · 0 评论 -
网络流模板——链表实现
没有I/O操作,vector<Edge> edges存储所有边node[]记录了 相连边的序号和方向path[]记录了 增广路径上入边序号和方向通过BFS搜索增广路径,然后通过path[]倒着更新。#include <stdio.h> #include <vector> #include <queue> using namespace...原创 2018-02-10 12:51:12 · 276 阅读 · 0 评论 -
网络流模板——矩阵实现
没有I/O操作,flow[][], cap[][]记录了网络矩阵node[]记录了 相连的点path[]记录了 增广路径上进入的点通过BFS搜索增广路径,然后通过path[]倒着更新。#include <stdio.h> #include <vector> #include <queue> using namespace std;//POJ ...原创 2018-02-10 13:49:16 · 488 阅读 · 0 评论 -
POJ 1459 Power Network——(网络流入门)
POJ 1459 Power Network题目链接:http://poj.org/problem?id=1459I/O坑爹。。一开始的想法:理论虽然简单,实现起来怀疑人生。问题主要在于用什么模型存储网络,并且可以快速读写(这是核心问题)。用矩阵存储一直TLE,后来一直想用map,但是感觉还是不行,最后还是换成链表了。第一次写的,用矩阵存储。一直TLE,我以为矩阵费时间,,后来发现神tm居然控制台...原创 2018-02-10 12:28:07 · 180 阅读 · 0 评论 -
POJ 3083 玉米田迷宫 - (DFS)
题目链接:http://poj.org/problem?id=3083 水题,但是感觉I/O太恶心了,光调输入调了一早上#include <stdio.h>using namespace std;const int prime = 1000000007;char m[42][42];bool visit[42][42];int path[42][42];int a...原创 2017-12-18 22:14:57 · 368 阅读 · 0 评论 -
POJ 3096 Surprising Strings
题目链接:http://poj.org/problem?id=3096做完看讨论区,为啥说是STL的题,可能是我太水了。。思路:存储所有字母的位置,然后做差分序列,如果有两个差分值相等,那么认为NOT surprising#include using namespace std;//POJ 3096const int MAXN = 80;int main() {原创 2018-01-03 15:52:25 · 157 阅读 · 0 评论 -
POJ 3253 修理栅栏 - (贪心 Huffman)
题目链接:http://poj.org/problem?id=3253 Huffman#include <stdio.h>#include <algorithm>#include <functional>#include <queue>using namespace std;//POJ 3253int main() { ...原创 2017-12-18 22:17:57 · 262 阅读 · 0 评论 -
Huffman 编码
数据结构作业 算法思路:每次找到两个最小的,然后合并,直到只剩下一个。 实现过程: 1. 实现MinHeap(或者可以直接用priority_queue) 2. 编码: 用队列层次遍历整棵树,同时记录每个节点的位置。 非叶子结点的code记作‘0’,叶子结点的code为本身。 把位置+1,这样树根就是1,每一行的bits就是该原创 2017-12-03 19:04:45 · 280 阅读 · 0 评论 -
POJ 1753 翻转棋子
枚举第一行所有状态,然后遍历其他#include <stdio.h>#include <algorithm>using namespace std;inline void flip(bool f[][6], int x, int y) { f[x][y - 1] ^= 1; f[x - 1][y] ^= 1; f[x][y] ^= 1; f[x + 1][y] ^原创 2017-12-01 18:35:25 · 437 阅读 · 0 评论