蓝桥杯
江南路漫
这个作者很懒,什么都没留下…
展开
-
蓝桥杯 迷宫与陷阱 BFS
参考代码:#include<bits/stdc++.h> #define INF 0x3f3f3f3fusing namespace std;typedef long long ll;struct node{ int x, y, step, ticket; node(int a, int b, ll c, int d) { x=a, y=b, step=c, ticket=d; }};queue<node> q;bool vis[1005][1005];原创 2022-04-07 22:52:18 · 361 阅读 · 0 评论 -
蓝桥杯 人物相关性分析 二分
思路:这道题是常规的模拟题,根据题意写出相关代码即可。模拟题一般容易在边界条件上出错,建议自己设计几个样例测试一下。这题纯暴力的方法不能通过所有的测试点,对于最后的查询,应该使用二分查找,这样算法的整体复杂度是O(nlogn)参考代码:#include<bits/stdc++.h> #define INF 0x3f3f3f3fusing namespace std;typedef long long ll;string s;int k, len;vector<int>原创 2022-04-07 14:55:25 · 477 阅读 · 0 评论 -
蓝桥杯 递增三元组 二分
参考代码:#include<bits/stdc++.h> #define INF 0x3f3f3f3fusing namespace std;typedef long long ll;ll cnt = 0; int a[100005], b[100005], c[100005];int main(){ ios::sync_with_stdio(false); int n; cin >> n; for(int i = 0; i < n; i++)原创 2022-04-07 00:50:25 · 156 阅读 · 0 评论 -
蓝桥杯 子串分值 递推
思路:本题有点难想,采用贡献和的思想。首先需要定义一个last数组,用于记录当前遍历的字母s[i]上一次出现在字符串s中的位置。接着遍历数组,计算每一个字母的贡献值。参考代码:#include<bits/stdc++.h> #define INF 0x3f3f3f3fusing namespace std;typedef long long ll;int main(){ ios::sync_with_stdio(false); string s; cin >>原创 2022-04-06 00:27:23 · 143 阅读 · 0 评论 -
蓝桥杯 作物杂交 DFS搜索
参考代码:#include<bits/stdc++.h> #define INF 0x3f3f3f3fusing namespace std;typedef long long ll;int cost[2005]; //记录每个作物杂交所需要的时间 int dis[2005]; //记录每个作物到t点的最短时间 struct node{ //结构体存储每种杂交方案 int a, b, time;};vector<node> solution[2005];原创 2022-04-01 20:02:11 · 387 阅读 · 0 评论 -
蓝桥杯 k倍区间 前缀和
参考代码:#include<bits/stdc++.h> using namespace std;typedef long long ll;int array[100005], t[100005]; //array记录每个元素值,t记录取余k,各余数对应前缀和的数量 int main(){ ios::sync_with_stdio(false); ll sum = 0, cnt = 0; int n, k; cin >> n >> k; fo.原创 2022-03-31 22:29:59 · 271 阅读 · 2 评论 -
蓝桥杯 123 二分+打表
参考代码:#include<bits/stdc++.h> using namespace std;typedef long long ll;ll temp[1500000], sum[1500000]; //temp数组记录序号和,sum数组记录前缀和 ll cal(ll n) //计算自然数求和 { return (n+1)*n/2;}int main(){ ios::sync_with_stdio(false); ll index = 1; ll end.原创 2022-03-31 20:00:11 · 584 阅读 · 0 评论 -
蓝桥杯 子串分值
参考代码:#include<bits/stdc++.h> using namespace std;int main(){ ios::sync_with_stdio(false); string str; cin >> str; int sum = 0; int left, right; char s; int len = str.size(); for(int i = 0; i < len; i++) //依次循环每一个字符,将其贡献值相加 .原创 2022-03-30 00:44:07 · 445 阅读 · 0 评论 -
蓝桥杯 日志统计 尺取
参考代码:#include<bits/stdc++.h> using namespace std;typedef long long ll;vector<int> v[100005]; //定义容器用于存放第i篇帖子被点赞的时间 int main(){ ios::sync_with_stdio(false); int n, d, k; cin >> n >> d >> k; int ts, id; for(int i =原创 2022-03-28 19:58:12 · 599 阅读 · 0 评论 -
蓝桥杯 迷宫
参考代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;int e[55][55], vis[55][55]; //e矩阵表示障碍物信息,vis矩阵表示点是否被访问过 int m = 30, n = 50;struct node{ //定义结构体,用于存放点的信息 int x; int y; string path; //用来表示从起点到该点的最短路径 };queue<node&原创 2022-03-26 00:59:49 · 87 阅读 · 0 评论 -
蓝桥杯 分巧克力 二分
#include<bits/stdc++.h>using namespace std;typedef long long ll;ll n, k;vector<ll> width, height;bool check(ll length) //判断边长为length的正方形都否满足需求 { ll sum = 0; //记录能切成的最大方块数 for(int i = 0; i < n; i++) { sum += (width[i] / length.原创 2022-03-25 20:43:05 · 452 阅读 · 0 评论 -
蓝桥杯 递增序列
思路:这道题一开始想复杂了,其实这么小的数据量直接暴力求解即可。参考代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;int m = 30, n = 50; bool checkL(int x, int y) //判断坐标是否超出边界 { if(x >= 0 && y >= 0 && x < m && y < n) .原创 2022-03-23 22:27:24 · 1044 阅读 · 2 评论 -
蓝桥杯 数字三角形 贪心+动态规划
参考代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;int data[105][105];int main(){ ios::sync_with_stdio(false); int n; cin >> n; for(int i = 1; i <= n; i++) { for(int j = 1; j <= i; j++) { cin >>..原创 2022-03-23 17:39:59 · 1450 阅读 · 0 评论 -
蓝桥杯 左baby右兄弟
试题:思路:“左孩子右兄弟”是常见的多叉树转化成二叉树的方法。具体的实现方式是,从第二层最右边的结点开始,将将自己的孩子结点放到左边,左边一位的兄弟放到左边的结点上。对于是多支的孩子先递归转成一支树。本题寻求最大深度,依次递归即可。参考代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;vector<int> v[100005];vector<int> depth;i原创 2022-03-20 17:24:14 · 1303 阅读 · 0 评论 -
蓝桥杯 砝码称重
试题:思路:经典的0-1背包问题:动态转移方程:dp[i][j] = dp[i-1][j] + dp[i-1][j+weight[i]] + dp[i-1][abs(j-weight[i])]边界条件:这题坑的地方在于方案数会超过边界,当发现当前重量可行时,直接归为1,防止dp数组累加时溢出。或者最后统计的时候,将判断条件从if(dp[n][i])>0改为if(dp[n][i]) 。dp[0][0] = 1参考代码:#include<bits/stdc++.h>u原创 2022-03-19 23:32:39 · 113 阅读 · 0 评论 -
蓝桥杯 杨辉三角形
如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列: 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, 给定一个正整数 NN,请你输出数列中第一次出现 NN 是在第几个数?原创 2022-03-19 21:12:12 · 295 阅读 · 0 评论 -
蓝桥杯 印章&拿金币
对于大数组的定义要放在main函数外,否则会报错认真思考动态规划的边界设置,不是机械地设置1或0参考代码#include<bits/stdc++.h>using namespace std;int main(){ int n, m; scanf("%d %d", &n, &m); if(n > m){ printf("0.0000"); } else{ double dp[21][21] = {0}; for(int i原创 2022-03-03 23:30:06 · 287 阅读 · 0 评论 -
蓝桥杯 平面切分(欧拉定理)
问题描述平面上有 N条直线,其中第 i条直线是 y = Ai*x + B。请计算这些直线将平面分成了几个部分。输入格式第一行包含一个整数N。以下N行,每行包含两个整数 Ai, Bi。输出格式一个整数代表答案。样例输入31 12 23 3样例输出6基本思路首先通过set容器对输入的数据进行去重,根据“每增加一条直线,对平面数的贡献值是其与先前直线的交点数(与先前步骤得出的已有交点不重合)+1 ”的结论进行累加。AC代码#include<bits/stdc++.h&原创 2021-03-18 15:46:00 · 5035 阅读 · 0 评论 -
蓝桥杯 子串分值
问题描述对于一个字符串 ,我们定义 的分值 为 中恰好出现一次的字符个数。例如 “aba”,“abc”, “aaa”。现在给定一个字符串 (长度为 ),请你计算对于所有 的非空子串 ,的和是多少。输入格式输入一行包含一个由小写字母组成的字符串 。输出格式输出一个整数表示答案。样例输入ababcData样例输出21Data样例说明子串 f值a 1ab 2aba 1abab 0ababc 1 b 1 ba 2 bab 1原创 2021-03-17 12:30:48 · 1638 阅读 · 4 评论