第十三届蓝桥杯大赛软件赛省赛CC++大学B组

第十三届蓝桥杯大赛软件赛省赛CC++ 大学 B 组

文章目录

  • 第十三届蓝桥杯大赛软件赛省赛CC++ 大学 B 组
    • 1、九进制转十进制
    • 2、顺子日期
    • 3、刷题统计
    • 4、修建灌木
    • 5、x进制减法
    • 6、统计子矩阵
    • 7、积木画
    • 8、扫雷
    • 9、李白打酒加强版
    • 10、砍竹子

1、九进制转十进制

在这里插入图片描述

计算器计算即可。2999+29+2。

2、顺子日期

在这里插入图片描述
简单的枚举一下2022年的日期即可,注意遇到20220123,判断为一个即可。

#include<iostream>

#define ll long long
using namespace std;
int ans=0;
int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	for(int i=1;i<=12;i++){
		for(int j=1;j<=d[i];j++){
			int date[]={2,i/10,i%10,j/10,j%10};
			for(int k=0;k<3;k++){
				if(date[k]+1==date[k+1]&&date[k+1]+1==date[k+2]){
					ans++;
					break;
				}
			}
		}
	}
	cout<<ans;
	return 0;
}

3、刷题统计

在这里插入图片描述
分析:

这一题我本来用的是cmath里的ceil函数,但是提交之后我发现只能过掉70%,并没有全部通过。
随后我手写了ceil函数的功能,然后就可以100%通过了。
后来我就发现ceil函数原型是float ceilf (float x); 题意是1e18,肯定就会出现精度问题了,真的要记住这问题了,遇到特大数尽量手心函数,不要用库函数,可能就会出现问题。

#include<iostream>
#include<cmath>
#define ll long long
using namespace std;
ll a,b,n;
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>a>>b>>n;
	ll x=(5*a+2*b);
	ll y=(n/x);// 坐满了几周,7*y 
	ll z=(n%x);// 还剩的题数 
	if(z<=5*a){
		if(z%a==0){
			z=z/a;
		}else{
			z=z/a+1;
		}
		cout<<7*y+z;
	}else{
		if((z-5*a)%b==0){
			z=(z-5*a)/b;
		}else{
			z=(z-5*a)/b+1;
		}
		cout<<7*y+5+z;
	}
	return 0;
}

4、修建灌木

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这一题直接暴力模拟过程即可,对于案例n=3,我们模拟过程会发现一个规律,那就是在1~n中最高的树是对称的而且最高的树的值都是这两个对称位置步长的2倍。

#include<iostream>
#define ll long long
using namespace std;
int n;
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	/*
		n=3
		未剪   修剪后 	位置
		111 -> 011      1
		122 -> 101 		2
			
		212 -> 210		3
		321 -> 301		2
		412 -> 012		1
		123 -> 103 		2
		214 -> 210		3		
		可以看到出现了循环情况,也就说从左向右和从右向左,的最大值是就是步长的2倍 
	*/
	for(int i=1;i<=n;i++){
		cout<<max(i-1,n-i)*2<<"\n";
	}
	return 0;
}

5、x进制减法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
没想到啊,感觉脑袋被踢了。

代码示例:

#include<iostream>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
const ll mod = 1000000007,N = 1e5+10;
ll n,ma,mb,a[N],b[N],p[N];
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	// 从高位县向低位输入,避免造成位数不相同 
	cin>>ma;
	for(ll i=ma;i>=1;i--)cin>>a[i];
	cin>>mb;
	for(ll i=mb;i>=1;i--)cin>>b[i];
	/*
		x进制类比一下 十进制 
		比如 123 就是 1*10*10+2*10+3
		那么x进制的:
		每一位的进制:11 5 2
		每一位的数字:10 4 1
		那么这个x进制对应的十进制不就是:10*5*2+4*2+1 
	*/
	// A >= B 	
	// 进制: 11 5 2  
	// 10 4 0  10*5*2+4*2+0=108
	// 1  2 0  1*5*2+2*2+0=14   108-14=94
	// 所以说最小的数位上的进制应该就是a[i]和b[i]这个数位的值+1 
	// 也就是说正好要进位的时候能得到最小值
	// 我们就使用p[i]来储存每个位上应该是什么进制 
	for(ll i=1;i<=ma;i++){
		p[i]=max((ll)2,max(a[i],b[i])+1);
	}
	p[0]=1;
	ll ans=0;
	for(int i=ma;i>=1;i--){ 
		ans=(ans+a[i]-b[i])*p[i-1]%mod;
	}
	cout<<ans;
	return 0;
}

6、统计子矩阵

在这里插入图片描述
在这里插入图片描述

分析:

我直接想到的就是二维前缀和解决这个问题,去拿区间的值和k判断即可。
写的时候运行的结果一直不对,后来才发现是公式记错了,所以说记公式很重要。
区间的形式求值得公式是:res=prefix[x2][y2]-prefix[x2][y1-1]-prefix[x1-1][y2]+prefix[x1-1][y1-1] 。
但是直接暴力解决的话,只能过70%,其它的超时。优化的方法自行搜索。

#include<iostream>
#include<cstring>
#define ll long long
#define pii pair<ll,ll>
using namespace std;
const int N = 5e2+10;
ll n,m,k,mp[N][N],prefix[N][N],ans=0;
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n>>m>>k;
	memset(prefix,0,sizeof(prefix));
	memset(mp,0,sizeof(mp));
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){	 
			cin>>mp[i][j];
			prefix[i][j]=prefix[i-1][j]+prefix[i][j-1]+mp[i][j]-prefix[i-1][j-1];
		}
	
	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++){
					// s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1]
					ll res=prefix[x2][y2]-prefix[x2][y1-1]-prefix[x1-1][y2]+prefix[x1-1][y1-1];
					if(res<=k)ans++;
				}
			} 
		}
	}		
	cout<<ans;
	return 0;
}

7、积木画

8、扫雷

在这里插入图片描述
在这里插入图片描述
简单的枚举判断一下就行了。

#include<iostream>
#include<cstring>
#define ll long long
using namespace std;
const int N = 105;
int n,m; 
int mp[N][N],ans[N][N];
int dx[]={0,0,1,-1,1,-1,1,-1};
int dy[]={1,-1,0,0,1,-1,-1,1};
bool isnmp(int x,int y){
	return x<0||x>=n||y<0||y>=m;
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n>>m;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			cin>>mp[i][j];
	memset(ans,'0',sizeof(ans));
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(mp[i][j]==1){
				ans[i][j]=9;	
			}else{
				int rs=0;
				for(int k=0;k<8;k++){
					int nx=i+dx[k],ny=j+dy[k];
					if(isnmp(nx,ny))continue;
					if(mp[nx][ny]==1){
						rs++;
					}
				}
				ans[i][j]=rs;
			}
		}
	}	
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++)
			cout<<ans[i][j]<<" ";
		cout<<"\n";
	}
	return 0;
}

9、李白打酒加强版

10、砍竹子

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

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

相关文章

如何在 Visual Studio for Mac 中使用 .NET 8 上的 FastReport Avalonia

FastReport Business Graphics .NET&#xff0c;是一款基于fastreport报表开发控件的商业图形库&#xff0c;借助 FastReport 商业图形库&#xff0c;您可以可视化不同的分层数据&#xff0c;构建业务图表以进行进一步分析和决策。利用数据呈现领域专家针对 .NET 7、.NET Core、…

阿里云服务器租用价格,2024年新版活动报价及租用收费标准

2024年阿里云服务器租用费用&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核4G服务…

解决el-table设置固定高度后,展示不同列时表格高度变小bug

解决el-table设置固定高度后&#xff0c;展示不同列时表格高度变小bug 1、需求分析2、解决方案 1、需求分析 在el-table使用过程中&#xff0c;选择多个参数展示更多列时会出现高度变小问题究其原因可知是el-table列动态发生变化后&#xff0c;el-table__body-wrapper的高度变…

HTML - 你是如何理解link和@import的

难度级别:初级及以上 提问概率:55% link是我们非常熟悉的一个HTML标签,用于引入CSS文件,而@import则存在于CSS文件内部,用于再次引入其他的CSS文件。所以很显然,执行顺序上,link标签会随着HTML文档加载,开始触发下载CSS文件的操作。…

clickhouse 源码编译部署

clickhouse 源码编译部署 版本 21.7.9.7 点击build project&#xff0c;编译工程&#xff0c;经过一定时间&#xff08;第一次编译可能几个小时&#xff0c;后续再编译&#xff0c;只编译有改动的文件&#xff09;生成release目录 在cmake-build-release → programs目录下…

【机器学习】科学库使用第3篇:机器学习概述,学习目标【附代码文档】

机器学习&#xff08;科学计算库&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习&#xff08;常用科学计算库的使用&#xff09;基础定位、目标&#xff0c;机器学习概述定位,目标,学习目标,学习目标,1 人工智能应用场景,2 人工智能小…

【generate】如何维护一套icon组件库,直接输出svg为react component

https://github.com/ant-design/ant-design-web3/pull/761/files 实现了icon-preview(通过jsdoc, 鼠标放在组件上可以看到icon的样式)&#xff0c;因为打包方式、产物以及命名上有一些不同&#xff0c;可能需要稍加改造。 这个同步脚本应该后续也用得上&#xff0c;略加改造同步…

git分支-基本分支与合并

问题假设 让我们通过一个简单的分支和合并的例子&#xff0c;演示在实际工作中可能会使用的工作流程。将按照以下步骤进行&#xff1a; 在网站上进行一些工作。为正在开发的新用户故事创建一个分支。在该分支上进行一些工作。 在这个阶段&#xff0c;我们可能会接到一个电话…

原型链污染攻击也称JavaScript Prototype 污染攻击

JavaScript数据类型 let和var关键字的区别 使用var或let关键字可以定义变量 let和var的区别如下&#xff1a; var是全局作用域&#xff0c;let 只在当前代码块内有效 当在代码块外访问let声明的变量时会报错 var有变量提升&#xff0c;let没有变量提升 let必须先声明…

U-net在乳腺癌医学图像分割方面的应用

图像几何变换和生成对抗网络 通过旋转、反转、剪切图像对乳腺医学图像进行数据增强之后&#xff0c;可以提高模型的准确性。但是当前简单的分割和几何变换在医疗图像数据中不会简单使用&#xff0c;而是会集合生成对抗网络&#xff08;GAN&#xff09;结合使用。使用生成对抗网…

zookeeper监听集群节点的实现zkclient组件实现方案(Java版)

ZooKeeper Watcher 机制 client 向zookeeper 注册监听client注册的同时会存储一个WatchManager对象向zookeeper发生改变则notification client 并发送一个WatchManager对象,然后client再更新该对象 package com.jacky.zk.demo;import org.I0Itec.zkclient.IZkChildListener;…

https访问http的minio 图片展示不出来

问题描述&#xff1a;请求到的图片地址单独访问能显示&#xff0c;但是在网页中展示不出来 原因&#xff1a;https中直接访问http是不行的&#xff0c;需要用nginx再转发一下 nginx配置如下&#xff08;注意&#xff1a;9000是minio默认端口&#xff0c;已经占用&#xff0c;…

基于Spring Boot的餐厅点餐系统

基于Spring Boot的餐厅点餐系统 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.3.9 部分系统展示 管理员登录界面 用户注册登录界面 …

MySQL-视图:视图概述、创建、查看、更新、修改、删除

第14章 视图 1. 常见的数据库对象2. 视图概述2.1 为什么使用视图&#xff1f;2.2 视图的理解 3. 创建视图3.1 创建单表视图3.2 创建多表联合视图3.3 基于视图创建视图 4. 查看视图5. 更新视图的数据5.1 一般情况5.2 不可更新的视图 6. 修改、删除视图6.1 修改视图6.2 删除视图 …

uniapp微信小程序真机图片不显示

不同设备可能出现部分设备显示不了图片&#xff0c;解决办法&#xff1a;图片地址直接使用&#xff0c;不要拼接&#xff1a; https://images.weserv.nl/?urlhttp

hive 慢sql 查询

hive 慢sql 查询 查找 hive 执行日志存储路径&#xff08;一般是 hive-audit.log &#xff09; 比如&#xff1a;/var/log/Bigdata/audit/hive/hiveserver/hive-audit.log 解析日志 获取 执行时间 执行 OperationId 执行人 UserNameroot 执行sql 数据分隔符为 \001 并写入 hiv…

【Java】:继承

目录 1.为什么需要继承 2.继承的概念 3.继承的语法 4.父类成员访问 4.1子类和父类不存在同名成员变量 1.子类和父类不存在同名成员变量 2.子类和父类成员变量同名 4.2子类中访问父类的成员方法 1.成员方法名字不同 2.成员方法名字相同 5.super关键字 6.子类构造方法 …

使用Flutter创建带有图标提示的TextField

在移动应用开发中&#xff0c;TextField是一种常用的用户输入小部件。然而&#xff0c;有时向用户提供有关他们应该输入什么的提示或说明是很有帮助的。在本教程中&#xff0c;我们将创建一个Flutter应用程序&#xff0c;演示如何在TextField旁边包含一个图标提示。 编写代码 …

WPS二次开发系列:如何获取应用签名SHA256值

在申请WPS SDK授权版时候需要开发者提供应用包名和签名&#xff0c;应用包名好说&#xff0c;那如何生成符合WPS要求的应用签名&#xff08;SHA256)呢&#xff0c;经笔者亲测&#xff0c;有如下两种方式可以实现获取第三方应用签名值&#xff08;SHA256&#xff09; 1. 方法一&…

Day43 动态规划 part05

Day43 动态规划 part05 1049.最后一块石头的重量II 我的思路: 提示说和划分两个和相等的子集差不多&#xff0c;猛然想到&#xff0c;这道题不就是划分子集&#xff0c;用sum - 和最大*2 代码就是划分和相同的子集的变形 解答&#xff1a; class Solution {public int last…