第十五届蓝桥杯国赛C++B组题解

A: 合法密码

暴力跑一下即可,坑点是pdf有换行,字母不算字符,最后答案是:400。

B: 选数概率

观察到第二个分数的分母很大,猜测 \((a + b + c) \times (a + b + c - 1) = 20910‬\) 发现无整数解,于是考虑到可能被约分了,将 \(20910\times2 = 41820\) 最后得到 \(a + b + c = 205\) 然后就可以借助计算机解方程了,最后解得 \(a = 55, b = 94, c = 56\)

C: 蚂蚁开会

如果想解直线方程就想复杂了,对于一条直线的两个端点 \((x_1, y_1)\)\((x_2, y_2)\) ,考虑从 \((x_1, x_2)\) 移动到 \((x_2, y_2)\) 枚举走过的整点然后存到map里面,当一个点被走过两次答案就加一。

D: 立定跳远

一眼二分答案,将使用技能转化为可以多设一个检查点,然后二分答案即可。

E: 最小字符串

先将第二个字符串排序(保证小的先插入),然后用两个指针分别指向两个字符串的头,遇到第一个字符串的字符大于等于第二个字符串的字符就将第二个字符串的字符插入到那个字符的前面,考虑插入操作会狠多,用链表模拟即可。(赛后发现甚至不用写链表,直接输出即可?)

F: 数位翻转

考虑使用动态规划,首先预处理出 \(a\) 的翻转序列 \(b\) ,定义 \(F_{i,j,0/1}\) 表示处理到第 \(i\) 个数,已翻转 \(j\) 个区间,第 \(i\) 个元素翻转还是不翻转,记得初始化 \(F_{i, 0, 0}\) ,最后答案就是 \(max_{j = 0}^{m}{F_{n,j,0/1}}\)

G: 数星星

发现 “星星” 可以看作只有一个根节点,其余作为叶子节点,然后就是一道组合计数问题,记录每个点的度数,每个点对答案的贡献是 \(\sum_{x=l-1}^{r-1} C_{du_i}^{x}\)预处理出阶乘和阶乘的逆元,然后就可以 \(O(1)\) 求组合数,考虑度数越大的点越少,度数越小的点越多,但是对求和次数不多,暴力求即可。

H: 套手镯

没想到正解,赛时想到把所有圆看成正方形,然后把正方形分别放在两种矩形的四个角尝试,最后二分加ST表去数点,太复杂,赛时没调出来。

I: 跳石头

赛时写了个暴力,开 \(n\)\(set\) 然后 记忆化DFS ,应该骗了不少分。赛后听 cyw 说bitset 应该能水过去,觉得挺对的。

J: 最长回文前后缀

不知道是不是正解,但是没想到 HACK 数据,考虑双指针,如果字符相同就往里面收,如果遇到不同,那么考虑删除左边区间或者删除右边区间,开个计数器记录相同个数,遇到相同的就继续往里面收,如果又遇到不同的就清空计数器,直到指针相遇,然后取最大计数值。

总结

这次B组国赛比去年简单,但是由于赛场硬件配置太差了导致 \(H\) 题没调出来,而且每次编译代码就耗费了很长的时间,开局不给网址也浪费了很多时间,但是最后还是国一了,估分大概110分左右,也算是圆梦了OvO。明年不准备再打了,祝明年参赛的小伙伴也能轻松国一。

posted @   XiaoMo247  阅读(728)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示