8.14模拟考总结

T1 蜗牛老师的成绩统计

首先,可以看出这道题考的是 结构体排序 ,第一关键字是 h h h,第二关键字是 m m m,最后是 s s s

考试的时候很快的就写出来了,这道题还是有点水。

T2 小蜗牛的逃离

这道题是一个 思维性强的贪心,考试时只是意味的去写模拟(这道题用模拟的话建议递归),但是超时了。

其实只用考虑几个点:

  1. 这一天是否必须采摘;
  2. 如果是,采摘后够不够吃;
  3. 如果不是,考虑采摘与不采摘哪个对后边的贡献最大

这三点只要考虑清楚了,那么这道题也就拿下了。

不过,在第三点,采摘对后边的贡献相信大家都会求,但不采摘的贡献是什么呢?

我们知道在循环到第 i i i天时,剩余的天数为 n − i n-i ni天。

如果不采摘,加等级,那么加一点等级对后边的贡献就是 n − i n-i ni点食物。

这样这道题就解决了。

T3 蜗牛老师研究基因

这道题考试的时候,读完题就看出来是个桶排,一遍过样例,之后就没管它。

结果因为数组开小了只得了 70 70 70分……

这一题其实只用把每一列分为 1 − n 1-n 1n ( n + 1 ) − 2 n (n+1)-2n (n+1)2n两部分,把前半部分存进桶里,后半部分判断就行。

也是到比较水的题。

T4 蜗牛老师的代码

这个题看了数据范围后当场就决定拿部分分

其实这道题拿 50 50 50分还是很简单的,只用把前1e6个字母映射到数组上,然后调用即可。

AC策略:我们先来分析一波:

  • 首先,这个字符串处理是有规律的;
  • 其次,n很大,所以不能用上边说到的方法,只能想办法缩小n。

怎么做呢?让我们先来模拟一下过程:

样例: ABC 3 7 5 12 //模拟过程: 先把字符串展开成12位: ABCCABBABCCA 我们可以把它分成以下几部分: ABCCA B B ABCCA 不难发现:第一部分和第四部分相等,第二部分和第三部分相等 因此,当我们拿到n时,可以先定义一个len记录字符串长度。 然后只要n>2*len,就一直让len*=2 然后只要n>字符串长度,就继续循环。 伪代码如下: while(chs<n) { long long dis=chs; while(n>dis*2)//可以一直进行折半操作 dis*=2; n-=(dis+1);//因为新的字符串的开头是上一个字符串的结尾,所以应减去dis+1 if(n==0) n=dis;//说明刚好是最后一个 }

因此,我们让每个n都进行一遍这个操作,直到n小于字符串长度。

这样就可以把n映射到原来字符串的位置上,最后输出即可。

T5 蜗牛老师的跳跃

这道题一开始有过搜索的思路,但是在时间仅剩半个小时的时候还没写出来,就用暴力打了20分。

正解有两种:广搜和dp,这里给出广搜的思路。

这个柱子上下也有周期,在这里我们想:

  1. 广搜在这道题里虽然效率也不低,但是只要数据一大就TLE;
  2. 因为这也有周期,所以我们想:
假设只有两根柱子,一根上下周期为2,另一根为3 那么,如果你第一秒在1号柱子上,第7秒又回到1号柱子上, 那么就相当于这7秒没有动。(不理解可以手推一下) 那么,我们就可以先求出这n个数的最小公倍数lcm 然后在算第i根柱子在lcm秒后有没有回到i 如果回到了,就说明没动,剪枝;否则就继续BFS
  1. 之后就按照正常的BFS来走程序就行。

这样这道题也解决了。


__EOF__

本文作者best_brain
本文链接https://www.cnblogs.com/best-brain/p/18006584.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   best_brain  阅读(7)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示