QOJ.ac

QOJ

Time Limit: 2.5 s Memory Limit: 256 MB Total points: 100 Difficulty: [show]

#18305. Стога сена

Statistics

У Farmer John есть $N$ стогов сена ($1 \leq N \leq 5 \cdot 10^5$), где $i$-й стог содержит $a_i$ тюков сена ($1 \leq a_i \leq 10^9$). Он хочет убрать все эти тюки сена, и у него есть $M$ ($1 \leq M \leq 2500$) коров, которые могут помочь. Если корову наймут, $i$-я корова повторит следующее $s_i$ раз ($1 \leq s_i \leq 100$) за стоимость $c_i$ ($1 \leq c_i \leq 10^9$):

  • Если стог содержит хотя бы $p_i$ тюков сена ($1 \leq p_i \leq 10^9$), то корова уберёт один тюк сена.
  • Если стог содержит меньше $p_i$ тюков сена, корова ничего не делает.

Для каждого стога FJ хочет убрать все тюки сена в нём. Он будет делать это, нанимая коров по очереди (возможно, одну и ту же корову более одного раза), пока стог не станет пустым. Помогите FJ определить для каждого стога минимальную стоимость его опустошения.

Входные данные

Входные данные поступают из терминала / stdin.

Первая строка содержит $T$ ($1\le T\le 100$) — количество независимых тестов. Каждый тест имеет следующий формат:

Первая строка содержит целое число $N$. Вторая строка содержит $N$ целых чисел, $a_1, a_2, \dots, a_N$.

Третья строка содержит целое число $M$. Затем следующие $M$ строк будут содержать $p_i, s_i, c_i$.

Гарантируется, что коровы смогут убрать все тюки сена в каждом стоге. Кроме того, гарантируется, что сумма $N$ по всем тестам не превышает $5\cdot 10^5$, а сумма $M$ по всем тестам не превышает $2500$.

Выходные данные

Выводите результат в терминал / stdout.

Для каждого теста выведите $N$ целых чисел, разделённых пробелами; $i$-е число — стоимость удаления всех тюков сена из $i$-го стога.

Примеры

Входные данные 1

2
3
15 100 10
4
101 1 1
1 4 8
9 3 5
15 2 3
3
15 100 10
4
101 1 1
1 1 5
9 1 8
15 1 3

Выходные данные 1

29 155 21
73 328 50

Примечание

Первый тест: Для последнего стога с начальным размером $10$ мы можем нанять корову $3$ один раз, что стоит $5$ и уберёт тюки сена дважды (не трижды, потому что количество тюков сена становится равным $8$ после удаления второго тюка). Затем мы можем нанять корову $2$ дважды, убрав $8$ тюков сена, в результате чего не останется ни одного тюка сена. Общая стоимость равна $ 5+8+8=21$.

Второй тест: Здесь выполняется $\max(s)=1$.

Подзадачи

  • Тесты 2–3: $a_i \le 100$
  • Тесты 4–5: $\max(s)=1$
  • Тесты 6–9: $\max(s)\le 4$
  • Тесты 10–15: $\max(s)\le 20$
  • Тесты 16–21: без дополнительных ограничений.

Автор задачи: Sujay Konda

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.