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

 题目链接算法
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】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/954723.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 2140. 解决智力问题 动态规划

原题链接&#xff1a;Leetcode 2140. 解决智力问题 class Solution { public:long long mostPoints(vector<vector<int>>& questions) {int n questions.size();vector<long long> dp(n, 0);for (int i n - 1; i > 0; i--) {int a questions[i][0]…

JavaScript-正则表达式方法(RegExp)

RegExp 对象用于将文本与一个模式匹配。 有两种方法可以创建一个 RegExp 对象&#xff1a;一种是字面量&#xff0c;另一种是构造函数。 字面量由斜杠 (/) 包围而不是引号包围。 构造函数的字符串参数由引号而不是斜杠包围。 new RegExp(pattern[, flags])一.符集合 1.选择…

网安——计算机网络基础

一、计算机网络概述 1、Internet网相关概念及发展 网络&#xff08;Network&#xff09;有若干结点&#xff08;Node&#xff09;和连接这些结点的链路&#xff08;link&#xff09;所组成&#xff0c;在网络中的结点可以是计算机、集线器、交换机或路由器等多个网络还可以通…

React第二十二章(useDebugValue)

useDebugValue useDebugValue 是一个专为开发者调试自定义 Hook 而设计的 React Hook。它允许你在 React 开发者工具中为自定义 Hook 添加自定义的调试值。 用法 const debugValue useDebugValue(value)参数说明 入参 value: 要在 React DevTools 中显示的值formatter?:…

Facebook 隐私风波:互联网时代数据安全警钟

在社交媒体飞速发展的今天&#xff0c;个人数据的隐私保护已成为全球关注的焦点。作为全球最大的社交平台之一&#xff0c;Facebook面临的隐私问题&#xff0c;尤其是数据泄露事件&#xff0c;频繁引发公众的广泛讨论。从用户信息被滥用到数据泄漏&#xff0c;Facebook的隐私挑…

HTML5 网站模板

HTML5 网站模板 参考 HTML5 Website Templates

Web前端对于登陆注册界面的实现

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>请注册登陆</title> </head> <body&…

Linux初识:【shell命令以及运行原理】【Linux权限的概念与权限管理】

目录 一.shell命令以及运行原理 二.Linux权限的概念与权限管理 2.1Linux权限的概念 sudo普通用户提权 2.2Linux权限管理 2.2.1文件访问者的分类&#xff08;人&#xff09; 2.2.2文件类型和访问权限&#xff08;事物属性&#xff09; 2.2.3文件权限值的表示方法 字符…

UML系列之Rational Rose笔记七:状态图

一、新建状态图 依旧是新建statechart diagram&#xff1b; 二、工作台介绍 接着就是一个状态的开始&#xff1a;开始黑点依旧可以从左边进行拖动放置&#xff1a; 这就是状态的开始&#xff0c;和活动图泳道图是一样的&#xff1b;只能有一个开始&#xff0c;但是可以有多个…

Java内存与缓存

Java内存管理和缓存机制是构建高性能应用程序的关键要素。它们之间既有联系又有区别&#xff0c;理解这两者对于优化Java应用至关重要。 Java 内存模型 Java内存模型&#xff08;JMM&#xff09;定义了线程如何以及何时可以看到其他线程修改过的共享变量的值&#xff0c;并且规…

带头双向循环链表(数据结构初阶)

文章目录 双向链表链表的分类概念与结构实现双向链表定义链表结构链表打印判空申请结点初始化头插尾插头删尾删查找指定位置插入和删除销毁链表 顺序表和链表的分析结语 欢迎大家来到我的博客&#xff0c;给生活来点impetus&#xff01;&#xff01; 这一节我们学习双向链表&a…

持续集成 01|Gitee介绍、Pycharm使用Gitee

目录 一、理论 二、 git的简介与安装 三、Gitee 1、注册网易163邮箱 2、注册Gitee账号 3、git和gitee管理代码工作原理 三、PyCharm安装配置Gitee 四、Pycharm使用Gitee插件的五种场景 1、将 Gitee的新仓库 Checkout&#xff08;检出&#xff09;到 Pycharm中 2、推送…

金融项目实战 05|Python实现接口自动化——登录接口

目录 一、代码实现自动化理论及流程 二、脚本实现的理论和准备工作 1、抽取功能转为自动化用例 2、搭建环境(测试工具) 3、搭建目录结构 三、登录接口脚本实现 1、代码编写 1️⃣api目录 2️⃣script目录 2、断言 3、参数化 1️⃣编写数据存储文件&#xff1a;jso…

【git】-3 github创建远程仓库,上传自己的项目,下载别人的项目

一、如何使用Github 1、创建远程仓库 2、使用github拉取/推送代码 克隆仓库 向远程仓库推送代码-git push 二、上传我们自己的项目到github 方法一&#xff1a;直接上传 方法二&#xff1a;使用git命令 方法三&#xff1a; 将仓库拉取到本地上传 三、下载别人的项目 …

Java算法 数据结构基础 并查集 模版 [洛谷-P3367]

目录 题目地址 题目描述 输入输出样例 并查集模版 介绍 1. 路径压缩&#xff08;Path Compression&#xff09; 2. 按秩合并&#xff08;Union by Rank / Size&#xff09; 代码讲解 操作讲解 时间复杂度分析 应用场景 题目地址 【模板】并查集 - 洛谷 题目描述 输…

PyCharm文档管理

背景&#xff1a;使用PyCharmgit做文档管理 需求&#xff1a;需要PyCharm自动识别docx/xslx/vsdx等文件类型&#xff0c;并在PyCharm内点击文档时唤起系统内关联应用(如word、excel、visio) 设置步骤&#xff1a; 1、file -》 settings -》file types 2、在Files opened i…

卷积神经05-GAN对抗神经网络

卷积神经05-GAN对抗神经网络 使用Python3.9CUDA11.8Pytorch实现一个CNN优化版的对抗神经网络 简单的GAN图片生成 CNN优化后的图片生成 优化模型代码对比 0-核心逻辑脉络 1&#xff09;Anacanda使用CUDAPytorch2&#xff09;使用本地MNIST进行手写图片训练3&#xff09;…

基于springboot的租房网站系统

作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 项目包含&#xff1a; 完整源码数据库功能演示视频万字文档PPT 项目编码&#xff1…

创建 WordPress 插件(第一部分):添加管理页面

WordPress 是互联网上最受欢迎的内容管理系统之一。它是用 PHP 创建的&#xff0c;可以处理从博客到商业网站的一切需求。事实上&#xff0c;我们的博客和网站都使用 WordPress。在本文中&#xff0c;我将向你展示如何创建一个 WordPress 插件&#xff0c;该插件会在管理员控制…

「港科技」联手「地平线」打造GPT风格的自动驾驶世界模型:DrivingWorld

摘要 最近在自回归&#xff08;AR&#xff09;生成模型方面的成功&#xff0c;例如自然语言处理中的GPT系列&#xff0c;激发了在视觉任务中复制这一成功的努力。一些研究尝试将这种方法扩展到自动驾驶中&#xff0c;通过构建基于视频的世界模型来生成逼真的未来视频序列和预测…