- admin's blog
【总结】蓝桥杯省赛
- @ 2024-4-15 21:53:48
【总结】蓝桥杯省赛
🎉️🎉️🎉️提前祝各位同学蓝桥杯顺利。
说在前面
大二了,人生中第二次蓝桥杯也结~束~(结束了一半)了。
去年简简单单报名了组,实力比较弱,也是简简单单混了一个国二,但居然学校的记录被我大一的时候给破了?? 今年报名的是,总觉得今年的题目要比去年简单上不少,可能是错觉吧。
遥想天前的我:最多会半个暴力,遇到的题目大部分都是看不懂的,什么图论、数据结构看都不想看。
现在的我:这题暴力,那题暴力,欸?这一题也可以暴力欸....。能拿一分是一份,超过1e9+8e8的题,直接强制结束,并输出...
题目与解题分析
A. 握手问题
题意:
有50个人两两握手,(注意A->B与B->A算作同一次),最后只有7个人没有进行两两握手,请问一共握手了多少次?
方法一:暴力
我们将这50个人排成一排形成下面的一张图:

然后让第一个人与后面的所有人进行依次握手,一共要进行49次,第二个人与后面的所有人进行握手,一共要进行48次...直到最后7个人的时候就不握手了。
伪代码:
for i 1 -> (50-7):
ans+=50-i
方法二:
一共有50人,如果每个人之间都进行一次握手,那一共要进行次,由于有7个人没有进行两两握手,那么就要少次,答案就为
B小球反弹
数学题,跳过,~5分不要也罢~不会,但还是要随便写一个交上去.
C好~数~简单
题意:如果一个数的的奇数位(个位,百位...)为奇数,偶数位(十位,千位...)为偶数,那么这个数为偶数.
n<=1e7
虽然这个题目一眼望过去像是有规律一样,但是由于n很小可以直接暴力.
#include<bits/stdc++.h>
using namespace std;
int n;
int ans;
int solve(int x)
{
int now=1;
while( x )
{
if( (x%10)%2!=now ) return 0;
now^=1;
x/=10;
}
return 1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
if( solve(i) ) ans++;
}
cout<<ans;
}
代码中now表示现在是奇数位还是偶数位.
R格式
给你一个n,和一个小数a,要求计算出.
查看数据限制,发现这题的数特别大,其中n最大为1000,其中远远超了long long (). 这道题明显高精度.
正解之前:
如果你这道题不会高精度,但是你使用了double数据类型,那么在dotcpp C语言网能拿52分

但是你用了float,就只能拿28分

#include<bits/stdc++.h>
using namespace std;
priority_queue<int>s;
int n,x,q,p;
long long ans;
int main(){
cin>>n>>p>>q;;
while(n--)
{
cin>>x;
s.push(x);
}
while( p )
{
s.push( sqrt(s.top()) );
p--;
s.pop();
}
while( q )
{
s.push( (s.top())/2 );
q--;
s.pop();
}
while( s.size() )
{
ans+=s.top();
s.pop();
}
cout<<ans;
}