1 条题解

  • 0
    @ 2026-10-25 16:59:57

    由于两种方案不同当且仅当选择的小木棍的下标集合不同,也就是我们不关心选出来的木棍怎么排序,那么这个多边形我们能知道的重要信息只有使用的木棍数量和使用的木棍长度最大值。

    显然,这两个信息同时处理并不方便,我们肯定得先解决掉其中一个点。样例解释中解释是按照使用的木棍数量顺序给出的,考虑到一般黑心出题人都喜欢用样例解释误导选手,所以我考场上果断选择从使用的木棍长度最大值入手。

    假设已知多边形最长的木棍是哪根,那么有多少种选法? 显然,选法数量就是用短于最长木棍的所有木棍拼出来的长度中,大于最长木棍长度的数量。

    题目加粗文字中有“集合”二字,想一想可以发现:从集合中挑出一些数,求组成某个和的方案有多少种,这是经典的 01 背包计数问题。

    于是我们可以升序枚举用到的最长木棍,并求出所对的方案数。

    特别地,对于大于 maxmax aia_i ​ 的长度的方案数,我们并不关心他们实际有多长,全部记为长度为 5001 即可。 时间复杂度为 O(n×maxai)O(n×max a_i),空间复杂度为 O(maxai)O(max a_i)。

    • 1

    信息

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