自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++题解 KMP字符串

C++题解 KMP字符串题目描述给定一个模式串 SSS,以及一个模板串 PPP,所有字符串中只包含大小写英文字母以及阿拉伯数字。模板串 PPP 在模式串 SSS 中多次作为子串出现。求出模板串 PPP 在模式串 SSS 中所有出现的位置的起始下标。输入格式第一行输入整数 NNN,表示字符串 PPP 的长度。第二行输入字符串 PPP。第三行输入整数 MMM,表示字符串 SSS 的长度。第四行输入字符串 SSS。输出格式共一行,输出所有出现位置的起始下标(下标从 0 开始计数),整数之间用

2021-11-13 02:06:35 906

原创 C++题解 最长连续不重复子序列

C++题解 最长连续不重复子序列题目描述给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数 n。第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤1051≤n≤1051≤n≤105输入样例:51 2 2 3 5输出样例:3思想暴力算法暴力算法显然是最容易考虑的,我们使用两个循环 i , j 对整个数列进行遍历,很

2021-10-31 17:37:44 818

原创 C++题解 二进制中1的个数

C++题解 二进制中1的个数题目描述给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1 的个数。输入格式第一行包含整数 n。第二行包含 n 个整数,表示整个数列。输出格式共一行,包含 n 个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中 1 的个数。数据范围1≤n≤100000,0≤数列中元素的值≤1091≤n≤100000,\\0≤数列中元素的值≤1091≤n≤100000,0≤数列中元素的值≤109输入样例:51 2 3 4 5输出样例:1

2021-10-31 17:18:12 621

原创 C++题解 差分矩阵

C++题解 差分矩阵题目描述输入一个 nn 行 mm 列的整数矩阵,再输入 qq 个操作,每个操作包含五个整数 x1,y1,x2,y2,cx_1,y_1,x_2,y_2,cx1​,y1​,x2​,y2​,c ,其中 (x1,y1)和(x2,y2)(x_1,y_1) 和 (x_2,y_2)(x1​,y1​)和(x2​,y2​) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 ccc。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整数 n,m,qn,m

2021-10-30 21:13:55 341

原创 C++题解 高精度除法

C++题解 高精度除法题目描述输入格式共两行,第一行包含整数 AA,第二行包含整数 BB。输出格式共两行,第一行输出所求的商,第二行输出所求余数。数据范围1≤A的长度≤100000,1≤B≤10000,B一定不为01≤A的长度≤100000,\\1≤B≤10000,\\B 一定不为 01≤A的长度≤100000,1≤B≤10000,B一定不为0输入样例:72输出样例:31思路对于该题目的实现,我们使用一个数组进行除法的模拟,为了方便此处使用vector。数据的输入

2021-10-30 19:20:15 777

原创 C++题解 高精度乘法

C++题解 高精度乘法题目描述给定两个非负整数(不含前导 00) AA 和 BB,请你计算 A×BA×B 的值。输入格式共两行,第一行包含整数 AA,第二行包含整数 BB。输出格式共一行,包含 A×BA×B 的值。数据范围1≤A的长度≤1000001≤A的长度≤100000,0≤B≤100000≤B≤10000输入样例:23输出样例:6思路对于该题目的实现,我们使用两个数组进行乘法的模拟,为了方便此处使用vector。数据的输入可以看到数字的长度远远超过了long l

2021-10-30 17:44:57 268

原创 C简单问题 找鞍点

找鞍点思想鞍点的定义鞍点即为:在该行 最大 ,且在该列 最小 的一个元素。求解的分步进行一、得到最大点我们不妨定义一个数组 max[n] 用来保存每一行的 最大值,同时定义一个数组 pos[n] 对该 最大值 的所在列进行存储。二、得到最小点我们不妨定义一个数组 min[n] 用来保存每一列的 最小值。三、进行匹配我们用一个for循环对max数组进行遍历,遍历的同时,我们也能通过pos取出max数组里当前元素所在列的最小值min,那么事情就变得简单了:当 max[i] == min[ p

2021-10-30 17:30:00 225

原创 C++题解 高精度减法

C++题解 高精度减法题目描述给定两个正整数(不含前导 00),计算它们的差,计算结果可能为负数。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤1051≤整数长度≤10^51≤整数长度≤105输入样例:3211输出样例:21思路对于该题目的实现,我们使用两个数组进行加法的模拟,为了方便此处使用vector。数据的输入可以看到数字的长度远远超过了long long的需要,我们需要使用字符串进行数据的读入。注意,为了运算方便,应

2021-10-30 16:19:42 461

原创 C++题解 高精度加法

C++题解 高精度加法题目分析给定两个正整数(不含前导 0),计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤100000输入样例:1223输出样例:35思路对于该题目的实现,我们使用两个数组进行加法的模拟,为了方便此处使用vector。数据的输入可以看到数字的长度远远超过了long long的需要,我们需要使用字符串进行数据的读入。注意,为了运算方便,应该从字符串的末尾将原数字倒序的进行读入,想一想为什么。模

2021-10-30 15:13:21 226

原创 C++题解 归并排序

题目描述给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5思路归并中的 “归”归并排序实际上是运用分治法的一个问题,把一个大问题分为两个小问题,然后我们

2021-10-28 16:28:06 233

原创 C++题解 快速排序

题目描述给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5思路对于快速排序,我们选定一个基准数base,为了方便,可以取数组中间的数base = a[ l

2021-10-28 16:27:16 218

原创 C++题解 子矩阵的和

题目描述输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数 n,m,q。接下来 n 行,每行包含 m 个整数,表示整数矩阵。接下来 q 行,每行包含四个整数 x1,y1,x2,y2,表示一组询问。输出格式共 q 行,每行输出一个询问的结果。数据范围1≤n,m≤1000,1≤n,m≤1000,1≤n,m≤1000,1≤q≤200000,

2021-10-28 16:26:31 786

原创 C++题解 第K个数

题目描述给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整数数列。输出格式输出一个整数,表示数列的第 k 小数。数据范围1≤n≤100000,1≤k≤n输入样例:5 32 4 1 5 3输出样例:3思考对于最快的排序算法,我们仍然需要O(nlogn)的时间进行完全排序,如果题目时间限制较紧,先排序后输出或许会导

2021-10-28 16:26:00 703

原创 C++题解 差分

差分差分是前缀和的逆运算,通过差分,我们可以实现O(1)的,对数列指定区间进行加减操作差分数组:首先给定一个·原数组a·:a[1], a[2], a[3],,,,,, a[n];然后我们构造一个·数组b· :b[1] ,b[2] , b[3],,,,,, b[i];使得 a[i] = b[1] + b[2 ]+ b[3] +,,,,,, + b[i]也就是说,a数组是b数组的前缀和数组,反过来我们把b数组叫做a数组的差分数组。换句话说,每一个a[i]都是b数组中从头开始的一段区间和。如何构造差

2021-10-28 16:25:23 288

原创 C++题解 前缀和

前缀和什么是前缀和原数组: a[1], a[2], a[3], a[4], a[5], …, a[n]前缀和 Si为数组的前 i项和前缀和: S[i] = a[1] + a[2] + a[3] + … + a[i]注意: 前缀和的下标一定要从 1开始, 避免进行下标的转换样例s[0] = 0s[1] = a[1]s[2] = a[1] + a[2]C++ 代码//// Created by Owwkmidream on 2021/10/27.//#include "iost

2021-10-28 16:23:16 408

空空如也

空空如也

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

TA关注的人

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