Получение WA в УВА 10954

Давайте добавим немного изобретательности к нему. Операция сложения требует затрат сейчас, а стоимость является суммой этих двух, которые будут добавлены. Итак, чтобы добавить 1 и 10, вам нужна стоимость 11. Если вы хотите добавить 1, 2 и 3. Есть несколько способов 1 + 2 = 3, стоимость = 31 + 3 = 4, стоимость = 42 + 3 = 5, стоимость = 53 + 3 = 6, стоимость = 62 + 4 = 6, стоимость = 61 + 5 = 6, стоимость = 6 Всего = 9 Всего = 10 Всего = 11 Я надеюсь, что вы уже поняли свою миссию, чтобы добавить набор целых чисел так, чтобы стоимость минимальна. Входные данные Каждый тестовый пример начинается с положительного числа N(2N5000), за которым следуют N положительных целых чисел (все меньше 100000). Ввод прекращается в случае, когда значение N равно нулю. Этот случай не должен обрабатываться. Выходные данные Для каждого случая выведите минимальную общую стоимость сложения в одной строке.

Пример ввода

3   
1 2 3   
4  
1 2 3 4  
0  

Пример вывода

9  
19  

я попытался отсортировать указанный массив, а затем взял другой массив для cumsum (CS) и суммировал все элементы CS, кроме cs[0].. я получаю WA для этого подхода, пожалуйста, объясните

int n,i,hold=0;   

while(1)   
{
    cin>>n;

    if(n==0){break;}

    int arr[n],cs[n];

    for(i=0;i<n;i++) cin>>arr[i];

    sort(arr,arr+i);

    cs[0]=arr[0];

    for(i=1;i<n;i++){cs[i]=arr[i]+cs[i-1]; }

    cs[0]=0;
    int sum=0;
    for(i=1;i<n;i++){sum+=cs[i]; }
    cout<<sum<<endl;
    sum=0;

}

вход:

9
66 85 52 22 44 1 59 88 67 
0

мой выход:

1822

ожидаемый результат (удебуг):

1454

получать WA

2 ответа

Используйте минимальную кучу и добавьте 2 самых маленьких элемента. Пример:

1 2 3 -> 3 3 -> 6. 1 2 3 4 -> 3 3 4 -> 4 6 -> 10.

Надеюсь, это поможет.

Ваша идея неверна, чтобы решить эту проблему. после взятия всех элементов в структуре данных вы должны повторить следующие 3 пункта: 1) сортировать. 2) суммируйте первые два значения и удалите первые два значения из структуры данных. 3) добавьте сумму к стоимости и структуре данных.
Вы можете использовать priority_queue в качестве структуры данных.

Другие вопросы по тегам