当前位置: 首页 > news >正文

蓝桥杯考试总结汇总

一进考场设置devc快捷键

  1. 设置注释和取消注释快捷键
  2. 设置代码自动补全快捷键
  3. 开启devc调试功能,详细可以看怎么开调试功能https://blog.csdn.net/hz18790581821/article/details/78418648
  4. 比赛过程中,如果不相信自己是否做对,没有把握的,可以打印出过程来检验一下,在有些情况下是有用的。。。千万不能辛辛苦苦做了,居然因为最后一步错了!因为考场是不知道结果的,不能知道结果去验证靠近结果,而是要不断怀疑自己的结果是不是正确的!

注意事项

1、不要能用字符串直接输出的,就不要还用数组来判断,当数据量大的时候就会超时,明明都判断了,可以直接运行了,就不要多此一举放在数据里,因为它只有三个变量,又不是很多,所以完全可以各自单独列出来。

if(s[i] == "Mccree") cout<<"Genji";
else if(s[i] == "Hanzo") cout<<"Mccree";
else              cout<<"Hanzo";

错误示范

if(s[i]==des[0][0]) 	sa[i]=des[1][0];
else if(s[i]==des[0][1]) sa[i]=des[1][1];
else sa[i]=des[1][2];

sprintf()、memset()函数

用来格式化字符串,注意格式化的是字符数组
头文件#include< cstdio>

#include<iostream>
#include<cstdio>
using namespace std;
int main(){char s[15];sprintf(s, "%08d", 123);cout<<s<<endl;return 0;
}

sprintf(s, “%08d”, 123);可以使得字符串的输出格式为右对齐,以0补齐00000123

memset()函数:
参考学习链接:https://blog.csdn.net/qq_25406563/article/details/83303371?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3

memset(结构体/数组名 , 用于替换的ASCII码对应字符 , 前n个字符 );
memset(结构体/数组名 , "用于替换的字符“ , 前n个字符 );
函数解释:将s中的前n个字节用ch替换并且返回s
函数作用:在一段内存块中填充某一个给定的值,常用于较大的对结构体和数组的清零操作。

注意闰年

闰年判断方法
1.能被4整除而不能被100整除。
2.能被400整除。
平年是365,闰年是366天
闰年229天,平年228

有关日期的,题目很喜欢在2月份埋坑,要特别注意闰年平年

set容器、vector、map容器

构造set集合的主要目的是为了快速检索,使用set前,需要在程序头文件中包含声明“#include< set>”
它不会重复插入相同键值的元素,而采取忽略处理。
而且只要把元素放进set里面去,用for循环读取就可以按序读取
注意:初始化的方法,和输出的方式

//定义set容器,排序、避免冗余 set<string>e;for(set<string>::iterator it=e.begin();it!=e.end();it++) {cout<<"it: "<<*it<<endl;
//		cout<<*it<<endl;

另外,在买不到的糖果数的题目中也有用到set容器

if(s.find(i)==s.end()){//i不在set中,那么i就是答案cout<<i<<endl;break;//找到后跳出循环 }

stl容器set成员函数:find()–返回一个指向被查找到元素的迭代器

另外,在跳蚱蜢的题目中也有用到set容器

set<string> visited;//已经搜索过的局面
if(visited.count(s)==0)//如果没有搜索过这个局面{visited.insert(s);} 

stl容器set成员函数:count()返回集合中某个值元素的个数

set容器用 s.insert(temp);进行元素的插入

跟vector不一样,插入跟查找特定元素不一样

#include <algorithm>
vector<int> vec;
vec.push_back(1);        
vec.push_back(2);        
vector<int>::iterator ret;       ret = std::find(vec.begin(), vec.end(), 15);        if(ret == vec.end())            cout << "not found" << endl;        else            cout << "found it" << endl;

erase函数

https://blog.csdn.net/leo_csdn_/article/details/82221721

scanf()的好用处

scanf()在头文件#include< cstdio>里,作为有一定格式输入时更好用,如要输入02/03/04,

	int a[3],b[3];scanf("%d/%d/%d",&a[0],&a[1],&a[2]);

getline和cin对string的输入

getline(cin,string)读取一行以回车为结束,空格不会当成是结束的
但cin>>string;读取至空格或回车.
所以要每次读取一个单词时候用cin>>string,,即要把空格识别作为结束,所以用cin>>string。

常用的函数及其头文件

  1. strlen()函数,在< cstring>头文件里
  2. CCTYPE函数系列包含了判断是否是字符等函数
  3. sqrt()求平方根函数,atan2()函数可根据x和y的值计算角度。
  4. #include< algorithm> 里面有sort()排序函数
  5. min函数,比较两个数值的大小,返回他们的之间最小值。头文件#include < algorithm>。如 num = min(currentNum, num);
  6. 编程填空题可用的万能头文件#include<bits/stdc++.h>
  7. 绝对值函数 fabs()的头文件 #include< cmath>
  8. 全排列函数 next_permutation(a,a+10)头文件#include < algorithm>
  9. do{ 放置内容…… }while(next_permutation(a,a+10));
    虽然有10个元素,最后一个的下标也是a[9],但是区间的话是[a,a+10),所以还是以元素个数做为加多少的结尾
  10. gcd函数
    gcd(x,y);最大公约数函数
    int、long long类型都可以,需要注意的是两个类型必须要相同,还有不能用浮点型,当然手写gcd函数也是可以的,它头文件是algorithm。

while (cin >> income)问题

double income;
while (cin >> income)

当输入的不是数字的时候,压根不会进入while循环,因为不满足cin >> income的条件。cin>>被用于测试表达式中将根据输入是否成功,被转换为bool值true或false。cin>>将知道输入的如字符那些表示数字,从而将其留在队列中,并返回一个将被转换为false的值,这时while循环将会终止。

#include<iostream>
#include<string>
#include<sstream>
//新学的头文件using namespace std;
int main(){string s;while(getline(cin,s)){int sum =0,x;int count = 0;int i = 0;stringstream ss(s);//复制字符串s到stringstream ss while(ss>>x){sum+=x;cout<<"i++: "<<i++<<endl;}cout<<"count++: "<<count++<<endl;cout<<"sum: "<<sum<<endl;}return 0;
} 

getline (cin, stri)返回cin,cin再转换为bool值true(读入成功)或者false(读入失败),所以此次循环结束的就是按下ctrl+z

要注意类型以及溢出等问题!

有时候不注意int跟double,或者忽略了隐式类型转换,即使声明是double,但也可能被隐式转换为int了

double cal (int x,int y){double ave;
//	注意类型转换double,不然x和y会以int 类型进行计算,计算的ave的结果也是int ,不过有2.0跟2的差别 
//	ave = 2.0 * double(x * y) / (x + y);ave = 2.0* x * y / (x + y);
//	当乘以的是2的时候是整数,乘以是2.0的时候结果是浮点数 
//	ave = 2* x * y / (x + y);return ave;
}

包括一些声明的是long long类型,但是相乘的两个数是long类型,这样子long long就被隐式转换为long了就会溢出!!

STL容器学习

STL容器学习

  • 比如在错误的票据这道题里用了vector模板类,(注意头文件和声明)因为可以不用事先声明大小,而只需要一直把元素v.push_back(x);进去就好,还可以利用sort(v.begin(),v.end());快速的对容器的元素进行排序。还可以通过v.size()知道容器元素数量,然后通过for(int i=1;i<v.size();i++)遍历容器
  • 队列的学习和使用:学习链接
#include<iostream> 
#include<queue>using namespace std;int main(){queue<string> q;
//	入队,如例:q.push(x); 将x 接到队列的末端。q.push("zhangsan");q.push("lisi");q.push("wangwu");
//	判断队列空,如例:q.empty(),当队列空时,返回true。while(!q.empty()){
//		访问队首元素,如例:q.front(),即最早被压入队列的元素。cout<<q.front()<<endl;
//		出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。q.pop();}
}

string字符串

查找字串的函数 str.find(subStr1) != string::npos 如果找到了返回string::npos ,subStr1需要是字符串

#include <cstring>//头文件
string str = "abc";
string subStr1 = "bc";
string subStr2 = "cd";
str.find(subStr1); //返回1,第一个匹配的下标
str.find(subStr2); 
//当str.find(subStr1) != string::npos时,说明是子串
//当str.find(subStr1) == string::npos时,说明不是子串
if(str.find(subStr1) != string::npos){cout<<"subStr1 是 str 的子串"<<endl;
}

stringstream

可以方便地实现了字符串与数字的互相转化

#include <sstream>//头文件
string i2s(int i){stringstream ss;string s;//把数字i存到ss中ss<<i;//把ss中有的转换为字符串sss>>s;return s;
}

涉及到多位数字相乘之类的

要把一个多位数看出多个位的单位数组成,用

for(int i=1;i<=9;i++)for(int j=0;j<=9;j++)for(int k=0;k<=9;k++)for(int l=0;l<=9;l++){

而不是

for(int x=1;x<=999;x++)for(int y=1;y<=999;y++)

比如在排他平方数里也是这样子。
有几位数就会用到几个for循环,比如四位数,用四个for循环,找出四个数,之后再用*1000,*100,*10之类的变成几千几百几十的数

编程题技巧

  1. 认真读题,认真分析题目,不要害怕
  2. 编程大题如果不会,千万不要放弃!因为有很多测试用例,可以暴力保证一些用例的测试是对的!这样子能赚一点分,能赚一点是一点!要有多拿一分是一分的想法,不能放弃掉!
http://www.lryc.cn/news/9967.html

相关文章:

  • 备战蓝桥杯【二维前缀和】
  • 阿里P6细谈Python简易接口自动化测试框架设计与实现,我直呼内行
  • 数据库存储
  • hive学习笔记
  • 7大体系防作弊,牛客放大招了!严肃笔试客户端上线!
  • R语言广义可加模型在空气环境污染方面的应用(1)
  • CSDN 编程竞赛二十九期题解
  • 基于STM32采用CS创世 SD NAND(贴片SD卡)完成FATFS文件系统移植与测试
  • K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示
  • map和set介绍及其底层模拟实现
  • 实现一个比ant功能更丰富的Modal组件
  • 2023美赛F题思路数据代码分享
  • Flutter如何与Native(Android)进行交互
  • 数据库主从复制和读写分离
  • Java并发编程面试题——线程安全(原子性、可见性、有序性)
  • DialogFragment内存泄露问题能不能一次性改好
  • java学习--多线程
  • 90后阿里P7技术专家晒出工资单:狠补了这个,真香...
  • 2023美赛C题:Wordle筛选算法
  • SpringBoot 集成 Kafka
  • OpenCV 图像金字塔算子
  • 【自学Linux】Linux一切皆文件
  • CUDA C++扩展的详细描述
  • 为什么重写equals必须重写hashCode
  • < 每日小技巧:N个很棒的 Vue 开发技巧, 持续记录ing >
  • 数据结构与算法之二分查找分而治之思想
  • 训练自己的中文word2vec(词向量)--skip-gram方法
  • ubuntu系统环境配置和常用软件安装
  • 【1139. 最大的以 1 为边界的正方形】
  • windows11安装sqlserver2022报错