蓝桥杯上分宝典(略微进阶篇)

        本篇主要是对于蓝桥杯中的基础题型,以及为什么蓝桥杯又会被叫做暴力杯的解释。

        一、排序

        排序算法几乎是必考的,但是每种排序的时间复杂度不同,如果遇到了,最好是能够熟练掌握一种快速的排序方法,如果是c++,则可以直接调用sort函数,具体是啥头文件我忘了,因为我一般直接用万能头文件#include <bits/stdc++.h>,如果是c语言,则没有sort函数,此时就需要使用快排,模板如下

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
const int N=1e7+2;
const int mod=1000000007;
using namespace std;
int a[N];
void quick(int l,int r){
	if(l>=r) return;
	int i=l,q=r,mid=(l+r)/2;
	while(i<=q){
		while(a[i]<a[mid]) i++;
		while(a[q]>a[mid]) q--;
		if(i<=q){
			swap(a[i],a[q]);
			i++;
			q--;
		}
	}
	quick(l,q);
	quick(i,r);
}
int main(){
	for(int i=1;i<=5;i++){
		scanf("%d",&a[i]);
	}
	quick(1,5);
	for(int i=1;i<=5;i++) printf("%d ",a[i]);
return 0;
}

这个模板我认为是较为容易背的,如果记不住的话可以使用冒泡排序,具体如下

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
const int N=1e7+2;
const int mod=1000000007;
using namespace std;
int a[N];
int main(){
	for(int i=1;i<=5;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=5;i++){
		for(int q=1;q<=5-i;q++){
			if(a[q]>a[q+1]){
				int t=a[q];
				a[q]=a[q+1];
				a[q+1]=t;
			}
		}
	}
	for(int i=1;i<=5;i++) printf("%d ",a[i]);
	return 0;
}

        但是时间复杂度为O(n^2),往往容易造成超时问题,也就会造成这道题的大体思路明了,但是因为排序超时,多少有点可惜。

        二、数据结构

        蓝桥杯对于数据结构的考查也是有的,如果说在考场上写一个模板多少有点困难,而且本末倒置,如果是c++,则可以直接调用stl库中的数据结构,而如果是c语言,则建议用数组进行模拟,具体如下

int q[N],ff,tt;//模拟队列
void push(int x){
    q[++tt]=x;
}
void pop(){
    q[ff++];
}


int s[N],tt;//模拟栈
void push(int x){
    s[++tt]=x;
}
void pop(){
    s[tt--];
}

int e[N],ne[N],idx,head;//模拟单链表
void inf(){//初始化单链表
    idx=0;
    head=-1;
}
void insert(int x){//头插
    e[idx]=x;
    ne[idx]=head;
    head=idx++;
}
void de(int x){//删除x
    for(int i=head;i!=-1;i=ne[i]){
        if(e[ne[i]]==x){
            ne[i]=ne[ne[i]];
            break;
        }

    }
}

        三、数字转置(对称数字)

        蓝桥杯常考的一个知识点,往往都是送分题,例如求对称年月日,比如20211202,2021年12月2日就是一个对称的,通常都有一种简单的方法,且不用栈,具体如下


int zhuan(int x){
    int w=0;
    while(x){
        w*=10;
        w+=x%10;
        x/=10;
    }
    return w;
}

        四、骗分宝典

        由于是oi赛制,所以就算不会也不要空题,起码把样例对拍一下,也就是说用if判断读入数据,然后进行输出,如果运气好,说不定能有一分,而且建议学习一下dfs,可以用来暴力搜索得答案,这也就是蓝桥杯叫暴力杯的原因之一,同时也是容易获奖的另外的原因。

        最后不建议做完填空就走,起码做一两道编程大题,因为首先,填空题不能骗分,对就是对,错就是错,而且填空题的难度不见得很低,有一年填空题就考了一个最短路和最大公因数的结合版,这就算是比较麻烦的一种了。而且一道填空一般五分,一道编程大题十分起步一般,两道填空全对才顶一个大题,而且大题也不见得都很难。有一些省一,比较厉害的,有人会只做后三道大题,因为全对的话就是稳省一,所以还是说重视一下编程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值