自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Acwing区间合并

例如:[1,3]和 [2,6] 可以合并为一个区间 [1,6]。给定 n 个区间 [li,ri],要求合并所有有交集的区间。共一行,包含一个整数,表示合并区间完成后的区间个数。接下来 n 行,每行包含两个整数 l 和 r。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。第一行包含整数 n。

2022-10-16 23:19:08 217 1

原创 Acwing区间和

接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。共 m 行,每行输出一个询问中所求的区间内数字和。再接下来 m 行,每行包含两个整数 l 和 r。接下来 n 行,每行包含两个整数 x 和 c。第一行包含两个整数 n 和 m。

2022-10-12 22:44:25 184

原创 35.数的范围(二分)

给定一个按照升序排列的长度为 n 的整数数组,以及q 个查询。对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回 。输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。输出格式共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回 。数据范围1≤n≤1000001≤q≤1000

2022-06-26 18:59:43 161

原创 34.筛选素数三种方法(c++)

1.暴力模拟:时间复杂度O(n*sqrt(n)) #include<iostream>using namespace std;int ss(int n){ if(n==1||n==0) return 0; for(int i=2;i*i<=n;i++) if(n%i==0) return 0; return 1;}int main(){ for(int i=0;i<=100;i++) if(ss(i)) cout&

2022-04-03 19:44:51 1765

原创 33.关于sort函数的详细拓展

1.sort函数使用得引用 #include<algorithm>头文件;

2022-04-02 15:40:34 376

原创 32.判断日期的合法性(对于8位数的判断)

#include <iostream>using namespace std;bool isLeap(int y){ return (y%4==0&&y%100!=0)||(y%400==0);}bool check(int year,int month,int day)//判断是否为合法日期{ if(month>12||month==0) return false; if(day>31 ||day==0) return .

2022-04-01 14:08:44 762

原创 31.关于round函数四舍六入五成偶保留小数(c++)

1.基本用法:对于小数而言,round()函数仅仅保留到整数位,即仅仅对小数点后一位四舍五入;a=1.3579 round(a)=1;a=13.579 round(a)=14;2.round()函数原理:x=(int)(x+0.5)公式,故可以自己写出round()函数;#include<iostream>using namespace std;double round(double x){ return (int)(x+0.5);}3.保留小数用法:保留

2022-04-01 13:45:06 2701

原创 30.HDU 2089 不要62(数位DP入门)(c++)

Problem Description:杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。不吉利的数字为所有含有4或62的号码。例如:62315 73418 88914都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上

2022-03-31 13:56:32 200

原创 29.const修饰指针和常量

1.const 修饰指针——常量指针:const int *p=&a;常量指针:特点:指针的指向可以改变,指针指向的值不可以改变。 a=10;//先将a赋值为10; const int *p=&a; *p=20; //这个是错误的,因为指向的值不可以改变 p=&b;//这个是正确的,因为指针的指向可以改变,这个操作是将指针指向了b的地址2. const 修饰———...

2022-03-27 19:43:39 1370

原创 28.单调栈(c++详细注释带动图)

给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出−1。输入格式第一行包含整数 N,表示数列长度。第二行包含 N 个整数,表示整数数列。输出格式共一行,包含 N 个整数,其中第 ii 个数表示第 ii 个数的左边第一个比它小的数,如果不存在则输出 −1。数据范围1≤N≤1051≤数列中元素≤109输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2如图来自作者:Hasity链接:https://www.a...

2022-03-22 21:27:19 729

原创 27.模拟队列 (c++)

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

2022-03-22 17:21:40 325

原创 26.用数组模拟栈(c++)

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

2022-03-22 15:15:28 311

原创 25.合并集合(c++并查集)

一共有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在同一集合内,则输出...

2022-03-21 15:56:43 470

原创 24. 双链表(c++)详细注释

实现一个双链表,双链表初始为空,支持55种操作:在最左侧插入一个数; 在最右侧插入一个数; 将第k个插入的数删除; 在第k个插入的数左侧插入一个数; 在第k个插入的数右侧插入一个数现在要对该链表进行M次操作,进行完所有操作后,从左到右输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的数,第2个插入的数,…第n个插入的数。输入格式第一行包...

2022-03-21 14:42:57 214

原创 23.模拟散列表 (哈希表c++)拉链法+开放寻址法

维护一个集合,支持如下几种操作:I x,插入一个数x; Q x,询问数x是否在集合中出现过;现在要进行 N 次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数 N,表示操作数量。接下来 N 行,每行包含一个操作指令,操作指令为 I x,Q x 中的一种。输出格式对于每个询问指令Q x,输出一个询问结果,如果x在集合中出现过,则输出Yes,否则输出No。每个结果占一行。数据范围1≤N≤105−10 9≤x≤10 9输入样例:5I...

2022-03-18 22:14:45 295

原创 22. 单链表(c++)(idx,e[N],ne[N]的详细解释)

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

2022-03-18 21:00:50 1287

原创 21.Trie字符串统计(c++)

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

2022-03-15 21:11:00 257

原创 20.走迷宫(c++)bfs

给定一个 n×m的二维整数数组,用来表示一个迷宫,数组中只包含 0或 1,其中 0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角 (1,1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m)处,至少需要移动多少次。数据保证 (1,1)处和 (n,m)处的数字为 0,且一定至少存在一条通路。输入格式第一行包含两个整数 n 和 m。接下来 n 行,每行包含 m 个整数(0 或 1),表示完整的二维数组迷...

2022-03-13 11:17:45 1623

原创 19.皇后问题(c++)dfs

n−皇后问题是指将n个皇后放在n×n的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。现在给定整数n,请你输出所有的满足条件的棋子摆法。输入格式共一行,包含整数n。输出格式每个解决方案占n行,每行输出一个长度为n的字符串,用来表示完整的棋盘状态。其中.表示某一个位置的方格状态为空,Q表示某一个位置的方格上摆着皇后。每个方案输出完成后,输出一个空行。注意:行末不能有多余空格。输出方案的顺序任意,只要不重...

2022-03-12 17:47:50 452

原创 18.排列数字(c++)简单的dfs详解

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

2022-03-12 11:23:13 7731

原创 17.简单01背包问题(C++)详细解答

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

2022-03-08 20:25:23 367

原创 16.二分查找

给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回 -1 -1。输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。输出格式共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回 ...

2022-03-05 21:29:10 75

原创 15.逆序对的数量

给定一个长度为nn的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 ii 个和第 jj 个元素,如果满足 i<ji<j 且 a[i]>a[j]a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 nn,表示数列的长度。第二行包含 nn 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤1000001≤n≤100000,数列中的元素的取值范围[1,109][1,109]。...

2022-02-22 15:39:26 600

原创 14.二进制中1的个数和最后一位1的位置 (c++)包含lowbit 函数用法

给定一个长度为 n的数列,请你求出数列中每个数的二进制表示中 1的个数。输入格式第一行包含整数 n。第二行包含 n 个整数,表示整个数列。输出格式共一行,包含 n 个整数,其中的第 i个数表示数列中的第 i 个数的二进制表示中 1 的个数。数据范围1≤n≤100000, 0≤数列中元素的值≤10e9输入样例:第一种1.对于每个数字a,a&1得到了该数字的最后一位,之后将a右移一位,直到位0,就得到了1的个数第二种2.lowbit原理根据计算机负数表示的特点,如一个数字原码是100010

2022-02-08 16:20:21 1986

原创 13.判断子序列

给定一个长度为 nn 的整数序列 a1,a2,…,an 以及一个长度为 m 的整数序列 b1,b2,…,bm。请你判断 a序列是否为 b 序列的子序列。子序列指序列的一部分项按原有次序排列而得的序列,例如序列 {a1,a3,a5} 是序列 {a1,a2,a3,a4,a5} 的一个子序列。输入格式第一行包含两个整数 n,m。第二行包含n个整数,表示 a1,a2,…,an。第三行包含 m个整数,表示 b1,b2,…,bm。输出格式如果 a 序列是 b 序列的子序列,输出一行...

2022-02-08 13:52:09 728

原创 11.数组元素的目标和

给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。数组下标从 0 开始。请你求出满足A[i]+B[j]=x 的数对 (i,j)。数据保证有唯一解。输入格式第一行包含三个整数 n,m,x,分别表示 A 的长度,B 的长度以及目标值 x。第二行包含 n 个整数,表示数组 A。第三行包含 m 个整数,表示数组 B。输出格式共一行,包含两个整数 i 和 j。数据范围数组长度不超过 105。同一数组内元素各不相同。1≤数组元素≤109输入样例:输出样例:代码如下:...

2022-02-08 13:41:50 805

原创 10. 最长连续不重复子序列 (C++)

给定一个长度为nn的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数nn。第二行包含nn个整数(均在0∼1050∼105范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度#include<iostream>using namespace std;const int N=100010;int n;int a[N],s[N];int main(){ cin>&g......

2022-02-06 14:38:57 2120 4

原创 9.差分和差分矩阵(c++)

输入一个长度为 n 的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数 n 和 m。第二行包含 n 个整数,表示整数序列。接下来 m 行,每行包含三个整数 l,r,c,表示一个操作。输出格式共一行,包含 n 个整数,表示最终序数据范围1≤n,m≤1000001≤l≤r≤n,−1000≤c≤1000−1000≤整数序列中元素的值≤1000输入样例:输出样例:另外

2022-02-05 13:55:27 728

原创 8.子矩阵的和(c++)

代码如下:#include<iostream>using namespace std;const int N= 1010;//类似于C语言中的#define N 1010; int n,m,q;int a[N][N],s[N][N];//定义两个二维数组; int main(){ scanf("%d%d%d",&n,&m,&q); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%

2022-02-05 13:23:21 2427

原创 7.前缀和(C++)

输入一个长度为 n 的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l个数到第 r 个数的和。输入样例:输出样例:代码如下:

2022-01-30 16:48:46 937

原创 6.高精度除法(string C++)auto

给定两个非负整数(不含前导 0)A,B,请你计算 A/B 的商和余数。输入格式共两行,第一行包含整数 A,第二行包含整数 B。输出格式共两行,第一行输出所求的商,第二行输出所求余数。数据范围1≤A的长度≤1000001≤B≤10000B 一定不为 0输入样例:输出样例:代码附上:...

2022-01-29 14:26:16 570

原创 5.高精度乘法(Vector)

给定两个非负整数(不含前导 0) A 和 B,请你计算 A×B 的值。输入格式共两行,第一行包含整数A,第二行包含整数 B。输出格式共一行,包含 A×B 的值。数据范围1≤A的长度≤100000,0≤B≤10000236。

2022-01-29 13:56:49 942

原创 4.高精度减法(Vector)

给定两个正整数(不含前导 0),计算它们的差,计算结果可能为负数。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤105输入样例:输出样例:先看代码: vector:5.高精度乘法(Vector)_瘦出腹肌的JingLi的博客-CSDN博客思路1.定义存储数组。2.被减数和减数确认。由于减法可能出现负数。3.读入数据到数组中。注意保证被减数大于减数 倒序存放也就是个位放在数组下标为 0 的地方。4.从个位开始模拟竖式减法的过程,完成整个减法。5

2022-01-27 17:07:49 412

原创 3.高精度加法(使用C++的string实现高精度加法运算的实例代码)包含auto解决办法

给定两个正整数(不含前导 0),计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤100000输入样例:输出样例:先附加上代码:对于auto 编译器可能出现问题;解决办法在编译选项的的程序选项卡页面,在g++:项后面,在c++.exe后面添加-std=c++11。...

2022-01-21 14:19:24 538

原创 2.归并排序和求逆序对的数量(附加代码)

先上代码:#include<iostream>using namespace std;//C++头文件;const int N=1000010;// 类似于C语言中#define 1000010;int a[N],temp[N];//定义两个数组;void merge_sort(int a[],int l,int r){ if(l>=r) return; int mid=(l+r)/2; merge_sort(a,l,mid);merge_sort(a

2022-01-19 15:53:43 306

转载 gets,getline,getchar,getch在C++中的使用

在学习C++的过程中,经常会遇到输入输出的问题,以下总结一下下面几个函数的用法:1)、cin2)、cin.get()3)、cin.getline()4)、getline()5)、gets()1、cin>>  用法1:最基本,也是最常用的用法,输入一个数字:  #include <iostream>  using namespace std;  main ()  {  int a,b;  cin>>a>>b;  cout<&

2022-01-16 14:11:17 8180

原创 1.快速排序和快速选择排序

对于快速排序:首先定义一个函数quick_sort()通过这个函数来实现;先看代码#include<iostream>using namespace std;const int N=1000010;int a[N];void quick_sort(int a[],int l,int r){ if(l>=r) return; int x=a[(l+r)/2],i=l-1,j=r+1;//如果这里用x=a[l];会超时; while(i&lt......

2022-01-15 16:10:57 396

空空如也

空空如也

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

TA关注的人

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