2 solutions

  • 2
    @ 2026-5-26 17:52:32

    #include<bits/stdc++.h> #include #include using namespace std; int n; int mian(){ cout<<1; return 0; }

    • -4
      @ 2025-10-16 17:31:00

      T2 石头称重(stone)

      最暴力的方式是将所有可能的重量都求出来,排序后选择第 kk 小的。那么该如何优化解法呢?

      题目中有一个非常重要的性质:编号为 ii 的石头比所有编号小于 ii 的石头加起来的重量还要重。意思就是无论在所有编号小于 ii 的石头怎么选重量都不如直接选 ii 得到的重量重。

      这其实与二进制有相同的性质,对于二进制的第 ii 位,一定比 0i10 \sim i-1 位之和更大。于是我们利用二进制的方式解决此题。

      如果 kk 的二进制下第 00 位为 11,则选择第 11 块石头;第 11 位为 11,则选择第 22 块石头;依次类推,最终我们就得到了所选的石头的集合,将重量相加即可。

      • 1

      Information

      ID
      1598
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      8
      Tags
      (None)
      # Submissions
      101
      Accepted
      13
      Uploaded By