acwing题库
acwing题库
suxiaorui
孤独与我 随风相伴
展开
-
acwing 93. 递归实现组合型枚举
93. 递归实现组合型枚举从1∼n这n个整数中随机选出m个,输出所有可能的选择方案。输入格式两个整数n,m在同一行用空格隔开。输出格式按照从小到大的顺序输出所有方案,每行1个。首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如1 3 5 7排在1 3 6 8前面)。数据范围n>0,0≤m≤n,n+(n−m)≤25输入样例:5 3输出样例:1...原创 2021-10-29 18:52:44 · 241 阅读 · 0 评论 -
acwing 92. 递归实现指数型枚举
92. 递归实现指数型枚举从1∼n这n个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数n。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤15输入样例:3输出样例:322 311 31 21 2 3程序代码:#include <iostr...原创 2021-10-29 18:47:46 · 257 阅读 · 0 评论 -
acwing 1208. 翻硬币
1208. 翻硬币小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两个硬币叫做一步操作。输入格式两行等长的字符串,分别表示初始状态和要达到的目标状态。输出格原创 2021-10-28 19:57:57 · 223 阅读 · 0 评论 -
acwing——875.快速幂
875.快速幂给定nn组ai,bi,piai,bi,pi,对于每组数据,求出abiimodpiaibimodpi的值。输入格式第一行包含整数nn。接下来nn行,每行包含三个整数ai,bi,piai,bi,pi。输出格式对于每组数据,输出一个结果,表示abiimodpiaibimodpi的值。每个结果占一行。数据范围1≤n≤1000001≤n≤100000,1≤ai,bi,pi≤2×1091≤ai,bi,pi≤2×109输入样例:23 2...原创 2021-10-28 19:17:35 · 232 阅读 · 0 评论 -
acwing——844. 走迷宫
acwing——844. 走迷宫给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角(n, m)处,至少需要移动多少次。数据保证(1, 1)处和(n, m)处的数字为0,且一定至少存在一条通路。输入格式第一行包含两个整数n和m。接下来n行,每行包含m个整数(0或1),表示完整的二维数组迷宫。原创 2020-08-06 19:05:45 · 1836 阅读 · 0 评论 -
acwing——836. 合并集合
836. 合并集合一共有n个数,编号是1~n,最开始每个数各自在一个集合中。现在要进行m个操作,操作共有两种:“M a b”,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;“Q a b”,询问编号为a和b的两个数是否在同一个集合中;输入格式第一行输入整数n和m。接下来m行,每行包含一个操作指令,指令为“M a b”或“Q a b”中的一种。输出格式对于每个询问指令”Q a b”,都要输出一个结果,如果a和b在同一集合内,则输出“Yes”,否则输出“No原创 2020-07-20 22:24:31 · 529 阅读 · 0 评论 -
acwing——835. Trie字符串统计
835. Trie字符串统计维护一个字符串集合,支持两种操作:“I x”向集合中插入一个字符串x;“Q x”询问一个字符串在集合中出现了多少次。共有N个操作,输入的字符串总长度不超过 105,字符串仅包含小写英文字母。输入格式第一行包含整数N,表示操作数。接下来N行,每行包含一个操作指令,指令为”I x”或”Q x”中的一种。输出格式对于每个询问指令”Q x”,都要输出一个整数作为结果,表示x在集合中出现的次数。每个结果占一行。数据范围1≤N≤2∗104输入样例:5I abc原创 2020-07-20 21:55:40 · 489 阅读 · 0 评论 -
acwing——799. 最长连续不重复子序列
799. 最长连续不重复子序列给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复数字的连续子序列的长度。数据范围1≤n≤100000输入样例:51 2 2 3 5输出样例:3解题思路:双指针算法。i 为块指针,j 为慢指针,j 的位置定义为 i 对应的最长不重复序列的 j 的位置,因为不重复,i 和 j 元素都原创 2020-05-19 21:03:24 · 3464 阅读 · 0 评论 -
acwing——800. 数组元素的目标和
800. 数组元素的目标和给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i] + B[j] = x的数对(i, j)。数据保证有唯一解。输入格式第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。第二行包含n个整数,表示数组A。第三行包含m个整数,表示数组B。输出格式共一行,包含两个整数 i 和 j。数据范围数组长度不超过100000。同一数组内元素各不相同。1≤数组元素≤109输入样例:4 5 61 2 4 73原创 2020-05-19 20:28:13 · 542 阅读 · 0 评论 -
acwing——798. 差分矩阵
798. 差分矩阵输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1, y1, x2, y2, c,其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每...原创 2020-05-07 17:17:15 · 721 阅读 · 0 评论 -
acwing——797. 差分
797. 差分输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列。接下来m行,每行包含三个整数l,r,c,表示一个操作。输出格式共一行,包含n个整数,表示最终序列。数据范围1≤n,...原创 2020-05-07 16:51:16 · 1048 阅读 · 0 评论 -
acwing——796. 子矩阵的和
796. 子矩阵的和输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数x1, y1, x2, y2,表示一组询问。输出格式共q行,每行输出...原创 2020-05-05 23:29:43 · 541 阅读 · 0 评论 -
acwing——795. 前缀和
795. 前缀和输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。输出格式共m行,每行输出一个询问的结果。数据范围1≤l≤r≤n,1≤n,m≤100000,−1000≤...原创 2020-05-05 22:50:48 · 513 阅读 · 0 评论 -
acwing——69. 数组中数值和下标相等的元素
69. 数组中数值和下标相等的元素假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请编程实现一个函数找出数组中任意一个数值等于其下标的元素。例如,在数组[-3, -1, 1, 3, 5]中,数字3和它的下标相等。样例输入:[-3, -1, 1, 3, 5]输出:3注意:如果不存在,则返回-1。解题思路:直接二分即可。程序代码:class Solution {publ...原创 2020-04-30 23:44:41 · 242 阅读 · 0 评论 -
acwing——790. 数的三次方根
790. 数的三次方根给定一个浮点数n,求它的三次方根。输入格式共一行,包含一个浮点数n。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留6位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.000000解题思路:这个题浮点数二分,套用模板即可。二分模板链接注意这里是保留6位小数,所以这里取 r - l > 1e-8...原创 2020-04-29 22:09:55 · 292 阅读 · 0 评论 -
acwing——789. 数的范围
789. 数的范围给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~10000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包...原创 2020-04-29 22:05:05 · 301 阅读 · 0 评论 -
acwing——二分模板
二分模板二分模板一共有两个,分别适用于不同情况。算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l = r时,我们就找到了目标值。版本1当我们将区间 [l, r] 划分成 [l, mid] 和 [mid + 1, r] 时,其更新操作是 r = mid 或者 l = mid + 1,计算 mid 时不需要加 1 。int bsearch_1(int l, int ...原创 2020-04-28 22:39:08 · 829 阅读 · 0 评论 -
acwing——826. 单链表
826. 单链表实现一个单链表,链表初始为空,支持三种操作:(1) 向链表头插入一个数;(2) 删除第k个插入的数后面的数;(3) 在第k个插入的数后插入一个数现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的数,第2个插入的数,…第...原创 2020-03-26 23:47:06 · 1309 阅读 · 0 评论 -
acwing——842. 排列数字
842. 排列数字给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1解题思路:dfs遍历,详细看代码解析。程序代码#incl...原创 2020-03-19 21:05:56 · 526 阅读 · 0 评论 -
acwing——822. 走方格
822. 走方格给定一个n*m的方格阵,沿着方格的边线走,从左上角(0,0)开始,每次只能往右或者往下走一个单位距离,问走到右下角(n,m)一共有多少种不同的走法。输入格式共一行,包含两个整数n和m。输出格式共一行,包含一个整数,表示走法数量。数据范围1≤n,m≤101≤n,m≤10输入样例:2 3输出样例:10解题思路1:动态规划,这个题和Leetcode—— 62.不...原创 2020-03-19 20:13:21 · 667 阅读 · 0 评论 -
acwing——771. 字符串中最长的连续出现的字符
771. 字符串中最长的连续出现的字符求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和tab),如果这样的字符不止一个,则输出第一个。输入格式第一行输入整数N,表示测试数据的组数。每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过200。输出格式共一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开。输入样例...原创 2020-03-17 23:51:22 · 452 阅读 · 0 评论 -
acwing——770. 单词替换
770. 单词替换输入一个字符串,以回车结束(字符串长度不超过100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入格式输入共3行。第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度不超过100);第3行是a将被替换的单词b(长度不超过100)。输出格式...原创 2020-03-17 23:40:01 · 343 阅读 · 0 评论 -
acwing——788. 逆序对的数量
788. 逆序对的数量给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤1...原创 2020-03-15 12:48:52 · 1342 阅读 · 1 评论 -
acwing——756. 蛇形矩阵(螺旋矩阵)
756. 蛇形矩阵输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数n和m。输出格式输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。数据范围1≤n,m≤1001≤n,m≤100输入样例:3 3输出样例:1 2 38 9 47 ...原创 2020-03-14 11:49:45 · 1743 阅读 · 0 评论 -
acwing——755. 平方矩阵 III
755. 平方矩阵 III输入整数N,输出一个N阶的二维数组M。这个N阶二维数组满足M[i][j] =2i+j2i+j。具体形式可参考样例。输入格式输入包含多行,每行包含一个整数N。当输入行为N=0时,表示输入结束,且该行无需作任何处理。输出格式对于每个输入整数N,输出一个满足要求的N阶二维数组。每个数组占N行,每行包含N个用空格隔开的整数。每个数组输出完...原创 2020-03-13 21:07:42 · 669 阅读 · 0 评论 -
acwing——754. 平方矩阵 II
754. 平方矩阵 II输入整数N,输出一个N阶的二维数组。数组的形式参照样例。输入格式输入包含多行,每行包含一个整数N。当输入行为N=0时,表示输入结束,且该行无需作任何处理。输出格式对于每个输入整数N,输出一个满足要求的N阶二维数组。每个数组占N行,每行包含N个用空格隔开的整数。每个数组输出完毕后,输出一个空行。数据范围0≤N≤1000≤N≤100...原创 2020-03-13 20:52:44 · 936 阅读 · 0 评论 -
acwing——753. 平方矩阵 I
753. 平方矩阵 I输入整数N,输出一个N阶的回字形二维数组。数组的最外层为1,次外层为2,以此类推。输入格式输入包含多行,每行包含一个整数N。当输入行为N=0时,表示输入结束,且该行无需作任何处理。输出格式对于每个输入整数N,输出一个满足要求的N阶二维数组。每个数组占N行,每行包含N个用空格隔开的整数。每个数组输出完毕后,输出一个空行。数据范围0≤N...原创 2020-03-13 20:38:32 · 720 阅读 · 0 评论 -
acwing——727. 菱形
727. 菱形输入一个奇数n,输出一个由‘*’构成的n阶实心菱形。输入格式一个奇数n。输出格式输出一个由‘*’构成的n阶实心菱形。具体格式参照输出样例。数据范围1≤n≤991≤n≤99输入样例:5输出样例: * *** ***** *** * 程序代码1:#include<iostream>using...原创 2020-03-13 00:02:42 · 840 阅读 · 0 评论 -
acwing——726. 质数
726. 质数一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除则称该数为质数。例如7就是一个质数,因为它只能被1和7整除。现在,给定你N个大于1的自然数,请你依次判断这些数是否是质数。输入格式第一行包含整数N,表示共有N个测试数据。接下来N行,每行包含一个自然数X。输出格式每个测试用例输出一个结果,每个结果占一行。如果测试数据是质数,则输出“X i...原创 2020-03-12 23:44:14 · 332 阅读 · 0 评论 -
acwing——725. 完全数
725. 完全数一个整数,除了本身以外的其他所有约数的和如果等于该数,那么我们就称这个整数为完全数。例如,6就是一个完全数,因为它的除了本身以外的其他约数的和为 1+2+3 = 6。现在,给定你N个整数,请你依次判断这些数是否是完全数。输入格式第一行包含整数N,表示共有N个测试用例。接下来N行,每行包含一个需要你进行判断的整数X。输出格式每个测试用例输出一个结果,每...原创 2020-03-12 23:36:38 · 773 阅读 · 0 评论 -
acwing——869. 试除法求约数
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解题思路:直接从1开始遍历,如果 i ...原创 2020-03-12 23:31:56 · 622 阅读 · 0 评论 -
acwing——785. 快速排序
快速排序给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53...原创 2020-03-08 09:40:07 · 655 阅读 · 0 评论 -
acwing——787. 归并排序
归并排序给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53...原创 2020-03-08 20:58:59 · 331 阅读 · 0 评论 -
acwing——786. 第k个数
第k个数给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列的第k小的数是多少。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整数数列。输出格式输出一个整数,表示数列的第k小数。数据范围1≤n≤1000001≤n≤100000,1≤k≤n1≤k≤n输入样例:5 32 4 1 5...原创 2020-03-08 19:43:26 · 546 阅读 · 0 评论 -
acwing——656.钞票和硬币
钞票和硬币读取一个带有两个小数位的浮点数,这代表货币价值。在此之后,将该值分解为多种钞票与硬币的和,每种面值的钞票和硬币使用数量不限,要求使用的钞票和硬币的数量尽可能少。钞票的面值是100,50,20,10,5,2。硬币的面值是1,0.50,0.25,0.10,0.05和0.01。输入格式输入一个浮点数N。输出格式参照输出样例,输出每种面值的钞票和硬币的需求数量。...原创 2020-03-10 00:23:04 · 953 阅读 · 0 评论