![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
蓝桥杯
QingQingDE23
这个作者很懒,什么都没留下…
展开
-
第十二届蓝桥杯 C++ B组 题解
目录A 卡片B 直线C 货物摆放题库地址A 卡片简单思维#include<bits/stdc++.h>using namespace std;const int INF = 1e9;int mp[15];bool flag;int ans;void get(int x){ while(x){ int a = x % 10; mp[a] ++ ; if(mp[a] == 2021){ flag = true; break; } .原创 2022-04-07 09:09:53 · 587 阅读 · 0 评论 -
AcWing 1235 付账问题 题解(蓝桥杯)
贪心题,比较有思维难度,代码实现比较简单,应该注意逐渐推出结论的过程#include<bits/stdc++.h>using namespace std;#define db long doubleconst int N = 500010;int a[N];int n;db s;db b[N];db ans, avg;int main(){ cin>>n>>s; for(int i = 0; i < n; i ++ ){ ci原创 2022-04-06 10:31:18 · 604 阅读 · 0 评论 -
AcWing 112 雷达设备 题解 (蓝桥杯 经典贪心)
AcWing 112 雷达设备y总题解#include<bits/stdc++.h>using namespace std;#define x first#define y secondconst int N = 1010, INF = 1e9;const double esp = 1e-6;typedef double db;typedef pair<double, double>PII;PII seg[N];int n;db d;bool fl原创 2022-04-05 11:41:03 · 136 阅读 · 0 评论 -
AcWing 122 糖果传递 题解(蓝桥杯 贪心)
AcWing 122 糖果传递 很有思维难度的一道贪心题, 需要推公式,找规律,详细思路见大佬笔记:大佬题解原地址#include<bits/stdc++.h>using namespace std;#define int long long const int N = 1e6 + 10;int n, m;int a[N];int sum, avg;int c[N];int main(){ cin>>n; for(int i = 1; i原创 2022-04-04 21:19:04 · 245 阅读 · 0 评论 -
AcWing 1207 大臣的旅费 题解(蓝桥杯 树的直径)
AcWing 1207 大臣的旅费国家的地图是一棵树, 大臣想找的最远的路就是树的直径,所以这一题就是找到树的直径。方法:先随便找到一个点x(代码中是根节点),然后找到距离x最远的点p, 之后找到距离p最远的点y, py的距离就是树的直径,证明如下:#include<bits/stdc++.h>using namespace std;#define int long long const int N = 1e5 + 10;struct Node{ //结构体边 int原创 2022-04-04 19:28:25 · 890 阅读 · 0 评论 -
AcWing 1055 股票买卖 II 题解(蓝桥杯 贪心)
贪心思路,跨越多天的买入卖出赚钱交易,等价化成在这几天内连续做交易,之后推出每天都考虑做不做交易AcWing 1055 股票买卖 II#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int n;int a[N];int ans;int main(){ cin>>n; for(int i = 1; i <= n; i ++ ) cin>>a[i]; //原创 2022-04-04 18:11:24 · 201 阅读 · 0 评论 -
AcWing 1233 全球变暖 题解(蓝桥杯 连通块的深搜)
通过深搜搜索每一个连通块,记录不能被淹没的联通块中的高地AcWing 1233 全球变暖#include<bits/stdc++.h>using namespace std;const int N = 1010;int n;char g[N][N];bool st[N][N];int ans;int dx[4] = {1, -1, 0, 0};int dy[4] = {0, 0, 1, -1};int flag;void dfs(int x, int y){ s原创 2022-04-04 09:39:19 · 161 阅读 · 0 评论 -
AcWing 1096 地牢大师 题解(蓝桥杯)
三维广搜,又学到一个读入换行的方式AcWing 1096 地牢大师#include<bits/stdc++.h>using namespace std;const int N = 110, INF = 1e9;struct Node{ int x, y, z;}an[N];char g[N][N][N];int l, r, c;int dis[N][N][N];bool st[N][N][N];queue<Node>q;int dx[6] = {0,原创 2022-04-03 21:39:09 · 184 阅读 · 0 评论 -
AcWing 1240 完全二叉树的权值 题解(蓝桥杯 )
不算难题,这个树的结构紧凑,只需要记住每个节点的层数,然后统计每一层的和就行AcWing 1240 完全二叉树的权值 #include<bits/stdc++.h>using namespace std;#define int long longconst int N = 1e5 + 10, INF = 1e9;struct Node{ int t; //权值 int k; //深度 }an[N];int n;int res[N];int ans;int原创 2022-04-03 20:50:46 · 360 阅读 · 0 评论 -
AcWing 1224 交换瓶子 题解(蓝桥杯 思维)
思维题,这种思维转换方式需要记住,还有就是交换单路有向图的任意两个点会把环拆成两部分的结论也需要记一下AcWing 1224 交换瓶子#include<bits/stdc++.h>using namespace std;const int N = 1e4 + 10;int b[N];int n;int k;bool st[N];int main(){ cin>>n; for(int i = 1; i <= n; i ++ ) cin>&g原创 2022-04-01 20:30:05 · 164 阅读 · 0 评论 -
AcWing 1113 红与黑 题解(蓝桥杯 BFS)
比较板子的一道广搜题,注意数据给的模型m、n不止一组,注意读入,注意给的m、n和常规的行数和列数是相反的AcWing 1113 红与黑#include<bits/stdc++.h>using namespace std;#define x first#define y secondtypedef pair<int, int>PII;const int N = 25;char g[N][N];int ans;int n, m;bool st[N][N];原创 2022-04-01 16:00:33 · 238 阅读 · 0 评论 -
AcWing 1101 献给阿尔吉侬的花束 题解(蓝桥杯 BFS)
很经典的一个走迷宫问题模型,总算完全靠自己写出来一次了,继续加油!AcWing 1101 献给阿尔吉侬的花束 #include<bits/stdc++.h>using namespace std;#define x first#define y second typedef pair<int, int>PII;const int N = 110;int T;int n, m;char g[N][N];int dx[4] = {0, 0, 1, -1};原创 2022-04-01 15:36:05 · 163 阅读 · 0 评论 -
AcWing 1238 日志统计 题解(蓝桥杯 双指针)
一道思维提,注重双指针的应用AcWing 1238 日志统计#include<bits/stdc++.h>using namespace std;#define x first#define y secondtypedef pair<int, int>PII;const int N = 1e5 + 10;PII logs[N];int n, k, d;int cnt[N];bool st[N];int main(){ cin>>n&原创 2022-04-01 12:07:29 · 327 阅读 · 0 评论 -
AcWing 1237 螺旋折线 题解(蓝桥杯 规律)
思维题,规律比较难找,但确实是一道规律题,四个点分别计算点的规律值,然后对每条边求偏移量,AcWing 1237 螺旋折线#include<bits/stdc++.h>using namespace std;#define int long long signed main(){ int x, y; cin>>x>>y; if(abs(x) <= y){ int n = y; cout<<(2 * n - 1) * (原创 2022-03-31 20:48:38 · 194 阅读 · 0 评论 -
AcWing 1232 三体攻击 题解(蓝桥杯 三维差分)
很难,悟了一天多,大致思路了解了,细节操作还需要再研究研究AcWing 1232 三体攻击大佬原题解#include<bits/stdc++.h>using namespace std;const int N = 2e6 + 10;int A, B, C;int m;int b[N], tmp[N], s[N], op[N / 2][7];int get(int i, int j, int k){ return (i * B + j) * C + k;}voi原创 2022-03-31 12:22:22 · 126 阅读 · 0 评论 -
AcWing 1228 油漆面积 题解(蓝桥杯 线段树)
算法思想:就是将每个矩形的竖边依附于一条竖线,将这条竖线加入线段树中,并不断遍历这些竖线,利用线段树更新竖线上被矩形覆盖的长度,tr[1]记录的是当前竖线上被覆盖的总长度,len*记录的x之差就是这块矩形的面积,遍历所有竖线之后,就可以得出所有被矩形覆盖的面积原题大佬题解#include<bits/stdc++.h>using namespace std;const int N = 1e4 + 10;struct Segment{ int x, y1, y2; //x原创 2022-03-29 11:58:27 · 173 阅读 · 0 评论 -
AcWing 1215 小朋友排队 题解(蓝桥杯 树状数组)
原题冒泡排序+逆序对,想出考虑计算高于/低于每个身高的人数,利用树状数组进行人数修改#include<bits/stdc++.h>using namespace std;#define int long long const int N = 1e6 + 10;int h[N], tr[N];int n;int sum[N];int ans;int lowbit(int x){ return x & -x;}void add(int a, int v)原创 2022-03-28 18:24:15 · 191 阅读 · 0 评论 -
AcWing 1270 数列区间最大值 题解 (蓝桥杯 线段树)
注意写代码的时候上下限要定的大一些,避免数据比较夸张,最好直接用long long进行运算原题#include<bits/stdc++.h>using namespace std;#define int long longconst int N = 1e5 + 10;const int INF = 0x3f3f3f3f3f;int n, m;struct Node{ int l, r; int maxn;}tr[N * 4];int w[N];void pus原创 2022-03-28 14:05:52 · 1572 阅读 · 0 评论 -
AcWing 1264 线段树解法
线段树的单点修改和区间查询#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int n, m;int w[N];struct node{ int l, r; int sum;}tr[N * 4];void push_up(int u){ tr[u].sum = tr[u << 1].sum + tr[u << 1 | 1].sum;}void buil原创 2022-03-25 21:48:11 · 190 阅读 · 0 评论 -
AcWing 1265 数星星 题解(蓝桥杯 树状数组)
线段树的运用原题#include<bits/stdc++.h>using namespace std;const int N = 32010;//x、y坐标的最大值 int a[N], tr[N];int level[N];int n;int lowbit(int x){ return x & -x;}void add(int a){//从横坐标a开始,右边的所有树状数组的数据都应+1 for(int i = a; i <= N; i += lo原创 2022-03-25 15:59:23 · 141 阅读 · 0 评论 -
AcWing 1264 动态求连续区间和 题解(树状数组 蓝桥杯)
树状数组最基础的写法,好好记住 原题#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int a[N], tr[N];int n, m;int lowbit(int x){ return x & -x;}void add(int x, int v){ for(int i = x; i <= n; i += lowbit(i)){ tr[i] += v; }}原创 2022-03-25 11:29:55 · 95 阅读 · 0 评论 -
AcWing 1231 航班时间 题解(蓝桥杯)
这题的输入输出比较恼人,这个方法可以好好记一下还有要理解的就是如何消去时差这个问题(经典小学数奥)原题#include<bits/stdc++.h>using namespace std;int get_seconds(int h, int m, int s){ return h * 3600 + m * 60 + s;}int get_time(){ string line; getline(cin, line); if(line.back() != ')')原创 2022-03-24 17:27:26 · 145 阅读 · 0 评论 -
AcWing 1229 日期问题 题解(蓝桥杯)
这种枚举日期的方式和格式化输入输出应该记住原题#include<bits/stdc++.h>using namespace std;int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check(int date){ int year = date / 10000; int month = date % 10000 / 100; int day = date % 100; if原创 2022-03-24 14:57:08 · 115 阅读 · 0 评论 -
AcWing 1219 移动距离 题解(蓝桥杯)
根据题意进行模拟,细心注意边界问题即可原题#include<bits/stdc++.h>using namespace std;const int N = 1e4 + 10;int w, n, m;int x[2], y[2];int main(){ cin>>w>>m>>n; if(m % w != 0){ x[0] = m / w + 1; } else if(m % w == 0){ x[0] = m / w;原创 2022-03-24 13:37:54 · 1270 阅读 · 0 评论 -
AcWing 466 回文日期 题解(蓝桥杯)
这题枚举日期的方法可以好好学学原题#include<bits/stdc++.h>using namespace std;int ans;int data1, data2;int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check(int x){ int year = x / 10000; int mouth = x % 10000 / 100; int day = x %原创 2022-03-23 23:15:29 · 138 阅读 · 0 评论 -
AcWing 1204 错误票据 题解(蓝桥杯)
这个读入一行的读入方式要记住原题#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int n;int ans;int res;int cnt;int mp[N];int minn = 1e9, maxn = -1;int main(){ cin>>n; int v; string line; getline(cin, line);//读入第一个空格 w原创 2022-03-22 11:15:13 · 95 阅读 · 0 评论 -
AcWing 1245 特别数的和 题解(蓝桥杯)
简单模拟原题#include<bits/stdc++.h>using namespace std;const int N = 1e4 + 10;int n;int ans;int main(){ cin>>n; for(int i = 1; i <= n; ++ i){ int m = i; while(m){ int k = m % 10; if(k == 1 || k == 2 || k == 9 || k == 0){原创 2022-03-22 10:26:47 · 95 阅读 · 0 评论 -
AcWing 1236 递增三元组 题解(蓝桥杯)
原题思路很nb,继续学习,加油加油加油!#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 10;int cnt[N], s[N];int a[N], b[N], c[N];int n;int as[N], cs[N];ll ans;//算法思路:利用cnt找到每个数出现过几次,然后利用前缀和数组s[i]记录下所有小于等于i的数出现的次数//之后利原创 2022-03-18 00:15:32 · 162 阅读 · 0 评论 -
AcWing 1210 连号区间数 题解(区间 蓝桥杯)
原题这题对区间的考虑方法值得学习,更新最大值和最小值的方法也应该记住#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int a[N];int n;int ans;int main(){ cin>>n; for(int i = 0; i < n; i ++ ) cin>>a[i]; for(int i = 0; i < n; i ++ ){原创 2022-03-17 21:27:09 · 195 阅读 · 0 评论 -
AcWing 1214 波动数列 题解(动态规划 蓝桥杯)
原题这题的思路很nb,暂时想不出来#include<bits/stdc++.h>using namespace std;const int N = 1010, mod = 1e8 + 7;int a, b, n, s;int f[N][N];int get(int a, int b){ return (a % b + b) % b;}int main(){ cin>>n>>s>>a>>b; f[0][0] =原创 2022-03-17 18:20:13 · 761 阅读 · 0 评论 -
AcWing 1212 地宫取宝 题解 (动态规划 蓝桥杯)
原题注意多状态的表示和方案数的累加方式#include<bits/stdc++.h>using namespace std;const int N = 55, mod = 1e9 + 7;typedef long long ll;int n, m, k;int w[N][N];//存每个宝贝的价值int f[N][N][13][14];//f[i][j][k][z]表示第i行第j个格子,目前取了k个宝贝,最大价值为z的方案数 int main(){ cin>原创 2022-03-17 13:57:16 · 746 阅读 · 0 评论 -
AcWing 1216. 饮料换购 题解 (简单数学 蓝桥杯)
原题简单数学,理一下思路就可以#include<bits/stdc++.h>using namespace std;const int N = 10010;int n, res;int main(){ cin>>n; res = n; while(n >= 3){ int y = n / 3;//y表示用瓶盖换的饮料数 n %= 3; res += y;//res记录总饮料数 n += y;//这轮换的饮料还可以加上 }原创 2022-03-17 12:27:29 · 189 阅读 · 0 评论 -
AcWing 1205. 买不到的数目 题解(蓝桥杯 结论题)
原题y总说的比较常用的一个性质,直接背过#include<bits/stdc++.h>using namespace std;#define int long long typedef long long ll;const int N = 2e8 + 10;int n, m;bool st[N];signed main(){ cin>>n>>m; cout<<(n - 1) * (m - 1) - 1<<e原创 2022-03-15 23:13:32 · 58 阅读 · 0 评论 -
AcWing 1230 K倍区间 题解(前缀和 蓝桥杯)
原题这题处理区间差的方法很有用,好好记住#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;typedef long long ll;ll s[N];ll n, k;ll cnt[N];//记录余数为x的数有几个,余数相同的数大减小%k=0,就代表这一对i、j可以组成一个和是k的倍数的区间 int main(){ cin>>n>>k; for(int i =原创 2022-03-15 21:39:21 · 210 阅读 · 0 评论 -
AcWing 1227. 分巧克力 题解(二分 蓝桥杯)
原题①这道题学到的大切小的方法很有用,要记住,②二分的知识又增加了一些#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int n, k;int h[N], w[N];bool check(int mid){ int x = 0;//记录最终分得的巧克力数 for(int i = 1; i <= n; i ++ ){//遍历每块大巧克力 //这种切块方式很有用,可以记住原创 2022-03-15 12:00:32 · 130 阅读 · 0 评论 -
AcWing 1221 四平方和 题解(蓝桥杯)
原题这题没怎么用二分,但是提供了一种新的多元素枚举的方法,学到了学到了#include<bits/stdc++.h>using namespace std;const int N = 5e5 + 10;int C[N], D[N];int n;bool st[N];int main(){ cin>>n; memset(C, -1, sizeof C); //分两步进行枚举,先枚举c、d,把所有可能出现的c^2和d^2存下 //注意c和d在进行遍历时原创 2022-03-15 11:13:04 · 140 阅读 · 0 评论 -
AcWing 730 机器人跳跃问题 题解(蓝桥杯)
原题刚开始还以为是个前缀和,结果是个二分,涨知识涨知识#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int h[N];int n;bool check(int mid){ for(int i = 1; i <= n; i ++ ){ mid = mid * 2 - h[i]; if(mid < 0) return false;//如果中途出现能量值为0,则这个初始能原创 2022-03-15 10:50:40 · 173 阅读 · 0 评论 -
AcWing 1209 带分数 题解 (递推 蓝桥杯)
原题#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 20;int n;bool backup[N], st[N];int ans;bool check(int a, int c){ ll b = n * (ll)c - a * c; if(!a || !b || !c) return false; memcpy(backup, st, sizeof st原创 2022-03-13 21:02:25 · 268 阅读 · 0 评论 -
AcWing 1208 翻硬币 题解(递推 蓝桥杯)
原题 #include<bits/stdc++.h>using namespace std;string be, en;int n;int ans;void turn(int a){ if(be[a] == '*') be[a] = 'o'; else be[a] = '*'; }int main(){ cin>>be; cin>>en; for(int i = 0; i < be.size(); i ++ ){ if(原创 2022-03-13 21:50:55 · 209 阅读 · 0 评论 -
AcWing 116 飞行员兄弟 题解(递归 蓝桥杯)
原题位运算的妙用#include<bits/stdc++.h>using namespace std;#define x first#define y secondtypedef pair<int, int>PII;char g[4][4], back[4][4];int get(int a, int b){//返回位置的编号 return a * 4 + b;}void turn_one(int a, int b){//状态转换 if(g[a原创 2022-03-11 21:55:09 · 182 阅读 · 0 评论