蓝桥杯 常用(常考)算法 模板大全 富含比赛技巧 得分方法 您所在的位置:网站首页 蓝桥杯考试方式 蓝桥杯 常用(常考)算法 模板大全 富含比赛技巧 得分方法

蓝桥杯 常用(常考)算法 模板大全 富含比赛技巧 得分方法

2024-01-21 14:43| 来源: 网络整理| 查看: 265

2022年4月9日又是新一届蓝桥杯大赛,再次,根据往年蓝桥杯考题我整理了算法模板,一来用于复习巩固,二来有需要的小伙伴们可自取,同时预知小伙伴们取得好成绩。 1:判断闰年

bool isLeaf(int x){ return (x % 400 == 0) || (x % 4 == 0 && x % 100 != 0) ; }

2:计算从xx年xx月xx日 ------ xx年xx月xx日 一共经历了多少天

int end_year , end_month , end_day ; int count_day(int year , int month , int day){ int ans = 0 ; int mon[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; while(1){ if(end_year==year && end_month == month && end_day == day){ break ; } day++; if(isLeaf(year) && month==2){ if(day>mon[month]+1){ month++; day=1; } }else{ if(day>mon[month]){ month++; day=1; } } if(month>12){ month=1; year++; } ans++; } return ans; }

3:欧拉筛选素数

const int N = 999999 ; int vis[N] , prim[N] ; int cnt = 0; // 素数的个数 for(int i = 2 ; i vis[i * prim[j]] = 1 ; if(i % prim[j] == 0 ) vis[i] = 1 ; break ; } }

4:计算gcd。

// 使用 __gcd(int a, int b) 函数 int a = 3 , b = 9 ; cout dp[j] = max(dp[j] , dp[j - a[i]] + w[i]) ; // 背包容量还剩下j的容纳的最大价值 } }

6:快速幂运算

const int mod = 1e9 + 7 ; // (a的b次方对mod取模) int ksm(int a, int b){ int res = 1 ; while(b){ if(b&1) res = res % mod * a % mod ; a = a % mod * a % mod ; b >>= 1 ; } return res ; }

7:全排列实现 (1): 递归

const int N = 1e5 + 7 ; // (a的b次方对mod取模) int a[N] , n , vis[N]; void s(int pos){ if(pos == n + 1){ for(int i = 1 ; i if(vis[i] == 0){ a[pos] = i ; vis[i] = 1 ; s(pos + 1) ; vis[i] = 0 ; } } } s(1) ;

(2) : 函数 next_permutation

cin >> n ; for(int i = 1 ; i for(int i = 1 ; i a[0][0] = 1 ; for(int i = 1 ; i a[i][j] = a[i - 1][j] + a[i - 1][j - 1]; } } }

9:并查集

void init(){ for(int i = 0 ; i if(x != p[x]) p[x] = find(p[x]) ; else return x ; }

一:蓝桥杯偏向于思维,算法较少。(根据往年经验,dp + 搜索 + 数论 + 枚举 就是所有知识点 )

二:时间复杂度过高,也是可以把代码写上去,得到一部分分数。

三:对于特殊值一定要优先考虑,可获得一部分分数。

四:没有思路的题,直接暴力枚举,可以获得一部分分数。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有