![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
AcWing蓝桥杯辅导
备战蓝桥杯的刷题记录
MokylinJay
Hello World!
展开
-
788. 逆序对的数量
原题链接#include<cstdio>#include<iostream>#include<algorithm>using namespace std;/*note:在归并排序中逆序对(x, y)有三种情况 <1>x, y 属于 [l, mid] <2>x, y 属于 [mid+1, r] <3>x, y 分别属于 [l, mid] 和 [mid+1, r]对于前两种情况不必特殊处理,在递归过程原创 2021-03-25 11:41:30 · 79 阅读 · 0 评论 -
1231. 航班时间
原题链接#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;/*飞行时间的计算:设起飞时间是S,到达时间是E,单程飞行时间是X,时差是T。从A到B:S1+X+T=E1从B到A:S1+X-T=E2整理两式得:2X=(E1-S1) + (E2-S1),答案就是X。可见,并不需要计算时差T,因为一去一回,互相抵消了原创 2021-03-25 10:52:25 · 107 阅读 · 0 评论 -
1245. 特别数的和
原题链接#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int main(){ int n; scanf("%d", &n); int res = 0; // 记变量i遍历[1, n]每个数,将i的每一位拆出来与2、0、1、9比对,含有其中一个则累加至res for (原创 2021-03-25 10:10:46 · 65 阅读 · 0 评论 -
787. 归并排序
原题链接#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int maxn = 100010;int n;int a[maxn], tmp[maxn];void merger_sort(int l, int r){ // 递归边界,即递归到单独一个数 if (l >= r){原创 2021-03-23 11:54:03 · 44 阅读 · 0 评论 -
466. 回文日期
原题链接#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check_valid(int date){ int year = date / 10000; int原创 2021-03-23 11:31:09 · 49 阅读 · 0 评论 -
895. 最长上升子序列
原题链接#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int maxn = 1010;int n, res = 0;int a[maxn], f[maxn];// f[]数组:以第i个数结尾的最长上升子序列的长度int main(){ cin >> n; for (原创 2021-03-23 10:35:51 · 50 阅读 · 0 评论 -
795. 前缀和
原题链接#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int maxn = 100005;int a[maxn], sum[maxn] = {0};// 前缀和计算思路:// 计算每一项的前缀项和// 令res = sum[r] - sum[l-1]计算区间[l, r]的和int ma原创 2021-03-11 11:38:46 · 50 阅读 · 0 评论 -
790. 数的三次方根
原题链接法一使用二分法确定浮点数的三次方根#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;int main(){ double n, mid; scanf("%lf", &n); double l = -10000; double原创 2021-03-11 11:05:09 · 140 阅读 · 0 评论 -
789. 数的范围
原题链接二分详解#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int nums[100005];// 二分查找,返回第一个大于等于k值的元素的位置int lowerBoundL(int l, int r, int k){ int mid; while (l < r){原创 2021-03-10 16:24:34 · 51 阅读 · 0 评论 -
1208. 翻硬币
原题链接#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn = 110;int n;char state[maxn]; // 用于存储题目给出的初始状态char target[maxn]; // 用于存储题目给出的目标状态// 翻转单枚硬币void turn(int i){原创 2021-03-10 13:35:15 · 47 阅读 · 0 评论 -
116. 飞行员兄弟
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>using namespace std;typedef pair<int, int> pii;const int maxn = 5;char state[maxn][maxn]; // 存储题目给出的矩阵vector<pii> ans原创 2021-03-10 13:34:14 · 56 阅读 · 0 评论 -
1209. 带分数
#include<cstdio>#include<cstring>#include<algorithm>#include<cstring>using namespace std;const int maxn = 10;int target; // 题目给出的数int nums[maxn]; // 保存1~9,九个数的全排列结果int visited[maxn] = {0}; // 标记1~9,某个数是否被访问过int cnt; // 记录原创 2021-03-10 13:33:37 · 82 阅读 · 0 评论 -
93. 递归实现组合型枚举
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn = 30;int n, m;int position[maxn];// pos标识m个空中的当前位置,index标识在n个数中遍历的起始位置void dfs(int pos, int index){ // 若将剩余的n-i原创 2021-03-10 13:32:58 · 137 阅读 · 0 评论 -
95. 费解的开关
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int maxn = 6;char state[maxn][maxn]; // 存储游戏状态的矩阵,使用char类型方便一次输入一行char backup[maxn][maxn]; // 用于备份游戏状态int dx[5] = {-1, 0, 1, 0原创 2021-03-10 13:32:28 · 62 阅读 · 0 评论 -
717. 简单斐波那契
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int maxn = 50;int n;int nums[maxn]; // 存储数列int main(){ cin>>n; nums[1] = 0; // 将前两项的值直接赋予 nums[2] = 1;原创 2021-03-10 13:31:53 · 51 阅读 · 0 评论 -
94. 递归实现排列型枚举
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxn = 10;int n;int position[maxn]; // 数组position记录当前位置存放的数int visited[maxn]; // 数组visited标识当前数是否被访问过,0为未访问状态,1为已被访问// i原创 2021-03-10 13:31:18 · 88 阅读 · 0 评论 -
92. 递归实现指数型枚举
#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int maxn = 16;int n;int hashTable[maxn] = {0}; // 对每个数都有两种状态,-1代表未选择,1代表选择// 参数index代表当前传入的数[1,15]void dfs(int index){ if (index > n){原创 2021-03-10 13:30:05 · 74 阅读 · 0 评论