算法
熬夜患者
啥也不会
展开
-
15.位运算
给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1 的个数。输入格式第一行包含整数 n。第二行包含 n 个整数,表示整个数列。输出格式共一行,包含 n 个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中 1 的个数。数据范围0≤数列中元素的值≤1091 1 2 1 2。原创 2022-11-14 22:25:56 · 73 阅读 · 0 评论 -
14.双指针算法
给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数 n。第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤1053。原创 2022-11-14 22:03:43 · 72 阅读 · 0 评论 -
13.差分矩阵
输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1) 和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整数 n,m,q。接下来 n 行,每行包含 m 个整数,表示整数矩阵。接下来 q 行,每行包含 5 个整数 x1,y1,x2,y2,c表示一个操作。输出格式。原创 2022-11-14 21:39:49 · 109 阅读 · 0 评论 -
12.差分
输入一个长度为 n 的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c表示将序列中 [l,r]之间的每个数加上 c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数 n 和 m。第二行包含 n 个整数,表示整数序列。接下来 m 行,每行包含三个整数 l,r,c表示一个操作。输出格式共一行,包含 n 个整数,表示最终序列。数据范围1≤l≤r≤n,−1000≤整数序列中元素的值≤1000。原创 2022-11-14 21:33:19 · 137 阅读 · 0 评论 -
11.二维前缀和
输入一个 n 行 m 列的整数矩阵,再输入 qq 个询问,每个询问包含四个整数 x1,y1,x2,y2表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数 n,m,q。接下来 n 行,每行包含 m 个整数,表示整数矩阵。接下来 q 行,每行包含四个整数 x1,y1,x2,y2表示一组询问。输出格式共 q 行,每行输出一个询问的结果。数据范围1≤x1≤x2≤n,1≤y1≤y2≤m,−1000≤矩阵内元素的值≤100017。原创 2022-11-14 20:47:10 · 347 阅读 · 0 评论 -
10.前缀和
输入一个长度为 n 的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。输入格式第一行包含两个整数 n 和 m。第二行包含 n 个整数,表示整数数列。接下来 m 行,每行包含两个整数 l 和 r,表示一个询问的区间范围。输出格式共 m 行,每行输出一个询问的结果。数据范围1≤l≤r≤n,−1000≤数列中元素的值≤10003610。原创 2022-11-14 20:14:48 · 177 阅读 · 0 评论 -
9.高精度除法
给定两个非负整数(不含前导 0)A,B,请你计算 A/B 的商和余数。输入格式共两行,第一行包含整数 A,第二行包含整数 B。输出格式共两行,第一行输出所求的商,第二行输出所求余数。数据范围1≤A的长度≤100000,1≤B≤10000,B 一定不为 0。7231。原创 2022-11-08 22:16:24 · 93 阅读 · 0 评论 -
8.高精度乘法
这里针对的是高精度*低精度的数,不是高精度*高精度!!!给定两个非负整数(不含前导 00) AA 和 BB,请你计算 A×BA×B 的值。输入格式共两行,第一行包含整数 AA,第二行包含整数 BB。输出格式共一行,包含 A×BA×B 的值。数据范围1≤A的长度≤1000001≤A的长度≤100000,236这里针对的是高精度*低精度的数,不是高精度*高精度!!!原创 2022-11-08 21:51:14 · 185 阅读 · 0 评论 -
7.高精度加法售后服务
这个取地址符号可能有的人发现了,不加的话运行也是对的,当然啦,但是不加取地址符号的话,在传入函数的时候,是copy一个相同的vector传入函数,浪费时间,所以要加入&直接用literate string直接从后往前也可以,但是这个是数学计算用字符进行运算就得避免不能忘了-‘0‘求值,而且高精度的题的值一般都很恶心。a[0]储存数组的长度,从a[1]开始存储数据也可以,只不过个人热爱c++的容器(手动狗头)高精度类的题不一定按照我给vector的写,我写的只是个人比较喜欢的,也可以用固定数组。原创 2022-11-08 21:42:38 · 288 阅读 · 0 评论 -
7.高精度减法
给定两个正整数(不含前导 00),计算它们的差,计算结果可能为负数。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤1051≤整数长度≤105321121此模板只针对两个正整数相减,不包含负数的情况。原创 2022-11-08 21:20:35 · 164 阅读 · 0 评论 -
6.高精度加法
给定两个正整数(不含前导 00),计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤1000001≤整数长度≤100000122335类似于小学学习加法的步骤,从低位开始加,所以输入按照string格式输入,但是要逆序放在数组中进行操作。原创 2022-11-08 20:55:26 · 124 阅读 · 0 评论 -
5.sort()排序(快排的升华)
sort()函数相信是所有c++程序员最喜欢的排序方式,啥二分,啥快排都是弟弟。调用头文件也可以调用万能头文件原创 2022-11-07 00:44:22 · 334 阅读 · 0 评论 -
4.浮点数二分
没找到例题,用开根号作为例子来讲。原创 2022-11-07 00:32:11 · 71 阅读 · 0 评论 -
3.整数二分
给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。对于每个查询,返回一个元素k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回-1 -1。输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。输出格式共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回-1 -1。数据范围。原创 2022-11-06 23:41:06 · 223 阅读 · 0 评论 -
2.归并排序
给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001 2 3 4 5。原创 2022-11-03 05:30:00 · 61 阅读 · 0 评论 -
1.快速排序
给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001 2 3 4 51.确定分割点(P[l] P[r] P[(l+r)/2] 随机,不做强制要求)2.调整范围 (分割点左边均小于等于分割点的值,分割点右边大于等于分割点的值)原创 2022-11-02 22:12:04 · 215 阅读 · 0 评论