基础模板
文章平均质量分 52
本该如此
愿你历尽千帆,归来时仍是少年。
展开
-
01背包(DP入门)
n个重量和价值分别为w, v的物品。找出总重量不超过W 的物品,求所有挑选方案中价值总和的最大值。n=4;(w,v)={(2,3),(1,2),(3,4),(2,2)}W=5; 输出:7 (选0号,1号,3号)理解://n个物品 背包容量W //int w[max_n],v[max_n]; weight,value; //暴搜 O(2^n)i...原创 2018-04-07 22:42:38 · 328 阅读 · 0 评论 -
UVA 531 Compromise(LCS路径还原)
In a few months the European Currency Union will become a reality. However, to join the club, the Maastricht criteria must be fulfilled, and this is not a trivial task for the countries (maybe except ...原创 2018-08-09 23:41:18 · 183 阅读 · 0 评论 -
LCS / LIS 基础算法及路径保存
LCS(最长公共子序列,Longest Common Subsequence):已知两个字符串S ,T 求他们的公共子序列:按照白书对于dp数组的定义递推关系如下:dp[ i+1 ][ j+1 ]=dp[ i ][ j ]+1 ( s[i]==t[j] )dp[ i+1 ][ j+1 ]...原创 2018-08-10 01:00:34 · 624 阅读 · 0 评论 -
POJ2386--(Lake Couting)(dfs入门)
题目链接:点击打开链接。中文题目参考《挑战程序设计竞赛-第2版》算法核心内容:遍历整个"园子数组",从园子的某一块填充的是“W”时,对该块地进行搜索(上下左右,以及斜对角八个方向),(注意把这块地填充的‘w’换成“.”,避免后面搜索重复),如果这八块地方中还存在填充的是“W”的地,就继续重复上面的操作,直到所有“w”全部换成“.”,说明周围都是空地了,没有相连的水洼了。如图。把相邻所有...原创 2018-04-01 22:18:50 · 193 阅读 · 0 评论 -
HPU1283Vegetables(dfs,水)
题目描述毕业后,Vegetable在一家建筑公司找到了工作。他所在的城市将要进行整修,要求把所有空地修成公园。市区是一个N*M的矩形,Vegetable拿到了该市的地图,现在判断共要修几处公园?注意:在一片空地上,它上下左右的位置是空地,则视为统一片空地。输入共有T组测试数据,每组测试数据包含一组N和M(0<n,m<=100),分别表示市区的长和宽。接下来...原创 2018-04-19 21:31:46 · 116 阅读 · 0 评论 -
KMP入门例题(POJ3461,HDU1711)
KMP算法比较难理解,这里推荐一个视频:哔哩哔哩~阿三大神这里推荐先去多看些别的视频以及资料啥的,注意区分一下,最长前缀后缀数组和next数组的区别(其实差不了多少,next数组是为了方便操作下标,最长前缀后缀数组全体右移1位,然后第一位赋值为-1,就是常用的next数组,全体再加1就是原始的next数组,当然你直接把最长前缀后缀数组当成next数组也行,这里分享的代码就是这样);例题1:...原创 2018-08-18 21:10:33 · 294 阅读 · 0 评论 -
HDU-1520 Anniversary party (树状dp)
There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employees. It means that the supervisor relation forms a tr...原创 2018-08-10 17:23:19 · 121 阅读 · 0 评论 -
并查集的两种理解(稍有不同)
看了进击的小牛大大的武侠风格并查集,以及港巨给我们录的视频,感慨良多~QAQ:瑟瑟发抖的我~港巨的"find"函数写的比较简洁,加上小牛大大的讲解,再看着港巨的代码,很容易理解(^oVo^~);按照港巨的思路,按部就班,一步一步来:#include<bits/stdc++.h>using namespace std;int f[1006];int find(int ...原创 2018-04-08 09:02:30 · 461 阅读 · 0 评论 -
拓扑排序
百度百科:点这里大致过程:选择一个入度为0的结点,依次删除与它相连的所有边,继续找下一个入度为0的点,反复操作,直到图空,或者不存在入度为0的点为止。两种实现:意思都一样,但根据自己需求,任意选取;代码一:#include<iostream>#include<cstring>using namespace std;int G[1000][1000];...原创 2018-08-04 16:34:14 · 126 阅读 · 0 评论 -
51nod1256-乘法逆元(模板)
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。Input输入2个数M,N中间用空格分隔(1<=M<N<=10^9)Output输出一个数K,满足0<K<N且K*M%N=1,如果有多个满足条件的,...原创 2018-05-12 22:15:31 · 176 阅读 · 0 评论 -
bfs模板
#include<bits/stdc++.h>using namespace std;typedef pair<int,int> P;char maze[100][100];int N,M;int sx,sy;int gx,gy;int d[100][100];int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};int bfs()...原创 2018-04-27 17:32:24 · 589 阅读 · 0 评论 -
51nod-1242 矩阵快速幂,快速斐波那契
1242斐波那契数列的第N项基准时间限制:1秒 空间限制:131072KB 分值:0难度:基础题收藏关注斐波那契数列的定义如下:F(0) = 0F(1) = 1F(n) = F(n - 1) + F(n - 2) (n >= 2)(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ...原创 2018-05-12 00:52:19 · 151 阅读 · 0 评论 -
常用模板
快速幂取模 求(a^b)%c int q_mod(int a,int b,int c){ int ans=1; a=a%c; //先求余,缩短运算规模。 while(b){ if(b&1) ans=(ans*a)%c; b>>=1; a=(a*a)%c; } return ans;} GCD(最大公约数)1.c语言基础型 int gcd...原创 2018-05-17 08:07:10 · 149 阅读 · 0 评论 -
矩阵乘法
两个矩阵可以相乘,必须满足的条件是:左边矩阵的列等于右边矩阵的行如:一个3x4的矩阵和一个4x2的矩阵相乘,得到一个3x2的矩阵;矩阵乘法函数:mat3 add(mat1 A,mat2 B){ mat3 ans; for(int i=0;i<s1;i++) for(int j=0;j<s2;j++){ //A矩阵...原创 2018-04-25 21:36:49 · 13865 阅读 · 0 评论 -
C++快排
ps:图片来自百度。建议先去百度看核心思想:百度:快速排序算法快排在应试的时候有可能会被拿出来当考题,所以说有必要去学习。c++实现:#include<bits/stdc++.h>using namespace std;void Swap(int &a,int &b){ if(a==b) return ; ...原创 2018-04-23 15:47:59 · 2400 阅读 · 0 评论 -
完全背包(DP入门)
n种重量和价值分别为w,v的物品。从中选出总重量不超过W的物品,每种可以挑选多件。求挑出物品价值总和的最大值。#include<bits/stdc++.h> using namespace std;const int MAX_N=10000;int n,W; int w[MAX_N],v[MAX_N];int dp[MAX_N+1];void solve(){ for(i...原创 2018-04-07 22:46:12 · 819 阅读 · 0 评论 -
不知道为啥突然想写个蛇填Ծ‸Ծ
嗯,不知道为啥,就想敲一下:原创 2019-04-17 00:30:44 · 347 阅读 · 0 评论