2024第十五届蓝桥杯 C/C++ B组 参赛经历分享(以及部分题解)

前言

emmmmmm,dp杯居然不考dp了,蓝桥一直没怎么出过的高精度居然也考了(当时居然因为没太复习那块知识直接模拟混分了),题量也改了,总的来说反而简单了?。。。还好天津竞赛弱省,但愿能够省一吧。。。(图灵保佑)

好那么进入正题


第一题

好那么好,小水题一道(50 * 49 / 2)- (7 * 6 / 2)=1204,cout 出去,过啦!!(此处配有英雄哥圣音)


第二题

好,过过过过过过(卡壳),过不了一点啊啊啊啊啊啊啊,很数学的一道题,原谅我这烂数学,此处只能引用某乎大佬的推理过程

大佬的思路真是清清又晰晰啊。。。。我的烂代码写的判断四个方向,转来转去转来转去,也没能得出答案


第三题 

好那么好,蓝桥总是能在我快要崩溃的时候让我找回自信,很简单的一个模拟题,1e7的数据压根爆不了一点,吐槽一嘴:蓝桥正赛居然能遇见这么好写的题目了吗。。。

#include<iostream>
using namespace std;
bool is_good(int n){
	int flag = 1;
	while(n){
		if((n%10)%2 != flag++ %2){
			return false;
		}
		n /= 10;
	}
	return true;
}
int n,res;
int main()
{
	cin >> n;
	for(int i=1;i<=n;i++){
		if(is_good(i))
			res++;
	}
	
	cout << res;
	return 0;
}

第四题 

嘿,不看数据量还真以为蓝桥要沦落为水赛了嘿,这刚一看不来个小白都会写吗,转头就是个暴击

高精度还忘了,但愿前50%错不了


第五题 

 很好的数论,使我的大脑旋转,爱来自蓝桥。很想知道大佬们怎么一眼就看出这个式子等于gcd(a,b,c)的,我赛场上直接暴力了,不过就这个数据量来看,数据量再大一点就会爆炸,(再近一点靠近点快被融化)(bushi)愿kunkun保佑我骗分


第六题 

好,我真是太喜欢这种不在题目里玩一点心眼子,直接告诉你该干嘛的搜索题目了,数据量N小于等于10,那么我们直接上dfs ,走起

#include <iostream>
#include<set>
#include<vector>
using namespace std;
int f[8][2] = {
    {-1, 0} ,
    {-1, 1} ,
    {0 , 1} ,
    {1 , 1} ,
    {1 , 0} ,
    {1 ,-1} ,
    {0 ,-1} ,
    {-1,-1}
};
vector<int> ans;
set<pair<int, int>> se;
int a[12][12], flag = 1;
bool vis[12][12];
int n, k;
void dfs(int x, int y) {
    if (flag == 0) {
        return;
    }
    if (x == n && y == n && ans.size() == n * n - 1) {
        flag = 0;
        for (int i = 0; i < ans.size(); i++) {
            cout << ans[i];
        }
        return;
    }
    if (x == 0 || y == 0 || x > n || y > n) {
        return;
    }
    for (int i = 0; i < 8; i++)
    {
        int gox = x + f[i][0];
        int goy = y + f[i][1];
        int t = (x - 1) * n + y, to = (gox - 1) * n + goy;
        pair<int, int> road({ t,to });
        if (vis[gox][goy] == false && (a[x][y] + 1) % k == a[gox][goy] && se.find(road) == se.end()) {
            vis[gox][goy] = true;
            ans.push_back(i);
            if (i == 1) {
                se.insert({ t + 1,t - n });
                se.insert({ t - n,t + 1 });
            }
            else if (i == 3) {
                se.insert({ t + 1,t + n });
                se.insert({ t + n,t + 1 });
            }
            else if (i == 5) {
                se.insert({ t - 1 ,t + n });
                se.insert({ t + n,t - 1 });
            }
            else if (i == 7) {
                se.insert({ t - 1,t - n });
                se.insert({ t - n,t - 1 });
            }

            dfs(gox, goy);

            if (i == 1) {
                se.erase({ t + 1,t - n });
                se.erase({ t - n,t + 1 });
            }
            else if (i == 3) {
                se.erase({ t + 1,t + n });
                se.erase({ t + n,t + 1 });
            }
            else if (i == 5) {
                se.erase({ t - 1 ,t + n });
                se.erase({ t + n,t - 1 });
            }
            else if (i == 7) {
                se.erase({ t - 1,t - n });
                se.erase({ t - n,t - 1 });
            }
            vis[gox][goy] = false;
            ans.pop_back();
        }
    }
    return;
}
int main()
{
    cin >> n >> k;
    vis[1][1] = true;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> a[i][j];
        }
    }
    dfs(1, 1);
    if (flag) {
        cout << -1;
    }
    return 0;
}

我的acmer学长告诉我这样写常数太大了,容易炸,但愿还能混过前80%。。但是dotcpp上的民间数据倒是确确实实ac过去了,又是听天由命的一集,提一嘴,路径不让交叉的存储方法我看有大佬写的四维数组来标记,也就是记录起点(x0,y0)以及终点(x1,y1) 我更倾向于用(x-1) * n + y把他们弄成编号 ,虽然当时没想到数组去记录就好(会比set的插入删除操作更快,可能当时脑抽了吧,临场的时候就是想到啥直接用了,没有啥时间去做更多的考虑)


第七题 

对于任意一个大于等于2的数来说,开根号并向下取整肯定是优于(或等于)减半的,所以我们利用优先队列(堆)每次对最大数进行开根号操作(P次以后变成减半操作),然后弹出并把操作后得到的新数放回去就行了,也就是堆+贪心,但有大佬把出题人hack了

恕我太菜没想到这种数据的解决办法,而且赛场上这个题我压根就没写。。。(调暴搜花了1.5h给自己整累了,觉得反正后面更难懒得写了)

附代码(非本人手写)

#include<iostream>
#include<queue>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int n,P,Q;
int a[100010];
 
int main()
{
    priority_queue<int> heap;
    scanf("%d%d%d",&n,&P,&Q);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]),heap.push(a[i]);
     
    while(P||Q)
    {
        auto x=heap.top();
        heap.pop();
         
        if(P&&Q)
        {
            int yl=sqrt(x);
            int y2=x/2;
            if(y2<=yl)
            {
                Q--;
                heap.push(y2);
            }
            else
            {
                P--;
                heap.push(yl);
            }
        }
        else if(P)
        {
            int yl=sqrt(x);
            P--;
            heap.push(yl);
        }
        else
        {
            int y2=x/2;
            Q--;
            heap.push(y2);
        }
    }
     
    ll res=0;
    while(!heap.empty())
    {
        int x=heap.top();
        heap.pop();
        res+=x;
    }
    printf("%lld\n",res);
    return 0;
}

第八题 

没什么好解释的,纯粹的不会,当时感觉这个题前缀和应该是有用的,但是就是一点都不想写了,就是累了摆了菜了qwq呜呜呜呜。。。。


吐槽

感觉总体上比去年是更简单了,去年最后那俩lca我当时大一是真一点都看不懂,emmmm,今年好像真的没有dp,难道dp杯知道自己黑称要改过自新?

求求今年让孩子混个省一吧(哭哭哭哭qaq qaq)

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

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

相关文章

使用HTML和CSS和PHP实现一个简单的简历制作项目

实 验 目 的 掌握HTML表单作用&#xff0c;以及action和method属性&#xff1b; 掌握HTML输入域作用、类型、标签&#xff0c;以及name和value属性&#xff1b; 掌握$_REQUEST变量的作用、语法和使用&#xff1b; 掌握注释&#xff0c;以及变量的作用、命名、赋值和输出&#…

交换机端口类型——操控vlan tag

拓扑图 按照上图vlan及端口类型&#xff0c;操控vlan标签&#xff0c;实现PC1、PC2、PC3互通。 配置 sysname SW1 # vlan 10 # interface GigabitEthernet0/0/1port link-type accessport default vlan 10 # interface GigabitEthernet0/0/24port link-type accessport defaul…

【新版】小剧场短剧影视小程序源码

风口项目 &#xff0c;短剧app 小程序 H5 多端程序 全网首家对接了易支付&#xff0c; 修复了众多BUG 目前已知BUG全部修复 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89070544 更多资源下载&#xff1a;关注我。

redhatcsa学习笔记--题目+答案

一、semanage命令 semanage命令 – 查询与修改安全上下文 semanage命令来自英文词组“SELinux manage”的缩写&#xff0c;其功能是用于查询与修改安全上下文。semanage的功能类似于chcon命令&#xff0c;它们都可以用于设置文件的SELinux安全上下文策略&#xff0c;而semana…

Linux内核之文件系统访问:目录项、inode、物理磁盘访问关系(五十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

(2022级)成都工业学院数据库原理及应用实验六: SQL DML(增、删、改)

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、成品仅提供参考 3、如果成品不满足你的要求&#xff0c;请寻求其他的途径 运行环境 window11家庭版 Navicat Premium 16 Mysql 8.0.36 实验要求 在实验三的基础上完成下列查询&#xff1a; 1、在科室表…

C++ 速成

C 概述 c 融合了3中不同的编程方式&#xff1a; C语言代表的过程性语言C 在C语言基础上添加的类代表的面向对象语言C 模板支持的泛型编程 C 标准 一种描述C 的一些语法规则的代码准则 C11 C 应用 游戏 C 效率是一个很重要的原因&#xff0c;绝大部分游戏殷勤都是C写的 网…

【Java网络编程】网络编程中的基本概念及实现UDP、TCP客户端服务器程序

目录 一、什么是网络编程&#xff1f; 二、网络编程中的基本概念 1. 客户端和服务器 2. 请求和响应 三、Socket套接字 UDP数据报套接字编程 1. DatagramSocket 2. DatagramPacket 3. UDP回显客户端服务器程序 4. UDP字典客户端服务器程序 TCP流套接字编程 1. Serve…

论文笔记:Large Language Model for Participatory Urban Planning

202402 arxiv 大模型城市规划 引入了一个基于LLM的多代理协作框架&#xff0c;模拟规划师和数千名具有不同特征和背景的居民&#xff0c;用于参与式城市规划——>生成考虑居民多样化需求的城市区域土地利用规划为了提高讨论的效率&#xff0c;论文采用了鱼缸讨论机制&#…

政安晨:【Keras机器学习示例演绎】(五)—— 利用视觉变换器进行物体检测

目录 导言 导入和设置 准备数据集 实施多层感知器&#xff08;MLP&#xff09; 实施补丁创建层 显示输入图像的补丁 实施补丁编码层 构建 ViT 模型 运行实验 评估模型 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与…

接口测试相关

接口测试&#xff0c;接口 接口是数据交互的入口和出口 接口是一套规范和标准 统一设计标准 前后端相对独立 扩展型灵活 接口文档。 接口测试 接口测试环境&#xff0c;运行程序&#xff0c;自己搭建环境 接口测试插件 谷歌postman 火狐 restclient java测试工具为j…

路由器热备份

HSRP HSRP&#xff08;Hot Standby Routing Protocol&#xff09;热备份路由选择协议 HSRP是思科私有的协议&#xff0c;HSRP起到一个双网关热备份的一个目的&#xff0c;不考虑线路问题针对设备而言&#xff0c;一个设备挂了还有另外一台设备&#xff0c;所以双网关也叫双机…

paddlepaddle-gpu安装

背景 之前安装paddlepaddle-gpu遇到各种问题&#xff0c;安装不成功&#xff0c;之前使用了wsldocker的方式&#xff0c;可查看我之前博客&#xff1a;记录paddlepaddle-gpu安装&#xff0c;这要会导致我整个开发流程比较割裂 cuda版本 强烈推荐cuda11.8&#xff0c;paddlep…

硬件工程中的RMA是什么意思?

RMA是Return Material Authorization的英文缩写&#xff0c;即退料审查。是处理用户不良产品退货、换货的主要流程。 当用户所使用某产品或部件不能正常工作时&#xff0c;将发起一个RMA流程&#xff0c;首先用户必须填写RMA申请单&#xff0c;然后RMA的处理人员将对该RMA申请…

【文章复现】基于主从博弈的社区综合能源系统分布式协同 优化运行策略

随着能源市场由传统的垂直一体式结构向交互竞争型 结构转变&#xff0c;社区综合能源系统的分布式特征愈发明显&#xff0c;传统 的集中优化方法难以揭示多主体间的交互行为。该文提出一 种基于主从博弈的社区综合能源系统分布式协同优化运行 策略&#xff0c;将综合能源销售商…

墨子web3实时周报

蚂蚁集团Web3研发进展与布局 国内Web3赛道的领军企业——蚂蚁集团&#xff0c;凭借其在前沿科技领域的深耕不辍&#xff0c;已在Web3技术研发疆域缔造了卓越战绩。特别是在引领行业革新的关键时刻&#xff0c;集团于今年四月末震撼推出了颠覆性的Web3全套解决方案&#xff0c;…

苍穹外卖day1--开发环境搭建

整体结构 前端&#xff1a;管理端&#xff08;Web&#xff09; 用户端&#xff08;小程序&#xff09; 后端&#xff1a;后端服务&#xff08;Java&#xff09; 前端工程基于ngnix运行 启动nginx&#xff1a;双击nginx.exe即可启动nginx服务&#xff0c;访问端口号为80 后端…

ZStack教育云计算解决方案入选高质量数字化转型技术解决方案集

近日&#xff0c;中国信通院“铸基计划”《高质量数字化转型技术解决方案&#xff08;2023年度&#xff09;》&#xff08;以下简称“方案集”&#xff09;发布&#xff0c;云轴科技ZStack智慧教育云计算解决方案入选《高质量数字化转型技术解决方案集》。 为促进数字化转型相…

GPT-3.5和GPT-Plus的区别

GPT-3.5和GPT-Plus都是OpenAI开发的大型语言模型,但它们之间有一些区别: GPT-3.5就是大家熟知的ChatGPT GPT-Plus 是Open AI 的更强的AI模型GPT-4版本。两者区别是&#xff1a; 模型规模:GPT-Plus是GPT-3的一个更大版本,参数量更多。而GPT-3.5是GPT-3的一个优化版本,在参数量…

SpringCloud 基础配置

1.SpringCloud配置 目前是2024了,笔者也是开始学习SpringCloud 下面是给大家总结的微服务需要的各种依赖的版本 首先我们说一个重点强调 约定 > 配置 > 编码 千万不要一把梭,上来就是干代码,千万记得配置一定得对 2.微服务工程Base构建 首先我们创建父工程 创建出来直接把…