C/C++
白沐雨
这个作者很懒,什么都没留下…
展开
-
hash ACwing 840 - 模拟散列表(Hash)
维护一个集合,支持如下几种操作:“I x”,插入一个数x;“Q x”,询问数x是否在集合中出现过;现在要进行N次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数N,表示操作数量。接下来N行,每行包含一个操作指令,操作指令为”I x”,”Q x”中的一种。输出格式对于每个询问指令“Q x”,输出一个询问结果,如果x在集合中出现过,则输出“Yes”,否则输出“No”。每个结果占一行。数据范围1≤N≤105−109≤x≤109输入样例:5I 1I 2I 3Q 2Q原创 2020-08-20 23:34:20 · 150 阅读 · 0 评论 -
取反的数和原来的数的关系
背景在内存中数字并不是用源码来储存的而是补码而补码的由来 具体详情点这里补码的计算公式(按位取反)+000000001=它相反数的补码(11111111 - 一个数的补码)+00000001=它相反数的补码所以一个数的取反等于其相反数减一...原创 2020-08-09 21:23:46 · 501 阅读 · 0 评论 -
下标从1和0开始的kmp算法模板
acwingkmp题目描述给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模板串P在模式串S中多次作为子串出现。求出模板串P在模式串S中所有出现的位置的起始下标。输入格式第一行输入整数N,表示字符串P的长度。第二行输入字符串P。第三行输入整数M,表示字符串S的长度。第四行输入字符串M。输出格式共一行,输出所有出现位置的起始下标(下标从0开始计数),整数之间用空格隔开。数据范围1≤N≤10^41≤M≤10^5输入样例3aba5.原创 2020-08-09 21:06:47 · 1252 阅读 · 0 评论 -
数组模拟栈和队列模板
队列和栈都是一种数据结构栈是后进先出(可以比作电梯)队列先进先出 (比较排队买东西的队列)下面用数组模拟栈和队列*************************//栈 const int N=10010;int w[N] ,tt=0;//插入w[tt++]=x;//下标从0开始//弹出tt--;//判断是否为空if (tt>=0) not emptyelse empty*****************************//队列int q原创 2020-07-27 23:00:08 · 136 阅读 · 0 评论 -
数据的转换
C/C++不同类型的数据进行转换使用强制转换(type_name) expressionchar a='12';(int) a;//注意a本身数据类型没有变字符数字转int 数字'2'-'0';//char -'0'常用的算术转换常用的算术转换是隐式地把值强制转换为相同的类型。编译器首先执行整数提升,如果操作数类型不同,则它们会被转换为下列层次中出现的最高层次的类型:double m=12.0;int e=2;printf("%f",m/e);//数据被转换成double类型原创 2020-07-27 19:59:48 · 146 阅读 · 0 评论 -
常用的位运算
#include<iostream>using namespace std;const int N=10010;int n;int a[N],b[N];int main(){ int x=12; printf("%d",x>>1)//输出除以2 printf("%d",x>>3&1);//s输出第k位的二进制 printf(">>%d",x&(-x)); printf(">>>>%d",x&a原创 2020-07-26 23:08:49 · 143 阅读 · 0 评论 -
给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度。
给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复数字的连续子序列的长度。数据范围1≤n≤100000输入样例:51 2 2 3 5输出样例:3#include<iostream>using namespace std;const int N=10010;int n;int a[N],b[N];原创 2020-07-26 22:45:29 · 5006 阅读 · 0 评论 -
差分和二维差分
一维差分差分和前缀和是逆运算主要公式b[l]+=c;b[r+1]-=c;题目给出n个数,再给出m个询问,每个询问给出l,r,x,要求你在l到r上每一个值都加上x,输出加上c的数组#include<iostream>using namespace std;int N=1010;int n, m;int a[N], b[N];void insert(int l, int r, int c){ b[l] += c; b[r + 1] -= c;}in原创 2020-07-26 21:59:20 · 293 阅读 · 0 评论 -
前缀和 求子矩阵和
一维前缀和前缀和可以办o(n)的复杂度变为0(1)对于前缀和只要理解和记住公式就可以了s[i]=s[i-1]+a[i]//公式经典例题:求一段区间的和#include<iostream>using namespace std;const int N=10010;int n,m;int a[N],s[N];int main1()//一维前缀和 { scanf("%d %d",&n,&m); for (int i = 1; i <= n; i原创 2020-07-22 20:26:52 · 264 阅读 · 0 评论 -
自定义平方根函数
给定一个浮点数n,求它的三次方根。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留6位小数。输入格式共一行,包含一个浮点数n。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留6位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.000000#include<iostream>#include<cmath>using namespace std;double cube(double num原创 2020-07-16 23:39:12 · 757 阅读 · 0 评论 -
数的范围(归并排序)
给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~10000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回“-1 -1”。数据范围1≤n≤1000001≤原创 2020-07-16 22:29:02 · 204 阅读 · 0 评论 -
请你使用归并排序对这个数列按照从小到大进行排序。
请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000#include<stdio.h>#include<stdio.h>void merge(int num1[],int num2[],int start,int mid,int end )//进原创 2020-07-12 12:08:05 · 1663 阅读 · 0 评论 -
逆序排列数组,快速排序算法C/C++
快速排序是冒泡排序的升级版时间主要用在分区上缺点在于当数字全相同时就浪费时间实现从大到小排序排序函数//定义快速排序算法的函数void sort(int* a,int left,int right) { if(left>=right)//判读是否进行了一轮分区(同时作为递归的结束判断) { return ; } int i=left; int j=right; int key=a[left];//给关键数赋值//开始分区 while(i<j) { i.原创 2020-06-12 23:57:06 · 1286 阅读 · 0 评论 -
输入一行字符,分别统计出其中英文字母,空格,数字和其他字符数。
输入一行字符,分别统计出其中英文字母,空格,数字和其他字符数。#include<stdio.h>int main(){ int x=0,y=0,c=0,e=0;char m[100]; printf("please entry the str"); gets(m); char *p=m; while(*p++) { //比较空格数 if(*p==' ') { x+=1; } //字母数 else if(('A'原创 2020-06-10 20:33:09 · 778 阅读 · 0 评论 -
C/C++的文件操作
打开文件ILE*fp=fopen("<绝对路径>",“打开方式”) 方式:r,w a,rb 需要判断是否打开,打开失败return null做不到文件reason:没有权限 so on写文件按字符写入文件int fgetc(FILE *stream)fputc(int ,FILE)(写文件)int :需要写入的文件字符FILE:文件的指针returnsuccess 写入字符,defeat: return 1按行读写fgets(chara,int c,原创 2020-06-09 15:48:55 · 225 阅读 · 0 评论