Бодолт илгээх | Бүх бодолтууд | Шилдэг бодолтууд | Жагсаалт руу буцах |
RGB7791 - Мод огтлох |
Анна графын онолд дуртай. Түүнд нүд болгон нь 1–ээс n хүртэл дугаарлагдсан, өөрийн гэсэн утга агуулсан мод байв.
Модны нийлбэр гэдэг нь бүх нүднүүдийн утгын нийлбэр байна. Хэрэв модны ирмэгийг огтолбол 2 жижиг мод үүсэх бөгөөд
2 модны ялгаа нь тэдгээр модны нийлбэрүүдийн ялгавар байна.
Өгөгдсөн модны аль ирмэгийг тайрвал үүсэх 2 модны нийлбэрүүдийн ялгавар нь хамгийн бага байх вэ?
Уг ялгаврыг олж буцаа.
Жишээ нь
Нүднүүдийн утга нь [1, 2, 3, 4,5 ,6 ] гэвэл нүднүүдийн дугаарлалт нь утгатайгаа ижил болж байна.
Дараах диаграммд үзүүлснээр ирмэгүүд нь [(1,2), (1, 3), (2, 6), (3, 4), (3, 5)] байна.
Дараах байдлаар тооцоолно.
Тайрах Мод 1 Мод 2 Абсолют
ирмэг нийлбэр нийлбэр ялгаа
1 8 13 5
2 9 12 3
3 6 15 9
4 4 17 13
5 5 16 11
Хамгийн бага ялгаа нь 3
Санамж: 1 дугаартай нүдийг үндэс гэж үзнэ.
Функцын тодорхойлолт:
cutTheTree функцыг гүйцээж бич. Үүсэх 2 модноос гаргаж авч болох хамгийн бага абсолют ялгааг буцаа. /integer/
Параметрүүд:
data: нүднүүдийн утгыг илэрхийлсэн integer утгаас бүрдсэн хүснэгт
edges: хос integer утгуудаас бүрдсэн 2 хэмжээст хүснэгт, хос бүр графын ирмэгийг илэрхийлнэ.
Оролтын формат
Эхний мөрөнд integer тоо n байна. Нүднүүдийн тоог илэрхийлнэ.
2 дахь мөрөнд зайгаар тусгаарлагдсан n ширхэг integer тоо байна. Тоо “u” тус бүр data[u] – н утгыг илэрхийлнэ.
Дараагийн n – 1 мөр болгонд зайгаар тусгаарлагдсан 2 ширхэг integer тоо u болон v байх бөгөөд u—v ирмэгийг илэрхийлнэ.
Хязгаарлалт
3 <= n <= 105
1 <= data[u] <= 1001, 1<= u <= n.
Гаралтын формат
Боломжит хамгийн бага ялгааг илэрхийлсэн integer тоог агуулах 1 мөр.
Жишээ
Оролт
6
100 200 100 500 100 600
1 2
2 3
2 5
4 5
5 6
Гаралт
400
Тайлбар
Бид үндсэн модыг дараах байдлаар дурсэлж болно.
n – 1 = 5 ирмэгийг бид огтолж болно.
1. ирмэг 1 – 2 -н үр дүнд d1-/-2 = 1500 – 100 = 1400
2. ирмэг 2 – 3 -н үр дүнд d2-/-3 = 1500 – 100 = 1400
3. ирмэг 2 – 5 -н үр дүнд d2-/-5 = 1200 – 400 = 800
4. ирмэг 4 – 5 -н үр дүнд d4-/-5 = 1100 – 500 = 600
5. ирмэг 5 – 6 -н үр дүнд d5-/-6 = 1000 – 600 = 400
Хамгийн бага ялгаа нь 400.
Орчуулсан : Б.Баясгалантөгөлдөр АНУ
Нэмсэн: | Bataa |
Огноо: | 2020-04-12 |
Хугацааны хязгаарлалт: | 1s |
Эх кодын хэмжээний хязгаарлалт: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Програмчлалын хэлүүд: | ADA95 ASM32 ASM64 BASH BF C NCSHARP CSHARP C++ 4.3.2 CPP C99 CLPS LISP sbcl LISP clisp D ERL FORTRAN HASK ICON ICK JAVA JS-RHINO JULIA LUA NEM NICE OCAML PAS-GPC PAS-FPC PERL PHP PIKE PRLG-swi PYTHON PYPY3 PYTHON3 RUBY SCALA SCM guile ST TCL WHITESPACE |
Эх сурвалж: | https://www.hackerrank.com/challenges/cut-the-tree/problem |
hide comments
2024-10-23 04:24:42
.... Last edit: 2024-10-23 04:25:24 |
|
2021-11-11 03:31:23
lolollololololololololololloloolollololloqho |