QOJ.ac

QOJ

Süre Sınırı: 2.0 s Bellek Sınırı: 256 MB Toplam puan: 100 Hack'lenebilir ✓

#15421. 학점 최적화 계획

İstatistikler

문제 설명

Xiao Bo는 자신의 학업 성적에 매우 관심이 많은 성실한 대학생입니다. 매 학기 그는 여러 과목을 수강하고 그에 해당하는 학점(단위수)과 평점을 받습니다. 평점은 과목 성취도를 측정하는 방법이며, 평점 평균(GPA)은 학생의 전반적인 학업 수준을 나타내는 중요한 지표입니다. Xiao Bo는 가능한 한 가장 높은 GPA를 얻기를 희망합니다.

학교에는 특별한 제도가 있습니다: 매 학기 학생들은 최대 한 과목의 성적을 "급제/낙제"(Pass/No Pass, PNP) 모드로 전환할 수 있습니다(물론 어떤 학기에는 아무 과목도 PNP 모드로 전환하지 않는 것을 선택할 수도 있습니다). PNP 모드에서는 해당 과목의 평점이 GPA 계산에 포함되지 않습니다.

Xiao Bo는 자신이 $m$개의 학기 동안 총 $n$개의 과목을 수강했다는 것을 알고 있습니다. 그는 성적표에 있는 각 과목의 학점, 평점, 그리고 수강 학기를 알고 있으며, 이는 각각 $s_i, g_i, t_i$로 표기됩니다. 성적표의 처음 $2m$개 과목은 $i$번째 과목의 학기가 $\lfloor \frac{i+1}{2} \rfloor$임을 만족함이 보장되며(이는 매 학기 적어도 두 과목 이상 수강함을 보장합니다), 나머지 과목들의 학기는 따로 보장되지 않습니다. Xiao Bo는 최종 GPA를 극대화하기 위해 매 학기 합리적인 결정을 내리기를 바랍니다.

하지만 Xiao Bo는 이것이 조금 너무 쉽다고 생각하여 다음을 알고 싶어 합니다: $2m \le k \le n$을 만족하는 임의의 $k$에 대해, 만약 성적표의 $1$번째부터 $k$번째까지의 과목만 수강한다고 할 때, 각 학기의 PNP 결정을 고려하여 달성할 수 있는 최대 GPA는 얼마일까요?

GPA 계산 공식은 다음과 같습니다: 현재 PNP 모드를 선택하지 않은 과목이 $n$개 있고, $i$번째 과목의 학점과 평점이 각각 $s_i, g_i$라고 가정할 때,

$$\text{GPA} = \frac{\sum_{i=1}^n s_i \cdot g_i}{\sum_{i=1}^n s_i}$$

입력

하나의 테스트 파일에 여러 개의 테스트 케이스가 주어집니다. 입력의 첫째 줄에는 테스트 케이스의 개수를 나타내는 하나의 정수 $T$ ($1 \le T \le 10^4$)가 주어집니다.

각 테스트 케이스에 대하여:

  • 첫째 줄에는 총 과목 수와 학기 수를 나타내는 두 양의 정수 $n, m$ ($1 \le m \le 8, 2m \le n \le 10^5$)이 공백으로 구분되어 주어집니다.
  • 다음 $n$개의 줄에는 각각 과목의 학점, 평점, 그리고 해당 과목을 수강한 학기를 나타내는 세 정수 $s_i, g_i, t_i$ ($1 \le s_i, g_i \le 10^5, 1 \le t_i \le m$)가 공백으로 구분되어 주어집니다. $\forall 1 \le i \le 2m, t_i = \lfloor \frac{i+1}{2} \rfloor$임이 보장됩니다.

모든 테스트 케이스에서 $n$의 합은 $3 \times 10^5$을 초과하지 않음, 즉 $\sum n \le 3 \times 10^5$임이 보장됩니다.

출력

각 테스트 케이스마다 $k = 2m, k = 2m+1, \dots, k = n$에 각각 대응하는 $n - 2m + 1$개의 줄을 출력합니다. 각 줄은 Xiao Bo가 성적표의 $1$번째부터 $k$번째까지의 과목만 수강할 때 달성할 수 있는 최대 GPA를 나타냅니다.

정답 정밀도 요구 사항: 여러분의 출력은 모범 답안과 비교됩니다. 참가자의 출력값이 $x$이고 모범 답안이 $y$일 때, $\frac{|x-y|}{\max(1,|y|)} \le 10^{-6}$을 만족하면 정답으로 판정됩니다.

예제

예제 1

2
5 1
9 7 1
1 2 1
9 6 1
6 4 1
4 7 1
9 2
9 1 1
9 9 1
1 9 2
4 4 2
6 10 1
8 6 2
2 7 1
8 6 2
6 5 1
7.0000000000
6.5000000000
6.2631578947
6.3913043478
9.0000000000
9.3750000000
8.3000000000
8.1818181818
7.6470588235
7.2500000000

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.