2025蓝桥杯B组初赛--备战蓝桥杯版h

第一题

0移动距离 - 蓝桥云课

其实是一道数学题

cpp 复制代码
#include <stdio.h>
#include <math.h>  // 包含 sqrt()、arctan2() 函数

int main() {
    // 目标点坐标
    int target_x = 233;
    int target_y = 666;

    // 1. 计算水平移动距离(即目标点到原点的半径 r)
    double r = sqrt(target_x * target_x + target_y * target_y);

    // 2. 计算圆心角 θ(弧度制,arctan2(y, x) 直接返回正确角度)
    double theta = atan2(target_y, target_x);  // 范围 (-π, π],此处为正角

    // 3. 计算圆周最短弧长(r * θ,θ已为最短夹角)
    double arc_length = r * theta;

    // 4. 计算总移动距离(水平距离 + 弧长)
    double total_distance = r + arc_length;

    // 输出结果(保留2位小数,提高可读性)
    int a=(int)total_distance;
    printf("%d\n",a);

    return 0;
}

第三题

0可分解的正整数 - 蓝桥云课

找规律,我们可以发现除了1,其余都可以用三个及以上连续的整数表示(因为有正有负可以抵消啊)

但是只有1没法用三个连续的整数表示

cpp 复制代码
#include<iostream>
using namespace std;
const int N=100010;
typedef long long ll;
int n;
ll a[N];

int main()
{
  cin>>n;
  int res=0;
  for(int i=1;i<=n;i++)
  {
    cin>>a[i];
    if(a[i]!=1)res++;
  }
  cout<<res<<endl;
  return 0;
}

第四题

这个题目很简单,其实就是不断对产值按要求进行调整--》但是容易错的一点就是容易超时--》要想办法优化一下,那就还是找规律--》我们发现在这三个调整公式当中如果a,b,c产值相等了那么就没必要调整了在调整也是那些--》可以提前结束(我为什么做的时候发现不了哇😟)

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

int t;
int main()
{
	cin>>t;
	while(t--)
	{
		ll a,b,c,k;
		cin>>a>>b>>c>>k;
		while(k--)
		{
			ll a1=a,b1=b,c1=c;
			a=(b1+c1)/2;
			b=(a1+c1)/2;
			c=(a1+b1)/2;
      if(a==b&&b==c)break;
		}
		cout<<a<<' '<<b<<' '<<c<<endl;
	}
	return 0;
} 

第五题

0画展布置 - 蓝桥云课

我一开始一看这个题目--》那不就是dfs暴力枚举吗(组合型枚举)于是喜提tle

那么就先分析一下暴力是怎样暴力的吧

我看他是在n副画中挑出m副进行展览--》直接就是组合型枚举(枚举每个位置放哪个)--》再看他想要使l最小--》那在dfs枚举中加一个变量sum表示他不就完了(那就开干!!)

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=100010;
int n,m;
int a[N];
bool st[N];
int b[N];
long long res=1e18;

void dfs(int x,int last,long long sum)
{
	if(x==m)
	{
		res=min(res,sum);
		return;
	}
	if(x>m)return;
	
	for(int i=0;i<n;i++)
	{
		if(!st[i])
		{
			st[i]=true;
			dfs(x+1,i,sum+abs(a[i]*a[i]-a[last]*a[last]));
			st[i]=false;
		}
	}
}

int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(int i=0;i<n;i++)
	{
		st[i]=true;
		dfs(1,i,0);
		st[i]=false;
	}
	cout<<res<<endl;
	return 0;
} 

再仔细分析一下这个题目--》求的是的最小值

那么肯定是相差越远这个值就越大,所以最小值肯定出现在一个连续的区间中(而且区间的大小为m)--》所以我们考虑先排个序,然后在计算--》那么因为计算的是一段区间的平方差的和--》自然而然想到前缀和去优化--》滑动大小为m的窗口找到最小值

cpp 复制代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
int n,m;
int a[N];
ll pre[N];
long long sum=1e18;

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	for(int i=2;i<=n;i++)//注意从2开始 
	{
		pre[i]=pre[i-1]+abs(a[i]*a[i]-a[i-1]*a[i-1]);
	}
	for(int i=1;i+m-1<=n;i++)
	{
		sum=min(sum,pre[i+m-1]-pre[i]);//注意使pre[i]不是pre[i-1] 
	}
	cout<<sum<<endl;
	return 0;
 } 

第六题

动态规划--》但是实在想不出来怎么写(讨厌的动态规划)暴力也没写出来🤯

把一列看成一种状态(暂时学不会)

第八题

0装修报价 - 蓝桥云课

这个题目仔细一看,其实就是枚举这三个符号的全排列然后加上运算符--》其实就是dfs枚举+表达式求值(用栈解决)--》但是这样暴力只能拿一半的分(嘻嘻🤭已经很好了)

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stack>
using namespace std;
const int N=100010,mod=1e9+7;
typedef long long ll;
int n;
int a[N];
int s[N];
ll ans=0;

void dfs(int u)
{
	if(u>=n)
	{
		stack<int> stk,stk2;
		stk.push(a[1]);
		for(int i=1;i<=u;i++)
		{
			if(s[i]==1||s[i]==2)
			{
				stk.push(a[i+1]);
				stk2.push(s[i]);
			}
			else
			{
				int t1=stk.top();
				stk.pop();
				stk.push(t1^a[i+1]);
			}
		}
		
		while(!stk2.empty())
		{
			int t=stk2.top();
			stk2.pop();
			int t1=stk.top();stk.pop();
			int t2=stk.top();stk.pop();
			if(t==1)stk.push(t1+t2);
			else stk.push(t2-t1);
		}
		ans=(ans+stk.top())%mod;
		return;
	}
	s[u]=1;
	dfs(u+1);
	s[u]=2;
	dfs(u+1);
	s[u]=3;
	dfs(u+1);
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	dfs(1);
	cout<<ans<<endl;
	return 0;
}
相关推荐
愚者游世3 小时前
Qt 基础认知
c++·学习·程序人生·职场和发展·visual studio
逆境不可逃3 小时前
【从零入门23种设计模式23】行为型之模板模式
java·开发语言·算法·设计模式·职场和发展·模板模式
仰泳的熊猫4 小时前
题目 2304: 蓝桥杯2019年第十届省赛真题-特别数的和
数据结构·c++·算法·蓝桥杯
June bug6 小时前
ISTQB CT-GenAI v1.0 K1/K2/K3 考点清单
经验分享·职场和发展·学习方法
仰泳的熊猫7 小时前
题目2305:蓝桥杯2019年第十届省赛真题-等差数列
数据结构·c++·算法·蓝桥杯
白帽黑客-晨哥7 小时前
2026年网络安全面试全攻略:高频问题与实战经验展示
web安全·网络安全·面试·职场和发展·网络安全工程师
say_fall7 小时前
位运算底层逻辑与解题应用绪论
c++·学习·算法·leetcode·职场和发展
nglff8 小时前
蓝桥杯抱佛脚第二天|简单枚举,前缀和
算法·职场和发展·蓝桥杯
2301_800895108 小时前
2024蓝桥杯B组初赛--备战蓝桥杯版h
蓝桥杯