赞
踩
获奖情况:
思维、模拟、图论(最小生成树、并查集、最短路径(spfa、floyd))、数论(最大公约数/最小公倍数、分解质因子、约数定理、欧拉筛)、搜索(暴力、dfs、bfs)、动态规划(背包类、最长上升/下降子序列、最长公共子序列)->(通过暴力求解)、二分(二分查找、二分答案)
String类、Set类、Map类、Queue类、Stack类、Math类、Arrays类Sort方法(熟记)、自定义类(排序优先级)
C++组同学可以对应到C++的这些函数
数论
1.最大公约数/最小公倍数(省赛/国赛 化简3/9-> 1/3) 熟记
static int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
2.分解质因子(省赛/国赛)
国赛C题
3.约数定理(省赛/国赛)
算术基本定理 求一个数的约数个数
算术基本定理:
唯一分解定理 分解素因数:n=(p1^k1)* (p2^k2)…(pn*kn).(分解方式唯一)
n的约数个数为cnt(n)=(1+k1)(1+k2)…*(1+kn).
4.欧拉筛(O(nlogn)级别快速求质数)(常用)
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int maxn = 1e5 + 5; int prime[maxn]; bool vis[maxn]; void sieve(int n) { int cnt = 0; for(int i = 2; i <= n; i++) { if(!vis[i]) //不是目前找到的素数的倍数 prime[cnt++] = i; //找到素数 for(int j = 0; j < cnt && i * prime[j] <= n; j++) { vis[i * prime[j]] = true; //找到的素数的倍数不访问 if(i % prime[j] == 0) break; //关键!!!! } } } int main() { memset(vis, false, sizeof vis); int n; cin >> n; sieve(n); int cnt = 0; for(int i = 2; i <= n; i++) { if(!vis[i]) { cnt++; cout << i << " "; if(cnt % 10 == 0) cout << endl; } } return 0; }
因为蓝桥杯是按点得分的,所以我们即使不能AC,也要尽可能的去暴力拿分。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。