wtpavssite

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2026春季下学期第一周

周二下午来打天梯赛,做了八道,错了三道,得了68。寒假训练的太水了,然后头也晕得很。错了的三道题是6,7,8。第六题错的原因是往后移动的时候没有考虑到要是移动的太多大于整个字符串的长度的话会导致出错,只需要把k对长度n取模就可以了。第七题一开始写超时了,加速的思路就是在进行操作2的时候不要实际对字符串进行交换,而是通过标记是否交换了左右两段字符串,操作1的时候是根据标记找到映射的位置进行交换,这样时间复杂度会从原来的O(k*n+2n)到现在的O(k+2n)。
周三晚上在改周二的天梯赛的第八题。
周四早上在改第八题然后再写第九题,周四晚上用并查集做出来了第九题,然后知道了一个并查集的优化方法:路径压缩。第八题也写出来了,我一开始错的原因就是这种排名的没写过,写出来逻辑有点乱。然后看了10和11,感觉10一开始看不懂,所以先思考11
周五早上写11,因为昨天听见有学长在说这道题是dp所以我也是往dp的定义的方向在想,我最开始想的是dp的定义是合并到第i步可以得到的数字,照这个思路来写还是把代码写出来了,这个思路的完全写对了,但是我发现和样例的输出不一样,说明我的dp的定义没弄对。刚刚把前面这段文字写下来突然发现,如果dp的倒数第二行减去倒数第三行为1说明这个数字是直到倒数第二行所有操作可以达到的数字,那么只需要把dp最后一行设置为两个操作的结果就可以了。原来我并没有完全想错。照这个思路改了代码之后确实样例对了,但是交上去结果全错了。。然后在群里问了发现这道题是不需要状态继承的,我最开始的思路虽然不是全对但是已经很接近了,作为自己独立得出解题还是不错。下午的时候把这道题给些出来了
周六下午天梯赛训练,一共15个题,做了11个前面那八个是对的,因为很简单,还有两个寒假训练过的原题,所以我直接复制的原来的代码,但是这个好像是不行的,可是真的很方便啊。有三个没做出来,其实看了的题是有12个的,但是有个10题是图的最长链,真是不太会那个,所以先跳过了。然后第九题包装机错的原因是逻辑有点纰漏,在筐已经满了的情况下,就算执行了推动轨道的操作,但如果轨道是空的,不会执行0的操作,而我错的原因就是如果轨道是空的,也会执行0操作。因为这道题有点简单所以就不会写在我的错题集里面。11题的清点代码库赛后发现我的cmp函数有个情况忘写return,主要是这道题本来就是结构体代码量大,而且比赛了一段时间没有最开始清晰了。除开这个问题还有个超时的问题。
周日下午来补题,因为昨天下午学长和我说了11题我把输出全部变成字符串的操作是不对的,加入有个1,12和11,2我和起来之后都是112,虽然在输出的时候是没有问题的,但是在归类的时候会归为同一类。然后我就照着AI的思路来改,最后我使用的map做出来的。因为map的键其实是有很多种类的,比如这个道题我们可以把每个结构的输出记作一个数组,而这个数组其实是可以作为map的键的,所以这道题的归类用map来做是个很简单的。然后AI的思路是把map再用vector存起来方便sort,然后在这里AI用的sort是用的lambda写法也就是image
,而在这道题的具体的写法就是image
,这样写可以直接在sort后面直接写lambda而不用写一个cmp函数。其实我觉得两者都是差不多的。还写了比赛的时候没写的第十题是一个求树的最深深度和最小的最长路径的,这道题就直接写在错题集里面了。晚上的时候来打牛客的周赛,前两个都是签到题,后四个是思维题,第三个关键在于观察,可以发现我们最佳的情况是从第一个元素开始逐渐递减1,而当实际的下一个比这个应该变成的还要小的时候,那么我们就只有把递减的开始变成这个更小的数字,然后继续递减1,知道下一个应该变成0,一旁加个计数器最后输出就可以。第四题确实简单,但是要卡时间,我最开始是想用max_element来写的,可是我忘了这个函数传入的参数是容器的迭代器,而不是元素,然后这个函数返回是指针也就是地址。所以最后我写的for循环对区间求最大最小值,显然我T了。

posted on 2026-03-03 21:04  wt_pav  阅读(11)  评论(0)    收藏  举报