- 博客(5)
- 收藏
- 关注
原创 数论(第一部分)
质数定义大于等于2的整数中只有1和它本身的因数的数称之为质数(素数)。试除法求质数:由定义的方法时间复杂度o(n)for (int i = 2;i <= n; i ++) if(n%2==0) return ture; else return false;因数都是成对出现的,即i*j=n;i和j都是n的因数。所以必定存在n>m或者m>n的情况,所以枚举的时候我们从小到大枚举只需要枚举n/i就可以了,最大枚举到根号n的情况。时间复杂度o(根号n)for (int i
2021-08-07 20:23:36
162
原创 01 背包问题详解
01 问题我们可以知道是为了找到在选择n个物品以内的情况下体积不超过V的最大价值的选法。为了表示在选择n个物品以内的情况下体积不超过V的最大价值的选法,我们开了一个数组来表示在n个物品内V体积内的最大价值f[ ][ ];则f[i][j]表示在选择i个物品内j体积内的最大的价值。然后用递推来确定选择不超过n个物品体积不超过V的情况下的f[ ][ ]的最大值#include <iostream>using namespace std;const int N=1010;int v.
2021-07-22 15:03:13
143
原创 DFS和BFS的应用
题目要求是每一行每一对角线都只有一个皇后,在每行和对角线都开一个布尔数组表示数组下标所代表的的行和对角线是否已经没使用过bool col[N],dg[N],udg[N];//dg表示斜率为一的对角线,udg相反。对角线 dg[x+i],反对角线udg[n-x+i]中的下标 x+i和 n−x+i 表示的是截距反对角线 y=x+b 截距 b=y−x,因为我们要把 b 当做数组下标来用,显然 b 不能是负的,所以我们加上 +n (实际上+n+4,+2n都行),来保证是结果是正的,即 y - x + n..
2021-07-18 09:06:50
218
原创 并查集的基础思想和题目
南昌理工学院acm集训acwing 836 合并集合一共有 n 个数,编号是 1∼n,最开始每个数各自在一个集合中。现在要进行 m 个操作,操作共有两种:M a b,将编号为 a 和 b 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;Q a b,询问编号为 a 和 b 的两个数是否在同一个集合中;在初始化是我们建立一个数组代表每一个元素的所隶属的集合数组的下标代表元素,数组的内容代表元素所在的集合的根节点,通过根节点的判断来判断两个元素和是否是一个集合内部。for (
2021-07-10 17:55:46
145
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人