文章分类 -  算法

摘要:题目:从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。 通过画图模拟可以看到,若我们选好了 1 2 3, 我们可以再退到是否选择3的情况,因此选与不选这样实现: st[u] = true; dfs(u + 1); st[u] = false; dfs(u + 1); code: 阅读全文
posted @ 2022-02-04 20:54 Gsding 阅读(86) 评论(0) 推荐(0)
摘要:​ 我们经常会看到 求某数的n次方 常规来讲for循环暴力破解即可 但伴随指数增长 long long 和 __int 64 已经解决不了了 对于 过大的数 系统是不会要求你输入的(毕竟 ll 也承受不了这么大的数值) 通常会让你进行取模运算 取后几位数 那么先来介绍取模运算 取模运算:(ab)%c 阅读全文
posted @ 2021-12-30 14:22 Gsding 阅读(59) 评论(0) 推荐(0)
摘要:题目: 给定两个字符串 A 和 B,现在要将 A 经过若干操作变为 B,可进行的操作有: 删除–将字符串 A 中的某个字符删除。 插入–在字符串 A 的某个位置插入某个字符。 替换–将字符串 A 中的某个字符替换为另一个字符。 现在请你求出,将 A 变为 B 至少需要进行多少次操作。 1.状态表示 阅读全文
posted @ 2021-11-18 23:09 Gsding 阅读(45) 评论(0) 推荐(0)
摘要:**题目:**给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M。 第二行包含一个长度为 N 的字符串,表示字符串 A。 第三行包含一个长度为 M 的字符串,表示字符串 B。 字符串均由小写字 阅读全文
posted @ 2021-11-18 17:26 Gsding 阅读(57) 评论(0) 推荐(0)
摘要:样例:3 1 2 1 8 5 6 那么最长上升子序列就是1 2 5 6 朴素解法,复杂度n^2: 我们构建一个数组f[n],f[i]储存的是前i个序列中比第i个数小的序列个数,我们通过max(f[i],f[j] + 1);不断继承较小的序列个数 code: #include <iostream> # 阅读全文
posted @ 2021-11-17 21:51 Gsding 阅读(86) 评论(0) 推荐(0)
摘要:组合数公式 C(a,b) = C(a-1,b) + C(a-1,b-1) 对小数据范围直接套公式就可: code: #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N 阅读全文
posted @ 2021-11-02 09:33 Gsding 阅读(84) 评论(0) 推荐(0)
摘要:b|a → a 能整除b a = b(mod p) → p|(a-b) 简单的地说,在计算机中,我们让整数除以整数,不一定是整数,但整数乘以整数一定是整数。因此我们在求解整数相除,我们可以通过求他的逆元来计算 逆元一般是来求一个x,使得b*x mod m = 1 快速幂求逆元 #include <i 阅读全文
posted @ 2021-10-27 20:42 Gsding 阅读(76) 评论(0) 推荐(0)
摘要:**题意:**给定nn堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。 问如果两人都采用最优策略,先手是否必胜。 必胜状态,先手进行某一个操作,留给后手是一个必败状态时,对于先手来说是一个必胜状态。即先手可以走到某一个必 阅读全文
posted @ 2021-10-25 19:31 Gsding 阅读(112) 评论(0) 推荐(0)
摘要:与& 参加运算的两个数据,按二进制位进行“与”运算。 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0 与运算”的特殊用途: (1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。 (2)取 阅读全文
posted @ 2021-10-24 20:40 Gsding 阅读(161) 评论(0) 推荐(0)
摘要:裴蜀定理:若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。 它的一个重要推论是:a,b互质的充分必要条件是存在整数x,y使ax+by=1. 扩展欧几里得: 用于求解方程 ax+by=gcd(a,b) 的解 阅读全文
posted @ 2021-10-23 20:42 Gsding 阅读(67) 评论(0) 推荐(0)
摘要:目录 如何求出1~N的素数个数呢 朴素版筛法 我们只要将素数的倍数全部筛掉就可以 代码 埃氏筛 int isprime(int n){ int cnt = 0; for (int i = 2; i <= n; i ++){ if (!st[i]) prime[cnt ++] = i; for (in 阅读全文
posted @ 2021-10-15 16:37 Gsding 阅读(111) 评论(0) 推荐(0)
摘要:@ 试除法求约数 题目大意:输出n个数,分别输出这n个数所有的约数 # include <iostream> # include <algorithm> # include <vector> using namespace std; const int N = 1e5 + 10; vector<in 阅读全文
posted @ 2021-09-28 17:19 Gsding 阅读(205) 评论(0) 推荐(0)
摘要:vector(变长数组),倍增的思想,支持比较运算(按字典序) 定义:: vector <int> a; 定义:一个vector数组a vector <int> a(10); 定义:一个长度为10的vector数组a vector <int> a(10,3); 定义:一个长度为10的vector数组 阅读全文
posted @ 2021-09-28 17:18 Gsding 阅读(43) 评论(0) 推荐(0)
摘要:题意:给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。 所有边的长度都是 1,点的编号为 1∼n。 请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1。 输入:第一行包含两个整数 n 和 m。 接下来 m 行,每行包含两个整数 a 和 b,表示存在 阅读全文
posted @ 2021-09-28 17:18 Gsding 阅读(73) 评论(0) 推荐(0)
摘要:重心的定义 重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 举个例子 我们去掉1,树将分为连通块(2,5,8),(3,4,6,9),(7),此时最大连通块点数是4,去掉点2,连通块为(8),(5),(1,4,7,3,6,9),最大连通块点数 阅读全文
posted @ 2021-09-28 17:17 Gsding 阅读(80) 评论(0) 推荐(0)
摘要:红与黑 链接: ACWing 1113 #include <bits/stdc++.h> using namespace std; const int N = 200; int dx[5] = {1,-1,0,0} , dy[5] = {0,0,-1,1}; int h, w; char g[N][ 阅读全文
posted @ 2021-09-28 17:16 Gsding 阅读(49) 评论(0) 推荐(0)
摘要:迷宫问题 链接: ACWing 844 #include <bits/stdc++.h> using namespace std; typedef pair<int,int> PII; const int N = 200; int g[N][N],f[N][N]; int m, n; int dx[ 阅读全文
posted @ 2021-09-28 17:15 Gsding 阅读(48) 评论(0) 推荐(0)
摘要:@ 又水了一篇博客呜呜,第一次尝试写DFS和BFS,做题也迷迷糊糊,看着大佬文章简单写了写总结,后续会补上DFS和BFS的题目。 BFS DFS介绍 DFS:深度优先搜索,又叫回溯算法。这个算法的核心就是不断的往更深的地方搜索,如果更深的地方搜索失败了,就返回来搜,是一个回溯的过程。 BFS:广度优 阅读全文
posted @ 2021-09-28 17:14 Gsding 阅读(555) 评论(0) 推荐(0)
摘要:DFS基本概念 深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被 阅读全文
posted @ 2021-09-28 17:13 Gsding 阅读(75) 评论(0) 推荐(0)
摘要:@ 支持的操作: 合并两个集合 询问两个元素是否在一个集合中 基本原理 每个集合用用一棵树表示,树的根节点的idex就是整个集合的idex。每个节点保存了它的父节点,p[x] 表示 x 的父节点。 原理解释 在同一个acm队里,你我可能互不认识,但是你我可以通过有相同的朋友来成为朋友,也就是朋友的朋 阅读全文
posted @ 2021-09-28 17:12 Gsding 阅读(81) 评论(0) 推荐(0)