Smart Project Selection


Submit solution

Points: 3
Time limit: 1.0s
Memory limit: 16M

Author:
Problem type
Allowed languages
C++

Танд N ширхэг төсөл (project) өгөгдөнө. Төсөл бүр дараах мэдээлэлтэй:

  • эхлэх хугацаа start[i]
  • дуусах хугацаа end[i]
  • ашиг value[i]

Та эдгээр төслүүдээс заримыг нь сонгож болно.

⚠️ Гол нөхцөл

Хэрвээ та хоёр төслийг хоёуланг нь сонговол:

? тэдгээрийн хугацаа давхцах ёсгүй

Өөрөөр хэлбэл:

  • end[i] ≤ start[j] (эсвэл эсрэгээр)

? Нэмэлт нөхцөл (илүү сонирхолтой болгох)

Та хамгийн ихдээ K ширхэг төсөл сонгож болно.

? Зорилго

  • ? Давхцахгүй, хамгийн ихдээ K төсөл сонгон
  • ? Нийт ашгийг хамгийн их болго

Оролт:

N K
s1 e1 v1
s2 e2 v2
...
sN eN vN
  • N — төслийн тоо
  • K — хамгийн их сонгож болох төслийн тоо
  • si — эхлэх хугацаа
  • ei — дуусах хугацаа
  • vi — ашиг

Гаралт:

хамгийн их боломжит ашиг

Хязгаарлалтууд:

  • \(1 ≤ N ≤ 2 × 10⁵\)
  • \(1 ≤ K ≤ 200\)
  • \(0 ≤ si < ei ≤ 10⁹\)
  • \(1 ≤ vi ≤ 10⁹\)
Дэд бодлого
Дэд бодлого оноо Хязгарлалт Тайлбар
1 Дэд бодлого -1 1 \(N ≤ 10, K = 1\)
2 Дэд бодлого -2 1 \(N ≤ 1000\)
3 Дэд бодлого -3 2 K = 1 (classic greedy)
4 Дэд бодлого -4 2 \(K ≤ 50\)
5 Дэд бодлого -5 2 Нэмэлт хязгаарлалтгүй

Жишээ:

Оролт-1
4 2
1 3 5
2 5 6
4 6 5
6 7 4
Гаралт-1
10
Тайлбар-1

Төслүүд:

№   start   end value
1   1   3   5
2   2   5   6
3   4   6   5
4   6   7   4

Боломжит сонголтууд:

1 + 3 → 5 + 5 = 10 ✅

2 + 4 → 6 + 4 = 10 ✅

1 + 4 → 5 + 4 = 9

? Хамгийн их: 10

Оролт-2
3 1
1 10 5
2 3 3
4 5 4
Гаралт-2
5
Тайлбар-2

K = 1 тул зөвхөн 1 төсөл сонгоно

? Хамгийн их ашигтай нь: (1,10) → 5


Comments

There are no comments at the moment.