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 · 100 阅读 · 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 · 128 阅读 · 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 · 90 阅读 · 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 · 68 阅读 · 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 · 61 阅读 · 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 · 68 阅读 · 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 · 69 阅读 · 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 · 170 阅读 · 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 · 67 阅读 · 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 · 67 阅读 · 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 · 72 阅读 · 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 · 121 阅读 · 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 · 155 阅读 · 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 · 79 阅读 · 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 · 71 阅读 · 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 · 105 阅读 · 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 · 93 阅读 · 0 评论