全部评论 12

  • 置顶

    当然这些题难度都不会特别大,因为本人很蒻(悲

    2026-08-01 来自 广东

    1
    • P话s are forbidden in AIGO.

      2026-08-04 来自 上海

      1
    • 你好强,你要 AK NOI 了

      1周前 来自 浙江

      0
  • 广东 OIer 夯爆了

    2026-07-30 来自 广东

    2
    • 您比我强

      2026-07-30 来自 广东

      0
    • 您比我强,我比您强,左脚踩右脚,你我兄弟其上焉有一合之敌

      2026-07-30 来自 广东

      3
  • 前 缀 和 好 题

    2026-07-30 来自 浙江

    2
  • 啊?我第一题的想法是波鲁乌卡求 MST,每次合并时由于区间 gcd 特性只用一个数组维护每个元素到左右一个联通块外元素最近点然后计算合并即可,修改时由于性质不变再计算一下就行了(求大佬看看,感觉完全没有前途(不是

    2026-08-01 来自 广东

    1
    • sorry 说错了应该反过来,这样每个联通块只考虑左右端点,反而还更快了(大雾

      2026-08-01 来自 广东

      1
    • 这样是单 log\log@Asdfre

      2026-08-01 来自 广东

      1
    • 卧槽答案有影响,倒闭了/ll

      2026-08-01 来自 广东

      1
  • 前 缀 和 好 题 但是我被骗了还真去做了(然后我一晚上就废了)

    2026-07-31 来自 上海

    1
  • 初识暴力枚举

    浅谈暴力枚举好题。

    这题一看没有思路,哇是红题,听别人说写出来一道就能拿图灵奖的那种,我要试试。

    哎发现了!我们好像可以用很厉害的fro 循环!天啊,我们来验证一下:哎,为啥我不会,算了,先这样写,我要翻翻iowiik看看咋写...okok!终于写出来了,接下来...天啊是不是判断啊,我记得好像算法竞赛里有个叫什么fi的东西,啊啊啊不是是if,对!看我写一个!接下来...不会吧,难道说写完了?好像是的,交一下。

    妈呀过了,我的图灵奖呢???

    #include <iostream>
    using namespace syh;
    int main()
    {
        int n;
        cin>>n;
        for(int i = 1;i<=n;i++) 
            {
                if(i%3==0&&i%5!=0) cout<<i<<'\n';
            }
    }
    //哦耶我的代码过了!!!
    //庆祝
    

    2026-07-30 来自 浙江

    1
  • 大佬您到底还有多少期没发...

    2026-07-30 来自 浙江

    1
    • 注意到你GO大佬越来越多了

      2026-08-05 来自 上海

      0
  • 好的,我用一个最生活的例子给你讲明白。

    1. 先看个“笨办法”

    假设你是一个老师,班里同学排成一排,每个同学手里拿着一张扑克牌,点数分别是:[3, 1, 4, 1, 5]

    这时候校长问你:“前3个同学手里的点数总和是多少?”
    你算一下:3+1+4 = 8,轻松答出。

    校长又问:“第2个到第4个同学的总和是多少?”
    你算一下:1+4+1 = 6,也算出来了。

    但如果校长连续问你100遍,每次问不同的区间(比如第3到第5,第1到第4),你每次都得从头一个一个加起来算,是不是累死了?这就是笨办法,每次都要重新循环加一遍。


    2. 前缀和是什么?——“记账本”思维

    前缀和,就是提前把“从开头到当前位置”的总数记在一个小本本上

    还拿 [3, 1, 4, 1, 5] 举例,我们拿出一个新本子(前缀和数组),记下:

    • 第0位:先写个 0(代表还没开始加)。
    • 第1位(前1个和):0 + 3 = 3
    • 第2位(前2个和):3 + 1 = 4
    • 第3位(前3个和):4 + 4 = 8
    • 第4位(前4个和):8 + 1 = 9
    • 第5位(前5个和):9 + 5 = 14

    所以这个“记账本”就是:[0, 3, 4, 8, 9, 14]


    3. 有了这个本子,怎么快速答题?

    记住一个万能口诀:“要求哪一段,就用大数减小数”

    • 校长问:“前3个总和是多少?”
      看本子第3位:8(直接拿出来,不用算)。

    • 校长问:“第2个到第4个(1+4+1)总和是多少?”
      那就是 本子第4位 减去 本子第1位
      计算:9 - 3 = 6。完美,一秒出答案!

    为什么? 因为“前4个总和(9)”减去“前1个总和(3)”,剩下的正好是第2、3、4个的和。


    4. 总结三个要点

    1. 本质空间换时间。多花一点内存存“记账本”,但换来了飞快的查询速度。
    2. 核心操作:预处理时,每一项都是 前一项 + 当前数
    3. 最大的好处:当你需要反复、多次求不同区间的和时,用前缀和只需要做一次减法,而不用每次都循环累加。数据量越大,它比笨办法快得越离谱(从 O(n) 变成 O(1))。

    5. 一个生活联想

    就像你每月的花销。不记账的话,你想知道“3月到8月花了多少钱”,得把每月账单翻出来加一遍。
    前缀和就是你每个月都记一笔“今年到目前为止一共花了多少钱”。那么想查任意两个月份之间的开销,直接拿“截止到8月的总数”减去“截止到2月的总数”就行了,省时省力!

    2026-07-30 来自 广东

    1
    • 就像你每月的花销。不记账的话,你想知道“3月到8月花了多少钱”,得把每月账单翻出来加一遍。
      剪枝就是你每个月都记得“我早就没有钱了”。那么想查任意两个月份之间的开销,直接拿“0”减去“0”就行了,省时省力!

      2026-07-30 来自 广东

      0
    • 2040 年洛谷前缀和文章 belike

      2026-07-30 来自 浙江

      0
  • 我要米浴的数据结构课(在地上打滚大叫

    2026-08-01 来自 广东

    0
  • 你咋会这么多

    2026-07-31 来自 广东

    0
    • 哦不不不我无疑是拜谢的

      2026-07-31 来自 广东

      1
    • /bx

      2026-07-31 来自 广东

      0
  • 不应该是 SrSl1S_r-S_{l-1} 吗/yiw

    2026-07-30 来自 广东

    0
    • 打错了。。

      2026-07-30 来自 广东

      0
  • d

    2026-07-29 来自 广东

    0

热门讨论