1 条题解

  • 0
    @ 2026-5-4 12:50:28

    解题思路

    我们将采取贪心策略。首先,我们尽量多地组成 256256 这个数。最多能组成的个数为:

    n256=min(k2,k5,k6)n_{256} = \min(k_2, k_5, k_6)

    然后,用剩下的数字尽量多地组成 3232 这个数。此时数字 22 的剩余数量为 k2n256k_2 - n_{256},因此最多能组成的个数为:

    n32=min(k3,k2n256)n_{32} = \min(k_3, k_2 - n_{256})

    不难发现,最终答案为:

    $$\text{ans} = 32 \times n_{32} + 256 \times n_{256} $$

    时间复杂度为 O(1)O(1)

    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
    	int k2, k3, k5, k6;
    	cin >> k2 >> k3 >> k5 >> k6;
    	int n256 = min(k2, min(k5, k6));
    	int n32 = min(k3, k2 - n256);
    	cout << 32 * n32 + 256 * n256 << endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    6783
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    1
    上传者