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

news2025/1/14 1:24:16
 题目链接算法
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.coloradmin.cn/o/2276235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CES 2025|美格智能高算力AI模组助力“通天晓”人形机器人震撼发布

当地时间1月7日&#xff0c;2025年国际消费电子展&#xff08;CES 2025&#xff09;在美国拉斯维加斯正式开幕。美格智能合作伙伴阿加犀联合高通在展会上面向全球重磅发布人形机器人原型机——通天晓&#xff08;Ultra Magnus&#xff09;。该人形机器人内置美格智能基于高通QC…

PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获

目录 一、数据库操作应用场景 二、安装PyMysql 三、事务的概念 四、数据库的准备 五、PyMysql连接数据库 1、建立连接方法 2、入门案例 六、PyMysql操作数据库 1、数据库查询 1️⃣查询操作流程 2️⃣cursor游标 ​3️⃣查询常用方法 4️⃣案例 5️⃣异常捕获 …

了解Node.js

Node.js是一个基于V8引擎的JavaScript运行时环境&#xff0c;它允许JavaScript代码在服务器端运行&#xff0c;从而实现后端开发。Node.js的出现&#xff0c;使得前端开发人员可以利用他们已经掌握的JavaScript技能&#xff0c;扩展技能树并成为全栈开发人员。本文将深入浅出地…

Unreal Engine 5 (UE5) Metahuman 的头部材质

在图中&#xff0c;你展示了 Unreal Engine 5 (UE5) Metahuman 的头部材质部分&#xff0c;列出了头部材质的多个元素。以下是对每个部分的解释&#xff1a; 材质解释 Element 0 - MI_HeadSynthesized_Baked 作用&#xff1a; 这是 Metahuman 的主要头部材质&#xff0c;控制整…

《自动驾驶与机器人中的SLAM技术》ch7:基于 ESKF 的松耦合 LIO 系统

目录 基于 ESKF 的松耦合 LIO 系统 1 坐标系说明 2 松耦合 LIO 系统的运动和观测方程 3 松耦合 LIO 系统的数据准备 3.1 CloudConvert 类 3.2 MessageSync 类 4 松耦合 LIO 系统的主要流程 4.1 IMU 静止初始化 4.2 ESKF 之 运动过程——使用 IMU 预测 4.3 使用 IMU 预测位姿进…

SQL从入门到实战-2

高级语句 窗口函数 排序窗口函数 例题二十九 select yr,party,votes, rank() over (PARTITION BY yr ORDER BY votes desc) as pson from ge where constituency S14000021 order by party,yr 偏移分析函数 例题三十 select name,date_format(whn,%Y-%m-%d) data, confi…

Spring Security单点登录

本文介绍了Spring Security单点登录的概念和基本原理。单点登录是指用户只需登录一次&#xff0c;即可在多个相互信任的系统中实现无缝访问和授权。通过Spring Security框架的支持&#xff0c;可以实现有效的用户管理和权限控制。最后&#xff0c;本文提供了实际应用案例&#…

LKT4304新一代算法移植加密芯片,守护物联网设备和云服务安全

凌科芯安作为一家在加密芯片领域深耕18年的企业&#xff0c;主推的LKT4304系列加密芯片集成了身份认证、算法下载、数据保护和完整性校验等多方面安全防护功能&#xff0c;可以为客户的产品提供一站式解决方案&#xff0c;并且在调试和使用过程提供全程技术支持&#xff0c;针对…

浅谈云计算04 | 云基础设施机制

探秘云基础设施机制&#xff1a;云计算的基石 一、云基础设施 —— 云计算的根基![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1fb7ff493d3c4a1a87f539742a4f57a5.png)二、核心机制之网络&#xff1a;连接云的桥梁&#xff08;一&#xff09;虚拟网络边界&#xff…

Qt C++读写NFC标签NDEF网址URI

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1biFgjSs&ftt&id615391857885 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> #include "QLibrary" …

Java 如何传参xml调用接口获取数据

传参和返参的效果图如下&#xff1a; 传参&#xff1a; 返参&#xff1a; 代码实现&#xff1a; 1、最外层类 /*** 外层DATA类*/ XmlRootElement(name "DATA") public class PointsXmlData {private int rltFlag;private int failType;private String failMemo;p…

2024年度漏洞态势分析报告,需要访问自取即可!(PDF版本)

2024年度漏洞态势分析报告&#xff0c;需要访问自取即可!(PDF版本),大家有什么好的也可以发一下看看

不同音频振幅dBFS计算方法

1. 振幅的基本概念 振幅是描述音频信号强度的一个重要参数。它通常表示为信号的幅度值&#xff0c;幅度越大&#xff0c;声音听起来就越响。为了更好地理解和处理音频信号&#xff0c;通常会将振幅转换为分贝&#xff08;dB&#xff09;单位。分贝是一个对数单位&#xff0c;能…

Nginx反向代理请求头有下划线_导致丢失问题处理

后端发来消息说前端已经发了但是后端没收到请求。 发现是下划线的都没收到&#xff0c;搜索之后发现nginx默认request的header中包含’_’时&#xff0c;会自动忽略掉。 解决方法是&#xff1a;在nginx里的nginx.conf配置文件中的http部分中添加如下配置&#xff1a; unders…

C语言程序环境和预处理详解

本章重点&#xff1a; 程序的翻译环境 程序的执行环境 详解&#xff1a;C语言程序的编译链接 预定义符号介绍 预处理指令 #define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令 #include 预处理指令 #undef 条件编译 程序的翻译环境和执行环…

计算机组成原理(1)

系统概述 计算机硬件基本组成早期冯诺依曼机现代计算机 计算机各部分工作原理主存储器运算器控制器计算机工作过程 此文章的图片资源获取来自于王道考研 计算机硬件基本组成 早期冯诺依曼机 存储程序是指将指令以二进制的形式事先输入到计算机的主存储器&#xff0c;然后按照…

基于element UI el-dropdown打造表格操作列的“更多⌵”上下文关联菜单

<template><div :class"$options.name"><el-table :data"tableData"><el-table-column type"index" label"序号" width"60" /><!-- 主要列 BEGIN---------------------------------------- --&g…

Oracle 表分区简介

目录 一. 前置知识1.1 什么是表分区1.2 表分区的优势1.3 表分区的使用条件 二. 表分区的方法2.1 范围分区&#xff08;Range Partitioning&#xff09;2.2 列表分区&#xff08;List Partitioning&#xff09;2.3 哈希分区&#xff08;Hash Partitioning&#xff09;2.4 复合分…

罗永浩再创业,这次盯上了 AI?

罗永浩&#xff0c;1972年7月9日生于中国延边朝鲜族自治州的一个军人家庭&#xff0c;是一名朝鲜族人&#xff1b;早年在新东方授课&#xff0c;2004年当选 “网络十大红人” &#xff1b;2006年8月1日&#xff0c;罗永浩创办牛博网&#xff1b;2008年5月&#xff0c;罗永浩注册…

自然语言处理基础:全面概述

自然语言处理基础&#xff1a;全面概述 什么是NLP及其重要性、NLP的核心组件、NLU与NLG、NLU与NLG的集成、NLP的挑战以及NLP的未来 自然语言处理&#xff08;NLP&#xff09;是人工智能&#xff08;AI&#xff09;中最引人入胜且具有影响力的领域之一。它驱动着我们日常使用的…