2022年第十三届蓝桥杯个人cc++b组题解

2022年第十三届蓝桥杯个人cc++b组题解,第1张

个人水平有限,解题能力有限。




试题 A: 九进制转十进制

这个应该都会吧。








答案 1478

试题 B: 顺子日期

答案 4

#include

using namespace std;

int main()
{	int cou=0;
	int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 
	string mam="2022";
	for(int i=1;i<13;i++)
	{	int day=1;
		while(day<=a[i])
		{	mam="2022";
			if(i<10)
			{	
				mam+='0'+to_string(i);
			}else 
			{	
				mam+=to_string(i);
			}
			if(day<10)
			{	
				mam+='0'+to_string(day);
			}
			else mam+=to_string(day);
			for(int j=0;j
试题 C: 刷题统计
#include

using namespace std;

int main()
{	long long a,b,n;
	long long rounds;
	cin>>a>>b>>n;
	rounds=n/(5*a+2*b);
	long long rest=n-rounds*(5*a+2*b);
	if(rest==0) cout<
试题 D: 修剪灌木

对于每棵树都可以当做开始位置,因为每棵树都能从0开始,则可以向右走或向左走,当走过一个来回时,该树的高度一定最大。




如果你花几分钟找找规律,应该可以总结出来。






毕竟我很菜的。








#include

using namespace std;

int main()
{
	int n;
	cin>>n;
	if(n==1) cout<<1;
	else
	{
		for(int i=1;i<=n;i++)
			{
				cout<
试题 E: X 进制减法

不会

试题 F: 统计子矩阵

暴力大法

#include
using namespace std;
int n,m,k;
int num[501][501];
int sum[501][501];
int sum1[501][501];
int a[501];
int dp[501];
void input(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>num[i][j];
		}
	}
}
void init_sum() {
	memset(sum, 0, sizeof(sum));
	for (int j = 1; j <= m; j++) {
		for (int i = 1; i <= n; i++) {
			sum[i][j] = sum[i - 1][j] + num[i][j];
		}
	}
}
 
int cnt(int a[]){
	int cnt=0;
	int sum=0;
	for(int i=1;i<=m;i++){
		for(int j=i;j<=m;j++){
			sum=0;
		      for(int k=i;k<=j;k++){
		      	sum+=a[k];
		      }
		      if(sum<=k)
		      cnt++;
		}
	}
	return cnt;
}
int main(){
	input();
	init_sum();
	int count=0;
	for(int i=1;i<=n;i++){
		for(int j=i;j<=n;j++){
			for(int l=1;l<=m;l++){
				a[l]=sum[j][l]-sum[i-1][l];
				
			}
			count+=cnt(a);
		}
	}
	cout<
试题 G: 积木画

不会

试题 H: 扫雷

bfs骗分

#include

using namespace std;
struct inf
{
	int x;
	int y;
	int r;
}; 
bool isbool[50000];
bool isboom(inf a,inf b)
{
	double c=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
	if(a.r>c||fabs(a.r*1.0-c)<=1e-8) return true;
	return false;
	
	
}
int main()
{	int n,m;

	cin>>n>>m;
	inf bomb[n];
	inf fire[m];
	for(int i=0;i>bomb[i].x>>bomb[i].y>>bomb[i].r;
	}
		for(int i=0;i>fire[i].x>>fire[i].y>>fire[i].r;
		}
	queue qu;
	for(int i=0;i
试题  I: 李白打酒加强版

不会dp,只能靠剪枝苟一苟。




还能感觉还能再剪

if(rest-m>1) return

可以控制酒壶中的酒量在一个范围。


这个我试了一下n=30 m=30是可以跑出来的

当然→_→不会设置这么奇怪的数据 额应该不会是0。




这个只是测试时间

可以过2^30的计算量.

是指剪过以后 运气好点应该能过60% 

using namespace std;
int cou;
void dfs(int n,int m,int rest)
{	if(rest-m>1) return; 
	if(n<0||m<0) return;
	if(n==0&&m==0)
	{
		if(rest==1) cou++;
		return;
	}
	if(rest==0)
	{
		return;
	}else
	{
		dfs(n,m-1,rest-1);
		dfs(n-1,m,rest*2);
	}
	
}
int main()
{
	int n,m;
	cin>>n>>m;
	dfs(n,m-1,2);
	cout<
试题 J: 砍竹子

不会。






注:acwing好像更新了,可以去搜4403~4409题号

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/607389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)