10 2021 档案

摘要:$给定n对于正整数a,b,求出一组x,y,使其满足a \times x + b \times y = gcd(a,b)$ 首先给出Bezout定理: 在数论中,裴蜀定理是一个关于最大公约数的定理,说明对任何整数a,b和d,关于未知数x和y的线性方程:ax + by = m,有整数解时当且仅当m是a及 阅读全文
posted @ 2021-10-30 23:52 Modest-Hamilton 阅读(72) 评论(0) 推荐(0)
摘要:$对于a^{b} ,可以用O(logb)的时间复杂度求出,使用二进制拆分的思想将b拆分成二进制,分别得出a^{2^{0}},a^{2^{1}}...a^{2^{n}}之后求积即可。$ 1 #include <iostream> 2 using namespace std; 3 4 long long 阅读全文
posted @ 2021-10-30 22:17 Modest-Hamilton 阅读(32) 评论(0) 推荐(0)
摘要:欧拉函数的定义: $1\sim N$中与$N$互质的数的个数被称为欧拉函数,记作$\phi \left ( N \right )$ 在算数基本定理中,$N= p_1^{a_1}p_2^{a_2}...p_m^{a_m}$,则: $\phi \left ( N \right ) = N\times \ 阅读全文
posted @ 2021-10-30 20:55 Modest-Hamilton 阅读(123) 评论(0) 推荐(0)
摘要:约数,因数。 整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。 试除法(从小到大输出): 同质数的试除法思想类似,如果d|n,那么(n/d)|n,即约数是成对出现的,因此只需要枚举到n1/2就可以了。 1 void div 阅读全文
posted @ 2021-10-30 20:23 Modest-Hamilton 阅读(114) 评论(0) 推荐(0)
摘要:质数:①大于1;②不包含除了1和自身的其他约数。 试除法求解一个数是否为质数: 1 bool isPrime(int n) 2 { 3 if(n == 1) 4 return true; 5 for(int i = 2;i < n;++i) 6 { 7 if(n % i == 0) 8 return 阅读全文
posted @ 2021-10-30 20:09 Modest-Hamilton 阅读(177) 评论(0) 推荐(0)
摘要:1 #include <iostream> 2 #include <algorithm> 3 #include <string.h> 4 using namespace std; 5 const int N = 509,M = 100009; 6 int n1,n2,m,idx,res; 7 int 阅读全文
posted @ 2021-10-22 21:35 Modest-Hamilton 阅读(96) 评论(0) 推荐(0)
摘要:1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 5 const int N = 100009; 6 int h[N],e[2*N],ne[2*N],idx; 7 int n,m,color[N]; 8 void 阅读全文
posted @ 2021-10-22 10:54 Modest-Hamilton 阅读(34) 评论(0) 推荐(0)
摘要:Kruskal和prim不同的点在于prim每次都是找离集合距离最小的点,Kruskal找的是图中最短的边,如果边的两端不连通,则加入生成树中,属于是贪心的策略。 思路: ①每次都找最短的边,因此首先对所有的边进行从小到大的排序,因为排序,所以Kruskal的时间复杂度下限就已经是O(nlogn)了 阅读全文
posted @ 2021-10-22 10:28 Modest-Hamilton 阅读(47) 评论(0) 推荐(0)
摘要:Prim:每次都选一个距离集合最小的点加入集合中,最终形成的就是最小生成树(与Dijkstra最大的区别,其余代码和Dijkstra没啥不同) 因为和Dijikstra思想差不多,所以也可以用堆优化,但是基本都不用,因为有更好的Kruskal 1 #include <iostream> 2 #inc 阅读全文
posted @ 2021-10-22 10:15 Modest-Hamilton 阅读(48) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个n个点 m条边的有向图,图中可能存在重边和自环,边权可能为负数。 再给定k个询问,每个询问包含两个整数 x 和 y,表示查询从点 x 到点 y 的最短距离,如果路径不存在,则输出 impossible。 数据保证图中不存在负权回路。 【输入格式】 第一行包含三个整数 n,m,k 阅读全文
posted @ 2021-10-21 17:08 Modest-Hamilton 阅读(26) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你判断图中是否存在负权回路。 【输入格式】 第一行包含整数 n 和 m。 接下来 mm 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。 【输出格式】 如果图中存在 阅读全文
posted @ 2021-10-21 16:37 Modest-Hamilton 阅读(33) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible。 数据保证不存在负权回路。 输入格式 第一行包含整数 n 和 m。 接下来 mm 行每行包含三个 阅读全文
posted @ 2021-10-21 16:20 Modest-Hamilton 阅读(34) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出从 1 号点到 n 号点的最多经过 k 条边的最短距离,如果无法从 1 号点走到 n 号点,输出 impossible。 注意:图中可能 存在负权回路 。 【输入格式】 第一行包含三个整数 n,m 阅读全文
posted @ 2021-10-21 15:06 Modest-Hamilton 阅读(108) 评论(0) 推荐(0)
摘要:1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 const int N = 509; 5 int g[N][N],dist[N],st[N]; 6 int n,m; 7 8 int dijkstra() 9 { 阅读全文
posted @ 2021-10-20 23:23 Modest-Hamilton 阅读(72) 评论(0) 推荐(0)
摘要:【题目描述】 给定一颗树,树中包含 n 个结点(编号 1∼n)和 n−1 条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 【输入格式】 第一行包含整 阅读全文
posted @ 2021-10-20 17:03 Modest-Hamilton 阅读(142) 评论(0) 推荐(0)
摘要:【题目描述】 在一个 3×3 的网格中,1∼8 这 8 个数字和一个 x 恰好不重不漏地分布在这 3×3 的网格中。 例如: 1 2 3 x 4 6 7 5 8 在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。 我们的目的是通过交换,使得网格变为如下排列(称为正确排列 阅读全文
posted @ 2021-10-20 15:58 Modest-Hamilton 阅读(50) 评论(0) 推荐(0)
摘要:【题目描述】 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。 A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1∼N 编号。 每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: 第一种说 阅读全文
posted @ 2021-10-20 10:34 Modest-Hamilton 阅读(73) 评论(0) 推荐(0)
摘要:【题目描述】 一共有 n 个数,编号是 1∼n,最开始每个数各自在一个集合中。 现在要进行 m 个操作,操作共有两种: M a b,将编号为 aa 和 bb 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作; Q a b,询问编号为 aa 和 bb 的两个数是否在同一个集合中; 阅读全文
posted @ 2021-10-19 22:31 Modest-Hamilton 阅读(34) 评论(0) 推荐(0)
摘要:【题目描述】 在给定的 N 个整数 A1,A2……AN 中选出两个进行 xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数 N。 第二行输入 N 个整数 A1~AN。 输出格式 输出一个整数表示答案。 数据范围 1≤N≤105,0≤Ai<231 输入样例: 3 1 2 3 输出 阅读全文
posted @ 2021-10-19 22:20 Modest-Hamilton 阅读(87) 评论(0) 推荐(0)
摘要:【题目描述】 维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 x; Q x 询问一个字符串在集合中出现了多少次。 共有 N 个操作,输入的字符串总长度不超过 105,字符串仅包含小写英文字母。 【输入格式】 第一行包含整数 N,表示操作数。 接下来 N 行,每行包含一个操作指令, 阅读全文
posted @ 2021-10-19 13:19 Modest-Hamilton 阅读(33) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个模式串 S,以及一个模板串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模板串 P 在模式串 S 中多次作为子串出现。 求出模板串 P 在模式串 S 中所有出现的位置的起始下标。 【输入格式】 第一行输入整数 N,表示字符串 P 的长度。 第二行输入字符串 P。 第三 阅读全文
posted @ 2021-10-19 11:59 Modest-Hamilton 阅读(50) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个大小为 n≤106 的数组。 有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: 该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。 窗口位置最小值最大值 [1 3 -1] 阅读全文
posted @ 2021-10-17 16:25 Modest-Hamilton 阅读(94) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。 【输入格式】 第一行包含整数N,表示数列长度。 第二行包含N个整数,表示整数数列。 【输出格式】 共一行,包含N个整数,其中第 i 个数表示第 i 个数的左边第一个比它小的数,如果不存在则输出 −1。 阅读全文
posted @ 2021-10-17 15:31 Modest-Hamilton 阅读(30) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。 注意: 数据保证给定的表达式合法。 题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2) 之类表达式均不会出现。 题目保证表达式 阅读全文
posted @ 2021-10-17 12:21 Modest-Hamilton 阅读(133) 评论(0) 推荐(0)
摘要:给定 n 个区间 [li,ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3] 和 [2,6]可以合并为一个区间 [1,6]。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含两个整数 l 和 r。 输出格式 共一行,包含一个整 阅读全文
posted @ 2021-10-17 00:23 Modest-Hamilton 阅读(59) 评论(0) 推荐(0)
摘要:(整数有序)离散化就是将少量较大范围的数值,映射到从0开始的连续的自然数。 注意: ①数值中可能含有重复元素,故需要去重; ②如何计算出num离散化后的数值 => 二分。 【题目描述】 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。 现在,我们首先进行 n 次操作,每次操作将某一位置 x 上 阅读全文
posted @ 2021-10-16 23:59 Modest-Hamilton 阅读(237) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 【输入格式】 第一行包含整数 n。 第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。 【输出格式】 共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。 【数据范围】 1 阅读全文
posted @ 2021-10-16 19:57 Modest-Hamilton 阅读(25) 评论(0) 推荐(0)
摘要:一维差分 输入一个长度为 n 的整数序列。 接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示整数序列。 接下来 m 行,每行包含三个整 阅读全文
posted @ 2021-10-16 16:30 Modest-Hamilton 阅读(102) 评论(0) 推荐(0)
摘要:一维前缀和 【题目描述】 输入一个长度为 n 的整数序列。 接下来再输入 m 个询问,每个询问输入一对 l,r。 对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。 【输入格式】 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示整数数列。 接下来 m 行,每行包含两个整数 l 阅读全文
posted @ 2021-10-16 13:49 Modest-Hamilton 阅读(46) 评论(0) 推荐(0)
摘要:二分与单调性:具备单调性一定可以二分,但可以二分的题目不一定就具备单调性。 如何区分计算mid时是否需要加1: 先写出check函数,根据check函数后续l与r的范围,来确定是否需要加1; 如果是l = mid,则需要加1; 如果是r = mid,则不需要加1。 为什么需要加上1?因为除法默认下取 阅读全文
posted @ 2021-10-16 10:16 Modest-Hamilton 阅读(39) 评论(0) 推荐(0)
摘要:【题目描述】 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。 【输入格式】 第一行包含整数 n,表示数列的长度。 第二行包含 n 个整数,表示整个数列。 【 阅读全文
posted @ 2021-10-16 00:06 Modest-Hamilton 阅读(230) 评论(0) 推荐(0)
摘要:【题目链接】 最大正方形 【题目描述】 在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。 【输入输出样例】 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1&qu 阅读全文
posted @ 2021-10-14 22:45 Modest-Hamilton 阅读(41) 评论(0) 推荐(0)
摘要:【题目链接】 打家劫舍III 【题目描述】 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个 阅读全文
posted @ 2021-10-14 22:05 Modest-Hamilton 阅读(24) 评论(0) 推荐(0)
摘要:【题目链接】 打家劫舍II 【题目描述】 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每 阅读全文
posted @ 2021-10-14 21:53 Modest-Hamilton 阅读(26) 评论(0) 推荐(0)
摘要:【题目链接】 打家劫舍 【题目描述】 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 阅读全文
posted @ 2021-10-14 21:40 Modest-Hamilton 阅读(41) 评论(0) 推荐(0)
摘要:【题目链接】 Windy数 【题目描述】 不含前导零且相邻两个数字之差至少为 2 的正整数被称为 windy 数。在 a 和 b 之间,包括 a 和 b ,总共有多少个 windy 数? 【输入】 输入只有一行两个整数,分别表示 a 和 b。1≤a,b≤2 x 109。 【输出】 输出一行一个整数表 阅读全文
posted @ 2021-10-14 21:21 Modest-Hamilton 阅读(113) 评论(0) 推荐(0)
摘要:【题目链接】 不降数 【题目描述】 定义一种不降数,这种数字必须满足从左到右各位数字成小于等于的关系,如123,446。现在大家决定玩一个游戏,指定一个整数闭区间[a,b] ,问这个区间内有多少个不降数。 【输入】 有多组测试数据。每组只含两个数字 a,b意义如题目描述。1≤a,b≤231。 【输出 阅读全文
posted @ 2021-10-14 19:49 Modest-Hamilton 阅读(456) 评论(0) 推荐(0)