自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 栈和队列的应用——迷宫问题(Python)

迷宫问题栈——深度优先搜索(DFS)队列——广度优先搜索(BFS)给出一个二维列表表示迷宫(0表示通道,1表示围墙)设计算法,求一条走出迷宫的路径。栈——深度优先搜索(DFS)回溯法:从一个节点开始,任意找下一个能走的节点,当遇到走不通的节点时,退回上一个节点寻找其他方向是否能够走通。使用栈存储当前路径。maze = [ [1,1,1,1,1,1,1,1,1,1], [1,0,0,1,0,0,0,1,0,1], [1,0,0,1,0,0,0,1,0,1], [1

2022-01-31 14:25:45 1128

原创 o(nlogn)的排序算法(Python)

快速排序取一个元素tmp,使元素tmp归位,列表被tmp分为两部分,左边都比tmp小,右边都比tmp大;递归完成排序。def partition(data, left, right): tmp = data[left] while left < right: while left < right and data[right] > tmp: right -= 1 data[left] = data[right]

2022-01-28 12:24:23 974

原创 三种常规排序(Python)

冒泡排序列表每相邻的数,如果前面的数比后面的数大,则交换这两个数一趟排序完成后,则当前最大的数已经冒泡到列表的尾部。def bubble_sort(li): for i in range(len(li) - 1): for j in range(len(li) - 1 - i): if li[j] > li[j + 1]: li[j], li[j + 1] = li[j + 1], li[j]选择排序第一趟排序

2022-01-28 11:42:59 1281

原创 贪心:绝对值 不等式(货仓选址)、推公式(耍杂技的牛)

绝对值不等式AcWing 104. 货仓选址在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数N。第二行N个整数A1~AN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤100000,0≤Ai≤40000输入样例:46 2 9 1输出样例:12Code:f(x) = |x1 - x|

2021-01-13 22:46:01 203

原创 贪心:Huffman树(合并果子)、排序不等式(排队打水)

Huffman树AcWing 148. 合并果子在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以达达在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设

2021-01-13 21:41:04 206

原创 贪心:区间问题(区间选点、最大不相交区间数量、区间分组、区间覆盖)

AcWing 905. 区间选点给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1≤N≤105,−109≤ai≤bi≤109输入样例:3-1 12 43 5输出样例:2Code:将区间按右端点的大小进行排序(选择右

2020-12-27 22:26:47 1750

原创 动态规划:记忆化搜索(滑雪)

AcWing 901. 滑雪给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9在给定矩阵中,一

2020-12-22 20:38:15 142

原创 动态规划:状态压缩 (蒙德里安的梦想、最短Hamilton路径)

状态压缩DPAcWing 291.蒙德里安的梦想求把NM的棋盘分割成若干个12的的长方形,有多少种方案。例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数N和M。当输入用例N=0,M=0时,表示输入终止,且该用例无需处理。输出格式每个测试用例输出一个结果,每个结果占一行。数据范围1≤N,M≤11输入样例:1 21 31 42 22 32 42 114 110 0输出

2020-12-21 17:50:03 402 1

原创 动态规划:数位统计DP(计数问题)、树形DP(没有上司的舞会)

AcWing 338. 计数问题给定两个整数 a 和 b,求 a 和 b 之间的所有数字中0~9的出现次数。例如,a=1024,b=1032,则 a 和 b 之间共有9个数如下:1024 1025 1026 1027 1028 1029 1030 1031 1032其中‘0’出现10次,‘1’出现10次,‘2’出现7次,‘3’出现3次等等…输入格式输入包含多组测试数据。每组测试数据占一行,包含两个整数 a 和 b。当读入一行为0 0时,表示输入终止,且该行不作处理。输出格式每组数据输出一

2020-12-19 10:41:22 219

原创 动态规划:区间DP(石子合并) 、 计数类DP(整数划分)

区间DPAcWing 282. 石子合并设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为4+9+11=24;如果第二

2020-12-04 12:53:39 245

原创 动态规划:线性DP(数学三角形、最长上升子序列、最长公共子序列、最短编辑距离)

AcWing 898.数学三角形给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。输入格式第一行包含整数n,表示数字三角形的层数。接下来n行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。输出格式输出一个整数,表示最大的路径数字和。数据范围1≤n≤500,−10000≤三角形中的整数≤10000输入样例:573 88 1 02 7 4 44

2020-11-23 22:57:27 211

原创 数学知识:博弈论(Nim游戏,、台阶-Nim、集合-Nim、拆分-Nim)

AcWing 891. Nim游戏给定n堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。输入格式第一行包含整数n。第二行包含n个数字,其中第 i 个数字表示第 i 堆石子的数量。输出格式如果先手方必胜,则输出“Yes”。否则,输出“No”。数据范围1≤n≤105,1≤每堆石子数≤109输入样例:22 3输出样例:YesCode:先手必胜状态:某种操作后剩

2020-11-20 21:46:16 435

原创 动态规划:背包问题(01背包、完全背包、多重背包、分组背包)

AcWing2. 01背包问题有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000

2020-11-18 18:53:45 379

原创 数学知识:容斥原理(能被整除的数)

AcWing 890. 能被整除的数给定一个整数n和m个不同的质数p1,p2,…,pm。请你求出1~n中能被p1,p2,…,pm中的至少一个数整除的整数有多少个。输入格式第一行包含整数n和m。第二行包含m个质数。输出格式输出一个整数,表示满足条件的整数的个数。数据范围1≤m≤16,1≤n,pi≤109输入样例:10 22 3输出样例:7容斥原理:(图源百度)Code:#include <iostream>#include <algorithm>

2020-11-16 22:27:09 300

原创 数学知识:组合数(不同数据范围算法、满足条件的01序列)

AcWing 885. 求组合数I给定n组询问,每组询问给定两个整数a,b,请你输出C(a, b) mod (109+7)的值。输入格式第一行包含整数n。接下来n行,每行包含一组a和b。输出格式共n行,每行输出一个询问的解。数据范围1≤n≤10000,1≤b≤a≤2000输入样例:33 15 32 2输出样例:3101Code:#include <iostream>#include <algorithm>using namespace st

2020-11-15 11:35:52 465

原创 数学知识:高斯消元(求解线性和异或方程组)

AcWing 883. 高斯消元解线性方程组输入一个包含n个方程n个未知数的线性方程组。方程组中的系数为实数。求解这个方程组。下图为一个包含m个方程n个未知数的线性方程组示例:输入格式第一行包含整数n。接下来n行,每行包含n+1个实数,表示一个方程的n个系数以及等号右侧的常数。输出格式如果给定线性方程组存在唯一解,则输出共n行,其中第i行输出第i个未知数的解,结果保留两位小数。如果给定线性方程组存在无数解,则输出“Infinite group solutions”。如果给定线性方程组

2020-11-06 22:31:41 305

原创 数学知识:中国剩余定理(孙子定理)

ACWing 204. 表达整数的奇怪方式给定 2n 个整数a1,a2,…,an和m1,m2,…,mn,求一个最小的非负整数 x,满足∀i∈[1,n],x≡mi(mod ai)。输入格式第1 行包含整数 n。第 2…n+1行:每 i+1 行包含两个整数ai和mi,数之间用空格隔开。输出格式输出最小非负整数 x,如果 x 不存在,则输出 −1。如果存在 x,则数据保证 x 一定在64位整数范围内。数据范围1≤ai≤231−1,0≤mi<ai1≤n≤25输入样例:28 711

2020-11-05 22:09:42 315 1

原创 数学知识:扩展欧几里得算法(线性同余方程)

AcWing 877. 扩展欧几里得算法给定n对正整数ai,bi,对于每对数,求出一组xi,yi,使其满足ai∗xi+bi∗yi=gcd(ai,bi)。输入格式第一行包含整数n。接下来n行,每行包含两个整数ai,bi。输出格式输出共n行,对于每组ai,bi,求出一组满足条件的xi,yi,每组结果占一行。本题答案不唯一,输出任意满足条件的xi,yi均可。数据范围1≤n≤105,1≤ai,bi≤2∗109输入样例:24 68 18输出样例:-1 1-2 1Code:#inc

2020-11-02 22:57:05 299

原创 数学知识:快速幂(快速幂求逆元)

ACWing 875. 快速幂给定n组ai,bi,pi,对于每组数据,求出aibi mod pi的值。输入格式第一行包含整数n。接下来n行,每行包含三个整数ai,bi,pi。输出格式对于每组数据,输出一个结果,表示aibi mod pi的值。每个结果占一行。数据范围1≤n≤100000,1≤ai,bi,pi≤2∗109输入样例:23 2 54 3 9输出样例:41Code:#include <iostream>#include <algorithm&

2020-10-30 17:56:30 464

原创 数学知识:欧拉函数(筛法求欧拉函数)

欧拉函数欧拉函数 φ(n) 表示1~n中与n互质的数的个数873. 欧拉函数给定n个正整数ai,请你求出每个数的欧拉函数。欧拉函数的定义1 ~ N 中与 N 互质的数的个数被称为欧拉函数,记为ϕ(N)。若在算数基本定理中,N=p1a1p2a2…pmam,则:ϕ(N) = N∗(p1−1)/p1∗(p2−1)/p2∗…∗(pm−1)/pm输入格式第一行包含整数n。接下来n行,每行包含一个正整数ai。输出格式输出共n行,每行输出一个正整数ai的欧拉函数。数据范围1≤n≤100,1≤

2020-10-29 22:39:51 788 1

原创 数学知识:约数(试除法求约数、求约数个数和约数之和、最大公约数)

ACWing 869. 试除法求约数给定n个正整数ai,对于每个整数ai,请你按照从小到大的顺序输出它的所有约数。输入格式第一行包含整数n。接下来n行,每行包含一个整数ai。输出格式输出共n行,其中第 i 行输出第 i 个整数ai的所有约数。数据范围1≤n≤100,2≤ai≤2∗109输入样例:268输出样例:1 2 3 61 2 4 8试除法优化:约数成对出现,枚举一对中较小者即可。Code:#include <iostream>#include &l

2020-10-28 23:02:10 1310

原创 数学知识:质数(质数的判定、分解质因数、筛质数)

质数在大于1的整数中,如果只包含1和她本身这两个约数,那么这个整数被称为质数。866. 试除法判定质数给定n个正整数ai,判定每个数是否是质数。输入格式第一行包含整数n。接下来n行,每行包含一个正整数ai。输出格式共n行,其中第 i 行输出第 i 个正整数ai是否为质数,是则输出“Yes”,否则输出“No”。数据范围1≤n≤100,1≤ai≤2∗109输入样例:226输出样例:YesNo试除法的优化:由于某个数的约数是成对出现的,当枚举时,可以枚举一对约数中较小的,这

2020-10-27 23:11:57 658

原创 染色法判定二分图&匈牙利算法求二分图最大匹配

AcWing 860. 染色法判定二分图给定一个n个点m条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数n和m。接下来m行,每行包含两个整数u和v,表示点u和点v之间存在一条边。输出格式如果给定图是二分图,则输出“Yes”,否则输出“No”。数据范围1≤n,m≤105输入样例:4 41 31 42 32 4输出样例:Yes算法思路:当且仅当图中不含奇数环,这样的图被称为二分图。由于二分图不存在奇数环,则染色过程一定没有矛盾,即

2020-10-17 18:23:42 313

原创 Prim算法和Kruskal算法求最小生成树

AcWing 858. Prim算法求最小生成树给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。由V中的全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。输入格式第一行包含两个整数n和m。接下来m行,每行包含三个整数u

2020-10-15 12:54:45 1318

原创 最短路径(四)Floyd算法(多源汇最短路)

AcWing 854. Floyd求最短路给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。数据保证图中不存在负权回路。输入格式第一行包含三个整数n,m,k接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。接下来k行,每行包含两个整数x,y,表示询问点x到点y的最短距离。输出格式共k行,每行输出一个整数,表示询问的

2020-10-13 22:05:47 273

原创 搜索与图论洛谷习题(拓扑排序和最短路径)

拓扑排序P6145[USACO20FEB]Timeline GP1983 车站分级最短路径P5837

2020-10-11 11:21:25 611

原创 最短路径(三)SPFA算法(负权)

AcWing 851. spfa求最短路给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。数据保证不存在负权回路。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出”impossible”。数据范围1≤n,m≤105,图中涉及边长绝对值均不

2020-10-01 22:23:00 608

原创 最短路径(二)Bellman_Ford(负权)

AcWing 853. 有边数限制的最短路给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出从1号点到n号点的最多经过k条边的最短距离,如果无法从1号点走到n号点,输出impossible。注意:图中可能 存在负权回路 。输入格式第一行包含三个整数n,m,k。接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示从1号点到n号点的最多经过k条边的最短距离。如果不存在满足条件的路径,则输出“impossib

2020-09-27 23:01:39 228

原创 最短路径(一)Dijkstra算法(单源最短路且无负权边)

Acwing 849.Dijkstra求最短路 I给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。输出格式输出一个整数,表示1号点到n号点的最短距离。如果路径不存在,则输出-1。数据范围1≤n≤500,1≤m≤105,图中涉及边长均不超过10000。输入样例:3 31 .

2020-09-27 20:30:05 637

原创 树与图的深度、广度优先遍历以及拓扑排序

树与图的深度优先遍历846. 树的重心给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。输入格式第一行包含整数n,表示树的结点数。接下来n-1行,每行包含两个整数a和b,表示点a和点b之间存在一条边。输出格式输出一个整数m,表示重心的所有的子树中最大的子树的结点数目。数据范围1≤n≤105输入

2020-08-27 22:52:28 353

原创 DFS、BFS算法及运用

842.排列数字给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1Code:#include <iostream>#include <cstdio>using namespace std;const int

2020-08-26 12:57:57 255

原创 离散化、KMP和单调栈队列洛谷习题

离散化算法模板:(来自 AcWing)vector alls; // 存储所有待离散化的值sort(alls.begin(), alls.end()); // 将所有值排序alls.erase(unique(alls.begin(), alls.end()), alls.end()); // 去掉重复元素// 二分求出x对应的离散化的值int find(int x) // 找到第一个大于等于x的位置{int l = 0, r = alls.size() - 1;while (l < r

2020-08-13 17:30:07 673

原创 数据结构:哈希表(模拟散列表和字符串哈希)

1.模拟散列表题目要求:维护一个集合,支持如下几种操作:“I x”,插入一个数x;“Q x”,询问数x是否在集合中出现过;现在要进行N次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数N,表示操作数量。接下来N行,每行包含一个操作指令,操作指令为”I x”,”Q x”中的一种。输出格式对于每个询问指令“Q x”,输出一个询问结果,如果x在集合中出现过,则输出“Yes”,否则输出“No”。每个结果占一行。数据范围1≤N≤105−109≤x≤109拉链法算法思想:拉链法存

2020-07-30 21:04:42 188

原创 数据结构:堆(堆排序和模拟堆)

1.堆排序题目要求:输入一个长度为n的整数数列,从小到大输出前m小的数。输入格式第一行包含整数n和m。第二行包含n个整数,表示整数数列。输出格式共一行,包含m个整数,表示整数数列中前m小的数。数据范围1≤m≤n≤10^5,1≤数列中元素≤10^9输入样例:5 34 5 1 3 2输出样例:1 2 3算法的基本思想:按完全二叉树存放数据,则数据中x的左二子为2x,右儿子为2x+1的关系,利用down(向下移动)、up(向上移动)函数实现题目要求。求最小值: heap[1];

2020-07-29 20:57:11 218

原创 数据结构:并查集(合并集合、连通块中点的数量、食物链)

并查集主要功能:将两个集合合并、询问两个元素是否在一个集合里基本原理:每个集合用一棵树表示,树根编号即集合的编号。 每个节点存储它的父节点(p[x]表示x的父节点)判断树根:if(p[x] == x)求x的集合编号:while(p[x] != x) x = p[x];(优化路段压缩)合并两个集合:px是x的集合编号,py是y的集合编号, p[x] = y1.合并集合的题目要求:一共有n个数,编号是1~n,最开始每个数各自在一个集合中。现在要进行m个操作,操作共有两种:“M a b”,将

2020-07-28 22:36:20 523

原创 数据结构:Trie(Trie字符串统计、最大异或对)

1.Trie字符串统计的题目要求:维护一个字符串集合,支持两种操作:“I x”向集合中插入一个字符串x;“Q x”询问一个字符串在集合中出现了多少次。共有N个操作,输入的字符串总长度不超过 105,字符串仅包含小写英文字母。输入格式第一行包含整数N,表示操作数。接下来N行,每行包含一个操作指令,指令为”I x”或”Q x”中的一种。输出格式对于每个询问指令”Q x”,都要输出一个整数作为结果,表示x在集合中出现的次数。每个结果占一行。数据范围1≤N≤2∗10^4输入样例:5I

2020-07-26 19:03:24 171

原创 数据结构:模拟栈和队列及运用

1.模拟栈实现一个栈,栈初始为空,支持四种操作:(1) “push x” – 向栈顶插入一个数x;(2) “pop” – 从栈顶弹出一个数;(3) “empty” – 判断栈是否为空;(4) “query” – 查询栈顶元素。现在要对栈进行M个操作,其中的每个操作3和操作4都要输出相应的结果。输入格式第一行包含整数M,表示操作次数。接下来M行,每行包含一个操作命令,操作命令为”push x”,”pop”,”empty”,”query”中的一种。输出格式对于每个”empty”和”quer

2020-07-23 09:30:07 515

原创 数据结构:单链表与双链表

1.单链表的题目要求:实现一个单链表,链表初始为空,支持三种操作:(1) 向链表头插入一个数;(2) 删除第k个插入的数后面的数;(3) 在第k个插入的数后插入一个数现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的数,第2个插入的数,…第n个插入的数。输入格式第一行包含整数M,表示操作次数。接下来M行,每行包含一个操作命令,操作命令可能

2020-07-20 15:39:55 401

原创 位运算、离散化和区间合并

1.二进制中1的个数题目要求:给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。输入格式第一行包含整数n。第二行包含n个整数,表示整个数列。输出格式共一行,包含n个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中1的个数。数据范围1≤n≤100000,0≤数列中元素的值≤109输入样例:51 2 3 4 5输出样例:1 1 2 1 2位运算的两个基本算法:1.求n的第k位数字: n >> k & 12.返回x的最后一位

2020-07-17 14:19:33 182

原创 双指针模板及运用

1.最长连续不重复序列的题目要求:给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复数字的连续子序列的长度。数据范围1≤n≤100000输入样例:51 2 2 3 5输出样例:3双指针算法的基本模板:for(int i = 0, j = 0; i < n; i ++){while(j <= i

2020-07-15 16:07:53 456

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除