2022蓝桥杯b组初赛---备战蓝桥杯版h

第一题

进制之间的转换这个题目考的是九进制转十进制

0九进制转十进制 - 蓝桥云课

第二题

0顺子日期 - 蓝桥云课

考的时日期问题--》用那个日期模板枚举然后找到符合条件的日期数

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

bool check(int y,int m,int d)
{
	int x=y*10000+m*100+d;
	int a[10];
	int k=0;
	while(x)
	{
		a[k++]=x%10;
		x/=10;
	}
	int last=0;
	for(int i=k-1;i>=2;i--)
	{
		if(a[i]==(a[i-1]-1)&&a[i-1]==(a[i-2]-1))
		{
			return true;
		}
	} 
	return false;
}

int main()
{
	bool falg=false;
	int cnt=0;
	for(int y=2022;y<=2023;y++)
	{
		for(int m=1;m<=12;m++)
		{
			for(int d=1;d<=31;d++)
			{
				if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
        {
          
        }
				else if(m==2)
				{
					if((y%4==0&&y%100!=0)||y%400==0)
					{
						if(d>29)break; 
					}
					else 
					{
						if(d>28)break;
					}
				}
				else
				{
					if(d>30)break;
				}
				if(check(y,m,d))
				{
					cnt++;
				}
				if(y==2022&&m==12&&d==31)
				{
					cout<<cnt<<endl;
					return 0;
				}
			}
		}
	}
} 

第三题

0刷题统计 - 蓝桥云课

这个题目还是比较简单的,但是因为我直接模拟的,所以占用时间比较多最后超时了,但是还是拿到了大部分的分数,如果想要优化的话还是得提前先处理一下数据

tle版

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
ll a,b,n;

int main()
{
	cin>>a>>b>>n;
	ll cnt=0;
	ll day=0;
	while(cnt<n)
	{
		day++;
		if(day%7==6||day%7==0)
		{
			cnt+=b;
		}
		else cnt+=a;
	}
	cout<<day<<endl;
	return 0;
} 

正确版

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;

int main()
{
	ll a,b,n;
	cin>>a>>b>>n;
	
	ll week=a*5+b*2;
	ll weeks=n/week;
	ll remain=n%week;
	ll days=weeks*7;
	//处理剩余部分
	if(remain>0)
	{
		ll sum=0;
		for(int i=1;i<=7;i++)
		{
			if(i==6||i==7)
			{
				sum+=b;
			}
			else sum+=a;
			days++;
			if(sum>=remain)break;
		}
	 } 
	 cout<<days<<endl;
	 return 0;
} 

第四题

0修剪灌木 - 蓝桥云课

这个题目又是一个找规律的题目

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int n;

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cout<<max(n-i,i-1)*2<<endl;
		
	} 
	return 0;
}

第五题

不想看题目一看感觉就是不会做的题目直接跳过

第六题

0统计子矩阵 - 蓝桥云课

二维前缀和问题,先用二位前缀和记录矩阵和,然后根据上下界然后双指针枚举两个y

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=510;
typedef long long ll;
int n,m;
ll k;
ll g[N][N];
ll sum[N][N];

ll getsum(int x1,int y1,int x2,int y2)
{
	return sum[x2][y2]-sum[x2][y1-1]-sum[x1-1][y2]+sum[x1-1][y1-1];
}

int main()
{
	cin>>n>>m;
	cin>>k; 
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>g[i][j];
			sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+g[i][j];
		}
	}
	ll ans=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=i;j<=n;j++)
		{
			for(int l=1,r=1;r<=m;r++)
			{
				while(l<=r&&getsum(i,l,j,r)>k)l++;
				if(l<=r)ans+=r-l+1;
			}
		}
	}
	cout<<ans<<endl;
	return 0;
} 

第七题

第八题

0扫雷 - 蓝桥云课

对每个格子进行扫描,扫描周围八个格子里有几个雷然后最后输出

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=110;
int n,m;
int g[N][N];
int dx[8]={0,0,-1,1,1,1,-1,-1};
int dy[8]={1,-1,0,0,1,-1,1,-1};
int d[N][N];


int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>g[i][j];
		}
	}
	
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(g[i][j]==1)
			{
				d[i][j]=9;
			}
			else
			{
				for(int k=0;k<8;k++)
				{
					int nx=i+dx[k];
					int ny=j+dy[k];
					if(nx>=0&&nx<n&&ny>=0&&ny<=n&&g[nx][ny]==1)
					{
						d[i][j]++;
					}
				}
			}
		}
	}
	
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cout<<d[i][j];
			if(j<m-1)cout<<' ';
		}
		cout<<endl;
	}
	return 0;
	
} 

第九题

一眼dfs暴力搜索!!又得到tle了哈哈哈哈但是拿到了一半的分

这个就是枚举当前位置到底是花还是店,注意的是限定条件比较多--》酒正好喝完,m个花,n个店--》最后一步一定是花

tle版

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=210,MOD=1000000007;
int n,m;
int a[N];
int cnt=0;

void dfs(int x,int sum,int hua,int dian)//sum剩下的酒 
{
	if(hua>m||dian>n||sum<0)return;
	if(x==n+m-1)
	{
		if(sum==1&&dian==n&&hua==m-1)
		{
			cnt = (cnt + 1) % MOD; 
		} 
		return;
	}
	//店
	if(dian<n)
	{
		dfs(x+1,sum+sum,hua,dian+1);
	}	
	//花
	if(hua<m)
	{
	
		dfs(x+1,sum-1,hua+1,dian);
	} 
}

int main()
{
	cin>>n>>m;
	dfs(0,2,0,0);
	cout<<cnt%MOD<<endl;
	return 0;
}

第十题

我看到最大最小我以为是用二分,结果二分写了一对没写出来😪然后就没写了

相关推荐
多打代码2 小时前
2026.3.22 回文子串
算法·leetcode·职场和发展
Trouvaille ~4 小时前
【优选算法篇】哈希表——空间换时间的极致艺术
c++·算法·leetcode·青少年编程·蓝桥杯·哈希算法·散列表
AlunYegeer5 小时前
面试问题controller和service能不能互相替换
面试·职场和发展
Epiphany.5565 小时前
题目 3146: 蓝桥杯2023年第十四届省赛真题-网络稳定性 时间限制: 1.5s 内存限制: 256MB
职场和发展·蓝桥杯
七禾页丫7 小时前
面试记录19 软件设计师
面试·职场和发展
無限進步D7 小时前
简单贪心算法 cpp
c++·算法·贪心算法·蓝桥杯·入门·竞赛
爱吃涮毛肚的肥肥(暂时吃不了版)8 小时前
Leetcode——181.超过经理收入的员工
算法·leetcode·职场和发展
醉颜凉8 小时前
Seal^_^【送书活动第8期】——《ChatGLM3大模型本地化部署、应用开发与微调》
人工智能·职场和发展·送书活动·chatglm3大模型
仰泳的熊猫8 小时前
题目2580:蓝桥杯2020年第十一届省赛真题-分类计数
数据结构·c++·算法·蓝桥杯