CuteC
文章平均质量分 70
shark_chief
这个作者很懒,什么都没留下…
展开
-
Node:原地归并
#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=1010;int arr[maxn];int n;//区间翻转void reverseArr(int转载 2015-07-12 23:06:50 · 278 阅读 · 0 评论 -
Node:向经典致敬(八皇后)
#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=110;bool l[maxn], raw[maxn], r[maxn];/*n皇后经典回溯法,好久不原创 2015-07-20 09:35:42 · 362 阅读 · 0 评论 -
Node:二叉树搜索
为了看看二叉树重建,复习了一下二叉树(指针实现)#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))typedef long long int64;using namespace std;const int maxn=10010原创 2015-07-24 12:02:38 · 384 阅读 · 0 评论 -
区间DP-矩阵连乘问题
#include #include #include #include #include #include #include #include #include /*=======================================矩阵连乘问题dp(i, j) = min( dp(i, k) + dp(k + 1, j) + S);原创 2015-10-19 20:23:25 · 301 阅读 · 0 评论 -
一般DP-双调取数问题
双调取数与独立取数问题原创 2015-10-19 20:25:45 · 258 阅读 · 0 评论 -
区间DP-由矩阵连乘所想到的
一个转移方程的应用原创 2015-10-19 20:31:57 · 290 阅读 · 0 评论 -
关于回溯模型的两种解空间树
做出解空间树对于回溯(DFS)还是挺有帮助的原创 2015-10-19 21:29:54 · 3148 阅读 · 0 评论 -
分治-二叉树重建
分治法解决二叉树重建原创 2015-10-19 20:40:37 · 329 阅读 · 0 评论 -
回溯法求排列(二)
考虑一个字符串排列问题,一个字符串的全排列可以怎么分步进行?方法一:依次排列,检查每一次填入的数字是否与之前的相同,这里要用到一个标记数组方法二:把每一个元素挨个放到第一个位置,求解后n-1个元素的全排列,显然这个也可以递归;但是,如果第一次交换的状态保留到下一次,是否会影响操作要考虑,因为递归的深搜一开始是一直往深度加深的地方走,走到头之后的操作叫做回溯,为了保证每一次开始的状态相同原创 2015-04-13 22:48:41 · 410 阅读 · 0 评论 -
为向量法求组合问题
#include #include #include #include /* *位向量法解决组合问题,貌似是最易理解的方式 *建立一个向量,0表示不输出该位置上是字符 * 1表示输出字符 *所以这个问题太简单了,就是一个二叉树 *等到深度上限,根据向量数组输出对应的值 **/using namespace std;const int maxn原创 2015-04-13 23:15:17 · 317 阅读 · 0 评论 -
Node:链式前向星
#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=1010;int n,cur,m;struct Edge{ int next,to,cost;原创 2015-07-12 23:10:02 · 280 阅读 · 0 评论 -
Node:状压DP-1(棋子问题)
#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn = 310;int n, dp[10][maxn];/*在一个棋盘上放棋子,上下左右都没有棋子,一共有多原创 2015-07-20 14:10:03 · 289 阅读 · 0 评论 -
Node:Trie数(字典树)
为了看一看AC自动机,先看看Trie树#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=26;int n;/*Trie树(字典树)*/struc原创 2015-07-19 19:01:42 · 393 阅读 · 0 评论 -
Node:普通归并
#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=1010;int arr[maxn], tmp[maxn];int n,m;//向上归并的实现voi原创 2015-07-13 20:23:16 · 289 阅读 · 0 评论 -
Node:快速排序
#include #include #include #include #include using namespace std;const int maxn=1010;int data[maxn];int sz;//快排思想:选取一个数,使得其左边所有数比他小,右边数比他大int depart(int l,int r){ //data[mid]成为标准原创 2015-07-13 20:50:44 · 403 阅读 · 0 评论 -
Node:最小堆
#include #include #include using namespace std;const int maxn=1010;int heap[maxn];int sz;//堆从下标1开始void deleteNode() //最小堆{ //,第一个节点删除,最后一个放到第一个位置,之后向下调整 heap[1] = heap[sz--原创 2015-07-13 21:28:19 · 283 阅读 · 0 评论 -
Node:RMQ问题之ST算法
#include #include #include using namespace std;const int maxn=1000010;const int N=1010;int data[N];int f[maxn][20];int sz;/*f[i][j]表示 i...2^j-1的最大值,即从第i个数开始连续2^j个数的最大值2^len>sz -> len*lg2>l原创 2015-07-14 16:45:12 · 334 阅读 · 0 评论 -
Node:线段树的单点更新
#include #include #include #include using namespace std;const int maxn=32010;//类似一棵二叉树,加上数据和维护的区间信息struct Node{ int l,r; int data;};//利用数组来存储二叉树Node tree[maxn*4];int ans[maxn];i原创 2015-07-14 17:41:37 · 240 阅读 · 0 评论 -
Node:最短路径算法之Dijkstra
#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))#define INF 0xfffffffusing namespace std;const int maxn=1010;//到节点的距离和第i个节点的前一个节点int di原创 2015-07-16 22:43:37 · 369 阅读 · 0 评论 -
Node:区间DP-1
#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))#define INF 0xfffffffusing namespace std;const int maxn=310;int sum[maxn],dp[maxn][maxn];原创 2015-07-16 20:52:59 · 294 阅读 · 0 评论 -
Node:最短路径之Dijkstra堆优化
#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))#define INF 0xfffffffusing namespace std;const int maxn=1010;//到节点的距离和第i个节点的前一个节点int di原创 2015-07-16 23:08:08 · 412 阅读 · 0 评论 -
Node:KMP之next数组
#include #include #include #include #include #include using namespace std;const int maxn=1010;int pos[maxn];int n;/*KMP算法中的next数组求法图解:|**************0000000000**************.............原创 2015-07-19 12:39:17 · 318 阅读 · 0 评论 -
回溯思想解排列问题(一)
搜索基本上算是算法的入门槛了,后续很多问题都是基于回溯思想的搜索性质解题的,当然这里暂且指的是深搜(这是一个递归函数,调试起来很不方便)。所以在忍了两个月之后要在这里总结一下深度搜索问题,毕竟要想在二十分钟之内解决好一道深搜题还是不容易的,关键的是,这种递归的思想熟练以后对于很多算法的递归表达就十分熟练敏感了。什么迭代加深,tarjan算法,树的直径等等……这里先说回溯法的理由,虽然经典的原创 2015-04-13 22:14:41 · 459 阅读 · 0 评论