2018/3/1 省选模拟考试 50分

本文分享了一次比赛的经历,包括T1题中遇到的空间溢出问题及缩点算法的实现偏差,T2题的暴力解法仅获50分,以及T3题未能解答但认为可能涉及LCA算法。通过这次经历,作者对算法的理解和实现有了更深的认识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

T1 30分模拟暴力,40分树的直径。拿了0分。(空间开小了爆了,因为缩点之后是又建了一次图,两个边的编号tot没分开,mdzz)

只写了后40分,而这40分中有20分不需要边双连通分量。写了一个类似于强连通分量(标记双向边)的缩点,应该实现哪里出了偏差,因为就算空间开大改正tot的bug也还是20分。

T2 写了50分纯暴力

会bsgs可以得80分好像,但是我只会快速幂和暴力,所以50.

T3 看了题目,没写,感觉是lca和一些神奇的操作。题解看上去是一个挺裸的lca,亏了。

 

转载于:https://www.cnblogs.com/137shoebills/p/8496784.html

<think>嗯,用户想知道如何高效快速地学懂蓝桥杯单片机。首先,我需要了解蓝桥杯单片机比赛的具体内容和要求。通常这类比赛涉及硬件设计、编程以及综合应用能力。用户可能是一个刚开始准备比赛的学生,需要从基础开始,但又希望高效学习,所以得给他规划一个合理的学习路径。 首先,应该明确比赛的大纲和考点。蓝桥杯单片机一般会考察哪些模块?比如LED、数码管、按键、定时器、ADC、串口通信等等。用户需要熟悉这些模块的原理和驱动方法。建议他先获取官方指定的开发板,比如CT107D,因为比赛题目通常基于特定的硬件平台。 接下来是模块学习。每个外设模块都需要逐个击破。比如先从最简单的LED控制开始,学习如何通过IO口控制灯的亮灭,然后逐步过渡到数码管的动态显示、按键扫描(特别是矩阵键盘)、中断和定时器的应用,以及ADC转换和PWM输出等。每个模块都需要动手实践,写代码并调试,这样才能加深理解。 然后需要练习编程能力。C语言在单片机开发中是基础,用户需要熟练掌握位操作、结构体、指针等,尤其是与硬件相关的部,如寄存器的配置。此外,模块化编程很重要,每个外设写成独立的.c和.h文件,方便复用和维护。中断服务函数的编写和优化也是关键,这能提高系统的实时性。 综合训练阶段,用户应该开始做历年真题和模拟题,按照比赛的时间限制来练习。通过真题训练,可以熟悉题型和考点布,找出自己的薄弱环节。同时,积累常见的代码模板,比如数码管显示函数、按键处理函数等,这样比赛时能快速调用,节时间。 硬件设计方面,用户需要熟悉开发板的原理图,了解各个外设的连接方式,特别是IO口配、扩展接口和外围电路。比如,CT107D开发板上的74HC138译码器、74HC573锁存器等,掌握这些芯片的工作原理能帮助更好地控制外设。 调试技巧也很重要。学会使用万用表、示波器等工具检查硬件连接,软件调试时要利用断点、单步执行和观察变量值。遇到问题时,先排查硬件连接,再检查代码逻辑,特别是时序和中断处理部。 时间管理和心态调整同样不可忽视。制定每日学习计划,合理配时间,避免疲劳。比赛过程中要冷静析题目,合理配时间,先解决容易的部,再处理难题。 最后,推荐一些学习资源,比如官方文档、经典教材、在线教程和社区论坛,这些都能帮助用户及时解决问题。通过系统的学习和持续的实践,用户应该能够在短时间内有效提升自己的单片机技能,为比赛做好准备。</think>要高效快速掌握蓝桥杯单片机竞赛内容,可按照以下结构化步骤进行: ### 一、明确竞赛大纲与核心考点 1. **硬件平台**:CT107D开发板(国信长天) 2. **必考模块**: - LED控制(流水灯、呼吸灯) - 数码管动态显示 - 矩阵键盘扫描 - 定时器/计数器应用 - ADC/DAC转换 - EEPROM存储操作 - 串口通信(UART) ### 二、模块突破学习(建议每模块投入3-5小时) 1. **LED控制** - 基础:74HC138译码器+74HC573锁存器控制原理 - 进阶:PWM调光实现呼吸灯效果 ```c // PWM调光示例 void LED_PWM(uint8 duty) { P2 = (P2 & 0x1F) | 0x80; // 择LED锁存器 P0 = (duty > 50) ? 0xFF : 0x00; // 占空比控制 } ``` 2. **数码管动态显示** - 掌握段/位离控制 - 消影处理技巧 ```c void SMG_Display(uint8 pos, uint8 num) { P2 = (P2 & 0x1F) | 0xE0; // 位 P0 = 0x01 << pos; P2 = (P2 & 0x1F) | 0xC0; // 段 P0 = SEG_CODE[num]; } ``` ### 三、关键编程能力提升 1. **寄存器操作规范**: - 使用`sfr`定义特殊功能寄存器 - 采用位运算进行寄存器配置 ```c sfr P4 = 0xC0; // 扩展IO口声明 P4 = (P4 & 0xFE) | 0x01; // 仅修改最低位 ``` 2. **中断系统精要**: - 定时器中断配置模板 ```c void Timer0_Init() { AUXR |= 0x80; // 1T模式 TMOD &= 0xF0; // 模式1 TL0 = 0xCD; // 10ms@12MHz TH0 = 0xD4; ET0 = 1; // 使能中断 TR0 = 1; // 启动定时器 } ``` ### 四、真题实战策略 1. **题目析流程**: ``` 接收题目 → 划功能模块 → 绘制流程图 → 编写驱动函数 → 系统集成 → 调试优化 ``` 2. **时间配建议**: - 硬件连线检查:10钟 - 核心功能实现:60钟 - 系统调试优化:20钟 ### 五、高效调试技巧 1. **硬件快速排查**: - 使用万用表蜂鸣档检查线路通断 - 重点检测P0口上拉电阻(需外接) 2. **软件调试方法**: - 模块验证(单独测试LED/键盘等) - 利用LED作为状态指示灯 ```c if (key_pressed) P0 = 0xFE; // 按键触发指示 ``` ### 六、推荐学习路径 1. **第一阶段(1-2周)**: - 完成所有外设模块独立驱动 - 掌握IAP15F2K61S2单片机特性 2. **第二阶段(1周)**: - 完成3套历年真题(2018-2021) - 整理常用代码模板库 3. **冲刺阶段(1周)**: - 进行全真模拟考试(4小时/套) - 重点突破ADC/EEPROM综合应用 ### 七、注意事项 1. **硬件特性**: - IAP15系列无需外部晶振/复位电路 - P0口作为输出时必须外接上拉电阻 2. **代码规范**: - 避免直接使用`while(1)`死循环 - 中断服务函数保持简洁(建议<50行) 通过每天保持4-6小时的针对性训练,结合模块化学习和真题实战,可在1-2个月内达到参赛水平。重点要建立完整的知识框架,培养快速定位和解决问题的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值