10 条评论

  • @ 2025-11-24 15:51:03

    11.21 检讨

    T1神秘挂分,T2A了,T3没打暴力应该检讨,T4用神秘剪枝卡到了50分,T3先考虑人坐不坐车,再把每个人与车重合的时间看做一个区间,贪心的取区间即可。T4正解要用到三元环计数,但我不会lol。

    总结:打的不错,个人认为打T3暴力不如写出T1。

    • @ 2025-11-22 17:24:56

      DAY 5

      57min 7:30~8:17

      A B C D 预思考, B 发现超级水,感觉 C D 基本上要寄,那么就必须要全力开 A B 了。

      然而半天还是只有 A 的暴力思路。

      15min 8:17~8:32

      A 写暴力,感觉越写越奇怪,才发现自己想错了,故先去写 B

      15min 8:32~8:47

      切掉 B ,放弃对拍,上厕所去了。

      46min 9:05~9:51

      D 树的点,骗完发现复杂度是错了,想了半天优化也没想出来,浪费了很久无果回到 A

      43min 9:51~10:34

      继续写 A ,感觉一开始自己的思维方向就是错的,大样例还是死活过不去。

      1H11min 10:34~11:45

      想写 C 然而从来都没想过能二分,写不出来还是只能继续熬 A ,重构了两遍代码终于...

      11:45 极限了 在经历一个小时gzf的胡搞瞎搞乱搞之后
      在严肃的思路断层情况下
      在严峻的代码荒漠环境中
      A仍然像一颗坚韧的种子 在这里生根发芽了!

      然而自己光沉浸在成功的喜悦中,搞忘了分析代码的复杂度了,结果就是事实上 A 的复杂度其实是错的... (小丑の小曲)

      • @ 2025-11-22 17:14:39

        T1

        • 涉及到字符串前缀,考虑字典树
        • 写了一版过不了大样例,手搓样例调了下还是不过。
        • 考虑思路是不是出了问题,对拍了一下果然是这个。但是暂时不知道怎么调,所以就往后面跳。

        T2

        • 操作的方式感觉可以推出来若干的结论,所以先在草稿本上画了大半页的括号手玩。
        • 注意到了只有怎样的前缀才能发挥作用(比如前缀里面就有个缺了左括号的右括号,那么显然再怎么重复也没用)。同时发现了前缀重复的作用就是给后面的残缺括号提供左括号。
        • 一下写完,大小样例都过了,完美收官

        T3

        • 我菜,看到前面的大佬们都被这个搞得死去活来。我最开始没想到二分答案,而是直接考虑正着贪心算答案。然后稍微考虑了下,被众多考虑的细节和因素吓到了。所以放弃
        • 实际上这个也涉及到了正难则反的思想。正着算答案很不好算。反过来我知道答案了,要去验证它很容易,正好答案还是单调的,所以最开始应该是显而易见的

        T4

        • 注意到了就是选一个环,然后隔一个选一个的结构。但是不会维护。
        • 注意到了特殊数据点的树和链。还有四十分。乍一下没记住独立集,写了个“可以总司令”上去,然后发现调过来了。
        • 归心似箭,赶紧回去调T1

        T1

        • 发现题目并不是我想的拆分成若干个不相交区间,而是类似双指针算若干可以相交的区间
        • 实现时出了许多的唐人错误
        • 用遍历字典树维护当前区间所有字符“并起来”的最后一个字符这个想法调了我好久。最后10min10min的时候弄出来了。也算有惊无险
        🤔 1
        • @ 2025-11-22 17:02:46

          DAY5 检讨

          分数:100 + 100 + 80 + 0

          评价:出保底了,但是花了 5 天。

          赛时:T1 手玩了一会发现每次都找前面最长的串的性质,然后实现花了一会,用了大概 1h。T2 5min发现结论,10分钟实现。直接开 T3,显然贪心。根据题目逐步分析每个值觉得什么,然后发现先送最慢的。由于不太好直接算,所以二分。得到时间序列。想出这个大概又花了0.5h。接着就是一直分类讨论推公式,拆问题。推公式花了很久,草稿太乱只能重推。下周应多带草稿纸。最后T3花了大概2h大样例过不了。还是对问题细节没分讨干净。T4 也应该分配多一些时间手玩样例,观察特殊性质。这样不至于0分。

          • @ 2025-11-22 15:00:24

            NOIP 11.21 Day5 检讨

            首先先说一下时间分配问题,T1 和 T2 一共写了 1h,写的非常快,虽然我没有写对拍,但我严谨的证明了我做法的正确性以及时间复杂度正确性(这是真的吗?)。

            然后我去写 T3,一眼想出贪心,但是觉得代码会很难写,于是我去写了 T4,最后没有检验 T4 代码正确性(思路这么简单怎么可能写错!!!)。然后输入了 nn 条边导致趋势。

            T3 痛苦鏖战了剩余的所有时间(赛后分析认为这是一个非常严重的失误)。最后贪心写的有问题,且部分边界没有完全写对。

            所以综上所诉,问题有这三点:

            第一点 all in T3 是一个不明智的选择。

            第二点 不检查其他题是一个不好的思想,尤其是这次的 T4,又犯了些神秘老毛病。

            第三点 当时没有写出 T3 就应该重新整理思路然后看看要不要重构代码,而不是在那里硬熬,对着一份shi山代码修修补补。

            正对于这些的改进我认为可以有以下几点:

            第一点 增强码力。

            第二点 写对拍或造样例检查。

            第三点 不要坚信自己写的天衣无缝(在没有确保正确性的情况下)。

            • @ 2025-11-22 14:42:45

              检讨(比赛)

              T1

              美美的T1让我红了个大温。首先T1读完题。一看字符串,还和前缀有关系。一下就想到了字典树。关于字典树比赛场上的我是,大致思路记得,但具体怎么写的好像忘了。于是花了40分钟的字典树的建树磨了出来。然后接下来的2h就在探究如何去算这个答案。显然没有看出来。我知道在这么写T1比赛就完蛋了。于是去看T2;

              T2

              T2一看思路还是挺明显的,一下就想到O(n)的做法了。于是经过1h的奋斗所有样例都过了。于是就写下一道题了。

              T3

              除了比赛一开始看了一下T3等到第二次看到T3时,时间已经不多了,初看一眼感觉也没什么丝路,感觉模拟起来挺复杂的。主要是没想到什么贪心。于是惨惨离场。

              其实主要还是卡在一道题上太久了,把T1想的太复杂了。面对一些看起来复杂的题没啥丝路。

              检讨(关于我11.22日中午出去吃饭没能及时回来,迟到了的事)

              教训:以后一定严格把控时间,要考虑的意外情况,还有就是遇到任何意外情况先报备。其他的和楼下一样

              👎 1
              • @ 2025-11-22 14:30:19

                检讨:虽说达标 但迟到了

                事情

                我 和 张恒毅 和 陈柯翰 于 2025/11/22 中午 跑去给同学过生日饱餐一顿 没有做好时间规划 导致下午课迟到了 并且没有给老师说明情况 对此我深感抱歉

                总结

                • 以后干什么事都先要做好时间规划(包括打比赛)
                • 就算已经到了无法挽回 万劫不复的地步了 要给沙老师报备
                🤡 1
                • @ 2025-11-22 10:52:17

                  感觉这次比赛时间分配和策略上问题比较大。

                  关于NOIP模拟赛D5T1少拿3档分惨案的检讨。

                  我非常检讨T1没拿分这件事。

                  我在赛上刚拿到题就想:T1放字符串,但是结论场,还是前缀匹配,首先想到排序,然后顺着这个思路想就有了下面方案:

                  可以用字典树上dfn进行线性排序,或者sort多个O(logS)O(log\sum|S|)
                  排序后维护一个栈,使得对于每个位置其前一个位置的字符串为其前缀,使用字典树进行前缀匹配,失配则弹出直到匹配上为止。
                  同时进行类二维数点的操作,用set维护所有栈内的点构成的连续段。
                  由于每个位置只会被加入一次,在每次加点时将产生的新贡献计入答案即可。

                  然后写写写,写了1h+,搓了130+行代码,最终艰难通过大样例。

                  然而自作聪明把原本只需O(26e6)O(26e6)的数组开成了O(156e6)O(156e6),于是喜提MLE100pts0pts100pts \rarr 0pts

                  赛后发现其实是更结论的结论题,只需单调队列就能完成。

                  教训:多思考一会儿,不要拿到一个想法就开写,可能会导致浪费更多时间。

                  关于NOIP模拟赛D5T3少拿2档分惨案的检讨。

                  我在T3的时间分配有问题,一上来就写了大量分数类代码,并且想到很强的反悔贪心。然后就All In了这道题,写了1h+,然后样例输出错误,越调越红温,最后只能交非常错的期望0分代码。

                  当时赛上完全没想到二分答案,发现自己二分的考虑有待加强。

                  关于NOIP模拟赛D5T4少拿1档分惨案的检讨。

                  T4一眼看到特殊数据,只需要判断是否为独立集即可,但是由于神秘原因写了一个树上染色并判断是否同色,而且代码中数组名还用错了。

                  完全是没有写暴力导致的,甚至没有手磨小样例,直到比赛最后才想起来要编译一下,所有时间都写T3去了。

                  • @ 2025-11-22 10:27:45

                    DAY5检讨

                    赛后感想:

                    题目是依托答辩,考的也是依托答辩。

                    挂题方面:

                    T1:读题有问题,思路错误,暴力打错 T3:时间不够写,随机数跑太快了 T4:题目不太懂,能写的部分数据点"Yes"与"No"写反了。

                    赛后检讨:

                    T1:首先是题目读错了,在看数据点时,只看到了n<=2e5,s<=1e6n <= 2e5 , |s| <= 1e6 但实际上,它的 s s 的范围是 sum(s)<=1e6 sum(|s|) <= 1e6 所以一直在想如何优化时间(PS:当时没有想到如果 s<=1e6 s<=1e6 读入都会超时),浪费了很多时间。最后思路也是错的,我想的是连续一段区间找到不能匹配的后直接把前面所有的都不要了,但是正解是找最大,次大......的一直暴力比较,直到能匹配上的情况。然后就可以过了。

                    T3:我在开始写这道题的时候已经将近 11:00 11:00 了,所以只有 50 分钟左右的时间来写,这道题思路还是简单,就是暴力枚举每个人的上车时间和下车时间再反悔贪心枚举哪些人在某个时间段可以坐车。 但是,他的代码部分比较难写(PS:我自己感觉),再写一半的时候就快结束了。所以写了个随机数,又因为常的电脑跑太快了,所以所有数都是一样的。

                    T4:这道题纯屎山题,开始的时候完全不会,后面看了下数据,有40分可以写。但是空间定义小了(虽然定大后会MLE),所以RE了,而且我"Yes"和"No" 好像写反了。

                    总结:

                    第一题纯是自己FW,第三题屎山模拟加贪心,第四题更是屎的不能再屎,自己还挂分了。

                    周六检讨:

                    今天我和CKH,CS在没告知老师的情况下没参加午休,并且在下午上课迟到了。原因是同学生日,和他们出去吃饭了,但是因为我们没有提前告知,导致回校时因为堵车迟到了,我对此深刻检讨,在以后有特殊情况时,都会提前和老师说,防止再有意外发生

                    • @ 2025-11-22 10:09:22

                      11.21 反思

                      赛时历程

                      T1 最初想到哈希 + 二分排序后计算,上厕所时想到字典树的性质,于是采用了遍历字典树字典树,用 set 维护的做法

                      T2 直接想到了如果重复了的字符串是完美匹配,则后面未匹配的右括号数一定是前面未匹配左括号数的倍数,写完后对拍,拍出来发现没判断前后都完美匹配的情况,修改后拍了 6×1046 \times 10^4

                      T4 最初在想线段树分治,然而没有什么用。接着感觉可以状压,把边数较多的点加入状态,然后发现边数较小的点的添加有问题。于是重新读题,发现没有删除操作,只有添加和清空,于是想到可以对于边数较多的点预处理 bitset ,O(nw)O(\frac{n}{w}) 合并,否则直接暴力 O(degreei)O(degree_i) 添加,判断独立集

                      然而没有注意到偶回路上有一半点在集合内的性质,导致回路的判断是朴素 dfs,只能拿到树和链的部分分

                      T3 没有想到二分答案,而是试图直接算出答案。想到贪心是让速度慢的人多坐车,所以想把所有人与车相遇的时间和下车的时间塞到优先队列里,每次取出最早的时间点,如果车满了,就和速度最大的人比较到达时间,如果让当前人上车更优,就把那个人踢下车,计算下一次上车的时间点,并用一些标记保证取出的时间点是最新的(这里想错了,实际上只有至多一次有价值的上车),写了半天发现想得太复杂,写不动,题目又没有什么部分分,于是放弃了去想 T4

                      赛后总结

                      • 一道题有思路时,不妨先多思考一下,看看有没有实现更简单、码量更小或原理更清晰的方法,防止浪费太多时间
                      • 1

                      信息

                      ID
                      7
                      时间
                      1000ms
                      内存
                      256MiB
                      难度
                      10
                      标签
                      (无)
                      递交数
                      6
                      已通过
                      0
                      上传者