自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 帅的STL学习笔记

关于 STL(标准模板库)Standard Template Library,缩写:STLSTL 是 个 一C++ 软件库, 包含算法(里面algorithms)、容 器(containers)、函数(functions)、迭代器(iterators)字符串(string)创建string类型变量string s;直接创建一个空的(大小为0)的string类型变量sstring s=*char; 创建string时直接用字符串内容对其赋值,注意字符串要用双引号""strings(intn,c

2021-01-22 13:13:09 149 1

原创 单调队列(洛谷p1886)模板题

例题:洛谷p1886滑动窗口有一个长为 n的序列 a,以及一个大小为 k的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。例如:The array is [1,3,-1,-3,5,3,6,7], and k = 3。单调队列有两个性质1.队列中的元素其对应在原来的列表中的顺序必须是单调递增的。2.队列中元素的大小必须是单调递*(增/减/甚至是自定义也可以)单调队列与普通队列不一样的地方就在于单调队列既可以从队首出队,也可以从队尾出队。分析以最小值

2021-02-13 20:10:51 737 3

原创 二分模板

找大于等于给定数的第一个位置 (满足某个条件的第一个数)找小于等于给定数的最后一个数 (满足某个条件的最后一个数)/ 判断条件很复杂时用check函数,否则if后直接写条件即可bool check(int mid) {…return …;}二分模板说明循环必须是l < rif判断条件看是不是不满足条件, 然后修改上下界若是r = mid - 1, 则前面mid 语句要加1(记住与r平衡就行)出循环一定是l == r,所以l和r用哪个都可以有的时候如果是单调的,l = mid

2021-01-17 22:46:15 123

原创 位运算详解

顾名思义,位运算符作用于位,是逐位进行操作。最常用的有:与 &、或 |、异或 ^。对于基本的位运算,我们有一个常用的口诀:1.与&:遇0则02.或 |:遇1则13.异或 ^ :相同为0,相异为1.下面是常用的C++位运算符:假设变量 A=60,变量 B=13测试代码#include<bits/stdc++.h>using namespace std;int a=60,b=13;int main(){cout<<(bitset<8>

2021-01-15 21:16:38 5807

原创 栈的应用 -洛谷P1449

栈特点——先进后出本题可以使用栈来解决遇到数字就入栈遇到符号就出栈、并运算再把运算后的结果入栈#include<bits/stdc++.h>using namespace std;stackq;string c;int main(){cin>>c;int a=0,b=0;int i,j;for(int k=0;k<c.length();k++){if(c[k]’@’) break;else if(c[k]<=‘9’&&c[

2020-12-10 01:59:51 254

原创 前缀和与差分

前缀和/*** 一维前缀和** @a 表示原数组* @sum 表示a数组的一维前缀和*/const int maxn = 1e5 + 10;int a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};int sum[maxn];void oneDimen(int num) {//num表示数组a的长度sum[0] = a[0];for (int i = 1; i < num; i++) {sum[i] = sum[i - 1] + a[i];}}s[

2020-11-20 21:45:55 250

原创 拼数

设有 n 个正整数 将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。1、strcat是用来连接bai两个字符串的,原型是char *strcat(char *dest,char *src),作用是把dusrc所指字符串添加到dest结尾zhi处dao(覆盖dest结尾处的’\0’)并添加’\0’。2、strcpy是用来把字符串拷贝到指定的地方的,原型是char *strcpy(char *dest,const char *src),作用是把从src地址开始且含有NULL结束符的字符串复制到以de

2020-11-07 13:23:17 437

原创 一元三次方程求解

因为区间很大,所以可以二分。三个答案都在[-100,100]范围内,两个根的差的绝对值>=1,保证了每一个大小为1的区间里至多有1个解,也就是说当区间的两个端点的函数值异号时区间内一定有一个解,同号时一定没有解。那么我们可以枚举互相不重叠的每一个长度为1的区间,在区间内进行二分查找。代码1#includedouble a,b,c,d;double fc(double x){return axxx+bxx+cx+d;}int main(){double l,r,m,x1,x2;i

2020-11-06 22:32:58 542

原创 洛谷p1308统计单词数

如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。#include #include using namespace std;void convert(string &p);int main(void){string key;string data;int flag = 0;int demo = -

2020-11-05 19:44:13 130

原创 查重 排序

查重 排序输入格式输入有两行,第1行为1个正整数,表示所生成的随机数的个数N第2行有N个用空格隔开的正整数,为所产生的随机数。输出格式输出也是两行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。set,顾名思义,就是数学上的集合——每个元素最多只出现一次,并且set中的元素已经从小到大排好序。头文件:#include < set > //用bits的童鞋请忽略常用操作 :**begin()    返回set容

2020-11-03 01:29:58 386

原创 高精加

#include<bits/stdc++.h>using namespace std;const int N=1e6+10;vector add(vector &A, vector &B){if (A.size() < B.size()) return add(B, A);vector<int> C;int t = 0;//进位 for (int i = 0; i < A.size(); i ++ ){ t += A[i];

2020-10-30 01:08:42 106

原创 P1320 压缩技术

注意学习字符串C 库函数 :char *strcat(char *dest, const char *src) :把 src 所指向的字符串追加到 dest 所指向的字符串的结尾strcpy(s1,s2):strcpy函数的意思是把字符串s2拷贝到s1中,连同字符串结束标志也一同拷贝。如果s2=“china”,那么s1中存放的是china\0。在cout<<s1时,结果是china。strlen(str):测试字符串的实际字符长度,不含字符串结束标志。sizeof是个运算符,它的

2020-10-28 13:33:36 284

原创 0,1交替输出的方阵

0,1交替输出的方阵注意white(cin>>)连续输入;Key=!Key;的用法;双重循环换行#include#include//事实上没有用using namespace std;int main(){int n;cin>>n;//矩阵长宽int Map[nn+10];//设置一个登记用的数组,其实nn就够了,+10是为了防爆int Full;//输入要用的bool Key=false;//判断当前输入的是1的数量还是0的数量,初始为0int p=0

2020-10-28 13:02:26 298 1

原创 杨辉三角(三角阵的输入)

#include<bits/stdc++.h>using namespace std;int a[21][21];int main(){int n;cin>>n;for(int i=1;i<=n;i++)a[i][1]=a[i][i]=1;for(int i=1;i<=n;i++)for(int j=2;j<i;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];for(int i=1;i<=n;i++){for(i

2020-10-28 02:18:43 263

原创 前缀和

最近有 n个不爽的事,每句话都有一个正整数刺痛值(心理承受力极差)。爱与愁大神想知道连续 m 个刺痛值的和的最小值是多少,但是由于业务繁忙,爱与愁大神只好请你编个程序告诉他。输入格式第一行有两个用空格隔开的整数,分别代表 n 和 m。第 2 到第 (n + 1) 行,每行一个整数,第 (i+1) 行的整数 ai​代表第 i 件事的刺痛值 ai。输出格式输出一行一个整数,表示连续 m 个刺痛值的和的最小值是多少。#include<bits/stdc++.h>using namesp

2020-10-21 00:04:05 136

原创 快速幂

#include<bits/stdc++.h>using namespace std;long long pow(long long a, long long n, long long mode){long long sum = 1;a = a % mode;if(n0&&mode1)sum=0;while (n > 0) { if (n % 2 == 1) //判断是否是奇数,是奇数的话将多出来的数事先乘如sum sum = (sum * a) %

2020-10-19 02:21:54 56

原创 质中质(线性筛)

如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。#include<bits/stdc++.h>#define M 10000000using namespace std;bool flag[M+1];int prime[M+1];int main(){int cnt=0,n;cin>>n;for(i

2020-10-18 17:46:32 91

原创 容斥原理

给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。#include #include using namespace std;long long n,ans;int main(){scanf("%lld",&n);ans=n/2+n/3+n/5+n/7;ans-=n/6+n/10+n/14+n/15+n/21+n/35;ans+=n/30+n/42+n/70+n/105;ans-=n/210;ans=n-ans.

2020-10-18 01:29:50 76

原创 训练赛-蚂蚁

n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,我们知道它距离竿子左端的距离xi,但不知道它当前的朝向。请计算各种情况当中,所有蚂蚁落下竿子所需的最短时间和最长时间。#include #include #include using namespace std;int n,l,mxans,mians,i,a;int main(){scanf("%d%d",&n,&amp

2020-10-18 01:08:06 171

原创 并查集例题

一共有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-10-12 01:37:41 121

原创 K图形

多组输入,一个整数(2~20)针对每行输入,输出用“”组成的K形,每个“”后面有一个空格。例如输入2#include <stdio.h>#include using namespace std;int main(){int a,i,j,k,l;while(~scanf("%d",&a)){for(i=0;i<a+1;i++){for(j=i;j<a+1;j++){printf("* “);}for(k=i;k>

2020-10-10 02:09:23 204

原创 小鱼的数字游戏

项目场景:洛谷p1427问题描述:一行内输入一串整数,以 0 结束,以空格间隔。一行内倒着输出这一串整数,以空格间隔。原因分析:解决方案:#include<stdio.h>int c;int main(){int a[100];int i;for(i=0;;i++){scanf("%d",&a[i]);if(a[i]==0)break;c=i;}int ans;for(ans=c;ans>=0;ans–)printf("%d ",a[an

2020-10-05 21:12:58 278

原创 买铅笔

#include<bits/stdc++.h>#include<stdio.h>#includeusing namespace std;int ans=1e7;int main(){int n; int a,b,c;scanf("%d",&n);for(int i=0;i<3;i++){ scanf("%d%d",&a,&b); c=n/a; if(n%a!=0) c++; ans=min(ans,c*b);}p

2020-10-03 00:46:11 180

原创 陶陶摘苹果

#include<stdio.h>int main(){int a[10];for(int i=1;i<=10;i++) scanf("%d",&a[i]); int h; scanf("%d",&h); int ans=0; for(int i=1;i<=10;i++){ if(h+30>=a[i]) ans++; }printf("%d",ans); return 0;}

2020-10-02 01:44:03 526

原创 数字反转

#include<stdio.h>int main(){int n;scanf("%d",&n);if(n<0){n=-n;printf("-");}while(n%100){n=n/10;}去掉低位所有0,要用循环whileint sum=0;if(n0){sum=0;}while(n!=0)可以写成while(n),表示n不为0时执行{int k=n%10;sum=sum*10+k;n=n/10;}printf("%d",sum);

2020-10-02 01:18:05 398

原创 计数问题

#include<stdio.h>int main(){int b,n,x;scanf("%d%d",&n,&x);for(int i=1;i<=n;i++){int d=i;while(d!=0){int c=d%10;d=d/10;if(c==x){b++;}}}printf("%d",b);return 0; }

2020-10-02 01:16:35 252

原创 金字塔

#include <stdio.h>int main(){int i, j, k,n;scanf("%d", &n);for (i=0; i<n;i++){for (j=0;j<=n-i;j++)printf(" “);for (k=0;k<2i+1;k++)printf("”);printf("\n");}return 0;}

2020-10-01 12:21:15 77

空空如也

空空如也

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

TA关注的人

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