算法模板
主要记录一些算法细节
b_b_lai_lai
学啥啥不会
展开
-
最短路Dijkstra算法
**1.P1144 最短路计数**题目链接#include <algorithm>#include <cstdio>#include <cstring>#include <iostream>#include <queue>#define maxn 1000000 + 1#define maxn1 4000000 + 1#define mod 100003using namespace std;inline int qr原创 2021-05-16 22:32:07 · 109 阅读 · 0 评论 -
A*算法
**1.[SCOI2005]骑士精神**题目链接#include <algorithm>#include <cstdio>using namespace std;char ss[10];bool bk;int v[6][6], ans;int dx[8] = {1, 1, -1, -1, 2, 2, -2, -2};int dy[8] = {2, -2, 2, -2, 1, -1, 1, -1};const int ed[6][6] = {{0, 0, 0原创 2021-05-11 22:40:28 · 58 阅读 · 0 评论 -
数位dp
1. 不要62(数位dp)#include <cstdio>#include <cstring>#include <iostream>#include <string>using namespace std;typedef long long ll;int a[20];int dp[20][2];int dfs(int pos, int pre, int sta, bool limit) { //limit是表示前一位是否为上限位原创 2021-04-20 22:58:46 · 72 阅读 · 0 评论 -
石子合并(一)(直线相邻)(区间dp)
#include <algorithm>#include <cstdio>#include <cstring>#include <queue>using namespace std;#define mst(a, b) memset((a), (b), sizeof(a))typedef long long ll;const int maxn = 205;const ll mod = 1e9 + 7;const ll INF = 1e18;原创 2021-04-01 17:24:22 · 45 阅读 · 0 评论 -
洛谷P3808 【模板】AC自动机(简单版)
#include <bits/stdc++.h>#define N 500010using namespace std;// typedef long long ll;inline int read() { int x = 0, f = 1; char c = getchar(); while (c < '0' || c > '9') { if (c == '-') f = -1; c = get原创 2021-03-28 16:09:37 · 41 阅读 · 0 评论 -
快速幂
inline long long fastPower(long long base, long long power) { long long result = 1; while (power > 0) { if (power & 1) {//此处等价于if(power%2==1) result = result * base % 1000; } power >>= 1;//此处等价于power转载 2021-03-16 21:07:53 · 37 阅读 · 0 评论 -
背包DP
给定一个重量限制,和几种不同物品的价值和重量,每种物品只有一个,寻找能拿到的最大价值是多少01背包问题根本指的是,同种物品有且最高只有一个,在给定限制下,如何获得最大收益枚举:找出所有组合关键的状态转移方程如下:#include<iostream> //正常情况下cin和cout的I/O效率远不如stdio.h中的函数using namespace std;const int maxn = 1000;int dp[20][20];int value[20],weight[20转载 2021-03-16 14:34:06 · 82 阅读 · 0 评论 -
P3391 【模板】文艺平衡树(模板题)(fhq treap)
fhq treap 难点在于理解merge函数和split函数,这些通过手算模拟可以很好地抓住要点,其次就是要理解pushdown函数里面的交换结点,正是这个动作转换了区间,还有比较难理解的就是按照merge函数的建树(小根堆)规则可以使树的中序遍历刚刚好就是原序列。fhq treap:#include <algorithm>#include <cstdio>#include <cstring>#include <iostream>#include原创 2021-03-05 14:27:25 · 88 阅读 · 0 评论 -
洛谷P3369 【模板】普通平衡树
替罪羊树:#include <bits/stdc++.h>#define N 100000using namespace std;int n, st, rt, cnt, tot, cur[N + 5], Void[N + 5]; // rt就是根节点,st就是当前节点const double alpha = 0.75; //关联因子struct Scapegoat { int Son[2], Exist, Val, Size, Fac; //原创 2021-03-01 17:09:28 · 147 阅读 · 0 评论 -
read()快读和快写
普通的快读:inline void read(int &x) {//开实参,要使读入的值在里面发生变化 x=0; //如果对实参不了解的可以改为int类型的,最后return也可以 int f=1;//这个是用来判断正负的标志 char s=getchar();//读入每一个空行、空格和数字 while(s<'0'||s>'9') {//读入空格和换行阶段 if(s=='-')//表明这个数是负数转载 2021-03-01 17:04:46 · 306 阅读 · 0 评论 -
字符串hash
普通字符串hash看这里二维hash(矩阵)看这里转载 2021-02-23 21:53:22 · 36 阅读 · 0 评论 -
最小公倍数和最大公约数
最大公约数int divisor(int a, int b) { int temp; //比较两个数的大小,值大的数为a,值小的数为b if (a < b) { temp = a; a = b; b = temp; } //求余 while (b != 0) { temp = a % b; a = b; b = temp; } return a;}最小公倍数//辗转相除法求最大公约数函数int divisor(int a, int b) {转载 2021-02-21 16:40:04 · 42 阅读 · 0 评论 -
SPFA 算法
链接地址转载 2020-10-12 16:15:30 · 48 阅读 · 0 评论 -
Dijkstra算法(转载)
链接转载 2020-10-03 13:07:26 · 76 阅读 · 0 评论 -
C++ pair的基本用法总结(转载)
链接地址转载 2020-10-03 13:03:24 · 78 阅读 · 0 评论 -
FLoyd算法(最短路径问题)
算法链接转载 2020-09-30 10:46:41 · 239 阅读 · 0 评论