Nhờ xem giúp code tối ưu tổng chi phí nối dây

Cho N sợi dây với độ dài khác nhau được lưu trong mảng A[]. Nhiệm vụ của bạn là nối N sợi dây thành một sợi sao cho tổng chi phí nối dây là nhỏ nhất. Biết chi phí nối sợi dây thứ i và sợi dây thứ j là tổng độ dài hai sợi dây A[i] và A[j].

  • Input:
    Dòng đầu ghi số bộ test T (T<10). Mỗi bộ test gồm 2 dòng. Dòng đầu tiên là số nguyên N (N ≤ 2*10^6).
    Dòng tiếp theo gồm N số nguyên dương c[i] ( 1 ≤ A[i] ≤ 10^9).

  • Output:
    In ra đáp án của bộ test trên từng dòng, theo modulo 10^9+7.

  • Ví dụ:

    • Input:
      7
      2 4 1 2 10 2 3

    • Output:
      59

  • code C++ của em bị sai chỗ nào, mong anh chị hỗ trợ ạ.

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    vector <int> v;
    cin >> n;
    v.resize(n);
    for(int i=0; i<n; i++){
        cin >> v[i];
    }
    int sum=0;
    while(n>1){
        sort(v.begin(), v.end());
        v[0]=v[0]+v[1];
        v.erase(v.begin()+1);
        n--;
        sum+=v[0];
    }
    cout << sum;
}

bạn gặp vấn đề gì khi chạy code?
ý tưởng của bạn là gì?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?