4 条题解

  • 4
    @ 2024-5-12 11:46:29

    这道题实际上是一个贪心算法。不要被“背包模型应用1”给迷惑住!

    简简单单一个排序,走你~

    #include <bits/stdc++.h>
    
    using namespace std;
    int n;
    long long m, a[100005], sum;
    int main()
    {
       cin >> n >> m;
       for (int i = 1; i <= n; i++)
       {
          cin >> a[i];
       }
       sort(a + 1, a + n + 1);
       for (int i = 1; i <= m; i++)
       {
          sum += a[i] + i - 1;
       }
       cout << sum;
       return 0;
    }
    
    
    • 1
      @ 2024-5-19 14:16:16
      重要提示

      不开long long 会10分的!!!~!~!!!!!!!!!!!~~~~~~~~~~~~~~~!!!!!*************************************************************************

      • 1
        @ 2023-11-4 16:34:34

        不要被“背包模型应用1”给迷惑住,这道题实际上是一个贪心算法。 排序后选择价值最小的,加上对应的涨价就可以了。

        代码
        #include <iostream>
        #include <vector>
        #include <algorithm>
        using namespace std;
        int main(void){
            int n,k;
            long long ans = 0;
            cin>>n>>k;
            vector<int> a(n);
            for(int i=0;i<n;i++)
                cin>>a[i];
            sort(a.begin(),a.end());
            for(int i=0;i<k;i++)
                ans+=a[i]+i;
            cout<<ans;
            return 0;
        }
        
        • 1
          @ 2023-8-20 18:50:44

          排序后选出价值最小的k个进行购买,并计算对应的涨价即可。

          代码
          
          #include <bits/stdc++.h>
          using namespace std;
          int n;
          long long k, a[100005], ans;
          int main()
          {
              cin >> n >> k;
              for (int i = 1; i <= n; i++)
                  cin >> a[i];
              sort(a + 1, a + n + 1);
              for (int i = 1; i <= k; i++)
                  ans += a[i] + i - 1;
              cout << ans;
              return 0;
          }
          
          • 1

          信息

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