蓝桥杯_B组_省赛_2022(用作博主自己学习)

ops/2025/1/16 12:38:23/
 题目链接算法
11.九进制转十进制 - 蓝桥云课

进制转换

21.顺子日期 - 蓝桥云课

时间与日期

31.刷题统计 - 蓝桥云课

时间与日期

41.修剪灌木 - 蓝桥云课

思维

51.X 进制减法 - 蓝桥云课

贪心

61.统计子矩阵 - 蓝桥云课

二维前缀和

71.积木画 - 蓝桥云课

动态规划

82.扫雷 - 蓝桥云课

DFS / BFS

92.李白打酒加强版 - 蓝桥云课

动态规划 / 记忆化搜索

101.砍竹子 - 蓝桥云课

杂题


1. 九进制转十进制(简单题)

#include <iostream>
using namespace std;int main(){cout << 2 + 2 * 9 + 2 * 9 * 9 * 9;return 0;
}

2. 顺子日期(简单题)

#include <iostream>
using namespace std;int deadline[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int main(){int date[4];int count = 0;for(int m = 1; m <= 12; m ++){int daysize = deadline[m];for(int d = 1; d <= daysize; d ++){date[0] = m / 10;date[1] = m % 10;date[2] = d / 10;date[3] = d % 10;if((date[0] + 1 == date[1] && date[1] == date[2] - 1) || (date[1] + 1 == date[2] && date[2] == date[3] - 1) )count ++;}}cout << count;return 0;
}

3. 刷题统计(简单题)

#include <iostream>
using namespace std;int main(){long long a, b, n;	cin >> a >> b >> n;long long day = 0, week = 0;week = n / (5 * a + 2 * b);day = week * 7;n -= week * (5 * a + 2 * b);for(int i = 1; n > 0; i ++){int num;if(i >= 6) num = b;else num = a;n -= num;day ++;}cout << day;return 0;
}

4. 修剪灌木(找规律)

#include <iostream>
using namespace std;int trees[10010];int main(){int n;	cin >> n;int first = 2 * n - 2;int tmp = first;int left = 1, right = n;while(left <= right){trees[left] = trees[right] = tmp;tmp -= 2;left ++;right --;}for(int i = 1; i <= n; i ++)	cout << trees[i] << endl;return 0;
}

5. X 进制减法

#include <bits/stdc++.h>
using namespace std;int A[100005] = {0};
int B[100005] = {0};
int Ans[100005] = {0};
int Carry[100005] = {0};int main(){int N;    cin >> N;int Ma;    cin >> Ma;for(int i = Ma; i > 0; i --)    cin >> A[i];int Mb;    cin >> Mb;for(int i = Mb; i > 0; i --)    cin >> B[i];// 定进制for(int i = 1; i <= max(Ma, Mb); i ++)    Carry[i] = max((max(A[i], B[i]) + 1), 2);// 定各进位差值 for(int i = 1; i <= max(Ma, Mb); i ++)    Ans[i] = A[i] - B[i];//for(int i = 1; i <= max(Ma, Mb); i ++) cout << Ans[i] <<" ";// 计算差值/*long long a = 0, b = 0;//注意要long long for(int i = Ma; i >= 1; i --){a = (a * Carry[i] + A[i]) % 1000000007;//注意取模 }for(int i = Mb; i >= 1; i --){b = (b * Carry[i] + B[i]) % 1000000007;}long long ans = (a - b + 1000000007) % 1000000007;//因为可能出现负数所以先+inf*/long long ans = 0;for(int i = max(Ma, Mb); i >= 2; i --)ans = ((ans + Ans[i]) * Carry[i - 1]) % 1000000007;ans += Ans[1];ans %= 1000000007;cout << ans;return 0;
}

6. 统计子矩阵

【背模板、学习此题遍历矩阵的方式】

【70%】【二位前缀和】

#include <bits/stdc++.h>
using namespace std;int a[505][505], s[505][505];int main(){long long ans = 0;long long N, M, K;    cin >> N >> M >> K;// 存矩阵 for(int i = 1; i <= N; i ++)for(int j = 1; j <= M; j ++)scanf("%d", &a[i][j]);// 求二位前缀和 for(int i = 1; i <= N; i ++)for(int j = 1; j <= M; j ++)s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];// 统计所有矩阵int x1, x2, y1, y2;for(int x1 = 1; x1 <= N; x1 ++)for(int y1 = 1; y1 <= M; y1 ++)for(int x2 = x1; x2 <= N; x2 ++)for(int y2 = y1; y2 <= M; y2 ++)if(s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1] <= K)    ans ++;else break;cout << ans;return 0;
}

【100%】【二维前缀和 + 双指针】

#include <bits/stdc++.h>
using namespace std;int a[505][505], s[505][505];long long ans = 0;int main(){long long N, M, K;	cin >> N >> M >> K;// 求二位前缀和 for(int i = 1; i <= N; i ++)for(int j = 1; j <= M; j ++){int a;	cin >> a;s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1] + a;}// 统计所有矩阵for(int x1 = 1; x1 <= N; x1 ++)for(int x2 = x1; x2 <= N; x2 ++)for(int y1 = 1, y2 = 1; y2 <= M; y2 ++){while(y1 <= y2 && s[x2][y2] - s[x1-1][y2] - s[x2][y1-1] + s[x1-1][y1-1] > K)y1 ++;ans += y2 - y1 + 1;}cout << ans;return 0;
}

7. 积木画

【普通二维动态规划】

#include <bits/stdc++.h>
using namespace std;long long dp[10000005][3];
const int inf = 1000000007;/*
dp[i][0] 刚好铺满
dp[i][1] 上面差一个 
dp[i][2] 下面差一个 dp[i][0] = dp[i - 1][0] + dp[i - 2][0] + dp[i - 1][1] + dp[i - 1][2] 
dp[i][1] = dp[i - 2][0] + dp[i - 1][2]
dp[i][2] = dp[i - 2][0] + dp[i - 1][1]*/int main(){long long N;	cin >> N;// 初始化 dp[1][0] = 1;	dp[1][1] = 0;	dp[1][2] = 0;dp[2][0] = 2;	dp[2][1] = 1;	dp[2][2] = 1;// 递推 for(int i = 3; i <= N; i ++){dp[i][0] = (dp[i - 1][0] + dp[i - 2][0] + dp[i - 1][1] + dp[i - 1][2]) % inf; dp[i][1] = (dp[i - 2][0] + dp[i - 1][2]) % inf;dp[i][2] = (dp[i - 2][0] + dp[i - 1][1]) % inf;}cout << dp[N][0];return 0;
}

8. 扫雷

【bfs/dfs专项训练】

9. 李白打酒加强版

【记忆化搜索、dfs 专项训练】

【普通多维动态规划】

#include <bits/stdc++.h>
using namespace std;long long dp[105][105][105];
const int inf = 1000000007;
/*
if(d == 0 && h == 0) continue;
if(h > 0)	dp[d][h][w] = dp[d][h - 1][w + 1];
if(d > 0 && w != 0 && w % 2 == 0)	dp[d][h][w] += dp[d - 1][h][w / 2];*/int main(){int N, M; cin >> N >> M;dp[0][0][2] = 1;for(int d = 0; d <= N; d ++)for(int h = 0; h <= M; h ++)for(int w = 0; w <= M; w ++){if(d == 0 && h == 0 && w != 2) dp[d][h][w] = 0;if(h > 0)					dp[d][h][w] = dp[d][h - 1][w + 1];if(d > 0 && w % 2 == 0)		dp[d][h][w] += dp[d - 1][h][w / 2];dp[d][h][w] %= inf;}cout << dp[N][M - 1][1];return 0;
}

10. 砍竹子

【未完全解决】

【未完待续ing】


http://www.ppmy.cn/ops/150554.html

相关文章

下载导出Tomcat上的excle文档,浏览器上显示下载

目录 1.前端2.Tomcat服务器内配置3.在Tomcat映射的文件内放置文件4.重启Tomcat&#xff0c;下载测试 1.前端 function downloadFile() {let pictureSourceServer "http://192.168.1.1:8080/downFile/";let fileName "测试文档.xlsx";let fileURL pictu…

书生大模型基础岛第四关

任务要求1&#xff08;必做&#xff0c;参考readme_api.md&#xff09;&#xff1a;基于 LlamaIndex 构建自己的 RAG 知识库&#xff0c;寻找一个问题 A 在使用 LlamaIndex 之前 浦语 API 不会回答&#xff0c;借助 LlamaIndex 后 浦语 API 具备回答 A 的能力&#xff0c;截图保…

[人工智能自学] Python包学习-pandas

紧接上篇numpy的学习教程 本篇参考&#xff1a; Pandas 教程|菜鸟教程 官方教程 - 10分钟入门pandas joyful-pandas pandas中文教程 它建立在 NumPy 库的基础之上&#xff0c;提供了高效的数据结构和数据分析工具&#xff0c;使得在 Python 中进行数据操作变得更加容易和高效。…

基于Java的百度AOI数据解析与转换的实现方法

目录 前言 一、AOI数据结构简介 1、官网的实例接口 2、响应参数介绍 二、Java对AOI数据的解析 1、数据解析流程图 2、数据解析实现 3、AOI数据解析成果 三、总结 前言 在当今信息化社会&#xff0c;地理信息数据在城市规划、交通管理、商业选址等领域扮演着越来越重要的…

iOS - 内存对齐

1. 基本的内存对齐 // 对象内存对齐 struct objc_object {// isa 指针 8 字节对齐isa_t isa __attribute__((aligned(8))); };// 定义对齐常量 #define WORD_MASK 7UL // 字对齐掩码 #define WORD_SHIFT 3UL // 字对齐位移 #define WORD_SIZE 8 …

数据结构-ArrayLIst-一起探索顺序表的底层实现

各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 大家好&#xff0c;我们今天来学习java数据结构的第一章ArrayList&#xff08;顺序表&#xff09; 1.ArrayList的概念 那小伙伴就要问了线性表到…

两分钟解决 :![rejected] master -> master (fetch first) , 无法正常push到远端库

目录 分析问题的原因解决 分析问题的原因 在git push的时候莫名遇到这种情况 若你在git上修改了如README.md的文件。由于本地是没有README.md文件的&#xff0c;所以导致 远端仓库git和本地不同步。 将远端、本地进行合并就可以很好的解决这个问题 注意&#xff1a;直接git pu…

【漫话机器学习系列】049.集成学习方法(Ensemble Methods)

集成学习方法&#xff08;Ensemble Methods&#xff09; 集成学习&#xff08;Ensemble Learning&#xff09;是一种机器学习方法&#xff0c;通过组合多个模型&#xff08;通常称为基学习器&#xff09;来解决同一任务&#xff0c;从而提高整体性能。其核心思想是&#xff1a…