Min heap-г өөрсдөө бичих - C++

Өмнө нь priority queue-н талаар болон queue, vector-г хэрхэн өөрсдөө бичих тухай ярьсан билээ. Одоо priority queue буюу min heap бүтцийн тухай дэлгэрэнгүй бичье. Эргэн санавал энэхүү өгөгдлийн бүтэц нь үндсэн 4 үйлдэлтэй ба: size() - heap-н хэмжээг буцаах front() - хамгийн бага элементийг буцаах pop() - хамгийн бага элементийг устгах push(element) - heap-д элемент нэмэх Үүнийг хэрхэн бичих вэ? Бид зүгээр л энгийн array ашиглаад хийж болох уу?...

аравдугаар сар 13, 2023 · 4 мин · 755 үг · Me

Dynamic array-г өөрсдөө бичих - C++

Би queue-г хэрхэн бичих талаар энд бичсэн ба vector-н тухай мөн бичсэн. Энэ удаа өмнөх queue-г хэрхэн бичсэнтэй адилаар dynamic array-г хэрхэн хийж болох талаар бичихээр шийдлээ. Dynamic array-р нь энгийн array-с ялгаатай нь хэмжээгээ өөрчлөх боломжтойгоор онцлог ба үүний нэг нь vector билээ. Мэдээж vector-н ямарч элементийг мэдэхэд O(1) үйлдэл хийдэг ба vector-т үндсэн 3 үйлдэл байдаг гэвэл size() - хэмжээг мэдэх push(element) - шинэ элемент хамгийн хойно нэмэх [index] - index-р элементийн утгыг мэдэх Үүнийг яаж хийх хэр хэцүү байх талаар цааш уншихаас өмнө хэсэг бодоод үзээрэй....

аравдугаар сар 4, 2023 · 5 мин · 970 үг · Me

Queue-г өөрсдөө бичих - C++

Queue-н тухай өмнө нь бичсэн билээ. Энэ удаа үүнийг хэрхэн анхнаас нь бичих вэ? гэдэг талаар бичье. Үүний тулд заагч болон санах ойн тухай энгийн ойлголттой байхад хангалттай. Queue-д гол 4 үйлдэл байдаг ба size() - хэмжээг нь буцаадаг top() - эхний элемэнтийг буцаах pop() - эхний элемэнтийг устгах push(element) - хамгийн ард элемэнт нэмэх Мэдээж тийм ч хэцүү биш байлгүүдээ? Зүгээр array ашиглаад хийж болох уу? Болох бол яаж вэ?...

есдүгээр сар 24, 2023 · 4 мин · 677 үг · Me

Санах ой - PART 1

Санах ой болон заагч Бид бүхэн array, vector зэргийг хэрхэн үүсгэх ашиглаж болох талаар ярилцсан. Гэхдээ эдгээр зүйлс нь цаанаа хэрхэн дүрслэгддэг талаар ойлголт байхгүй байгаа билээ. Үүний тухай бичье. Мэдээж эдгээр бүх хувьсагч санах ойд хадгалагддаг. Жишээ нь бид array, vector үүсгэх үед c++ нь санах ойд үүсгэж бид шууд ашиглах боломжтой болдог. Хэрвээ бид эдгээр хувьсагчийг ашиглахгүй бол, эдгээр нь шууд цэвэрлэгдээд явдаг. Жишээ нь функц дотор зарласан хувьсагч шиг....

есдүгээр сар 2, 2023 · 3 мин · 430 үг · Me

Програмчлалын үндэсний олимпиад-2023

Үндэсний олимпиад гэж юу вэ? Үндэсний олимпиад нь жил бүр зохион байгуулагддаг ба ACM-ICPC буюу Олон улсын програмчлалын олимпиадын нэг шат гэж хэлж болно. ACM-ICPC нь дэлхийн хэмжээний хамгийн том оюутнуудын дундах програмчлалын тэмцээн ба Сургууль дотроо Бүсээс шалгарах Бүсийн аварга Сүүлийн шат Гэсэн байдлаар зохион байгуулагддаг. Дүрмийн хувьд багууд хүссэн ном, матералыг авж орох боломжтой 3 хүртэлх гишүүнтэй байх ба 12 орчим бодлогыг 4 цагийн турш дундаа 1 computer дээр боддог....

тавдугаар сар 25, 2023 · 12 мин · 2480 үг · Me

Union Find

Disjoint Set Union (Union Find) өгөгдлийн бүтцийн тухай. Нэрнээс нь харвал union буюу нэгтгэх find буюу хайх, disjoint буюу салангид гэсэн гурван үгээр энэхүү өгөгдлийн бүтэц нэрлэгджээ. Мэдээж энэхүү гурван гол ойлголтыг агуулсан байхнээ. Өөрөөр хэлбэл энэ нь Find буюу ямар хэсэгт байгааг хайх үйлдлийг хийнэ Union буюу салангид байгаа 2 хэсгийг нэгтгэх гэсэн 2 гол үйлдэлтэй. Өөрөөр хэлбэл бидэнд анх салангид олон хэсгүүд байгаа ба түүнийг хэрхэн хялбар байдлаар нэгтгэх, тухайн элэмэнт аль хэсэгт байгааг олоход ашигладаг....

тавдугаар сар 14, 2023 · 4 мин · 838 үг · Me

Граф

Граф гэж юу вэ? Wikipedia: Ирмэг болон оройгоос бүтсэн бүтцийг граф гэнэ. Би: заа Граф нь зүйлсийн холбоо хамаарлыг дүрсэлсэн нэг хэлбэр гэж хэлж болно. Жишээ нь найзуудын хамаарлыг авж үзье. A нь B-тэй найз, B нь C-тэй найз, C нь D-тэй найз ба D нь A-тай мөн B-тэй найз гэвэл. Бид тухайн хүмүүсийг орой гэж хэлээд хоорондын найзын холбоосыг ирмэг гээд иймэрхүү байдлаар дүрсэлж болохнээ. Тэгвэл энэхүү граф нь 4 оройтой 5 ирмэгтэй холбоост граф байх нь....

тавдугаар сар 13, 2023 · 9 мин · 1838 үг · Me

Хоёртын хайлт

Хоёртын хайлт гэх алгоритм хаа сайгүй л явж байдагдаа. Энгийн мөртлөө хүчтэй санааг агуулж байдаг. Ер нь нэрнүүдэд их учир бий шүү. Жишээ бодлого дээр авж үзье. Бодлого Бидэнд өсөхөөр эрэмбэлэгдсэн N урттай дараалал, Q ширхэг хүсэлт өгөгдөх ба хүсэлт бүрд нэг тоо байх ба энэ дараалалд тэр тоо байгаа эсэхэд хариулах юм. 1 <= N, Q <= 10^5, abs(a[i]) <= 10^9. Analysis Хүсэлт бүрийн хувьд N ширхэг тоо бүртэйгээ тэнцүү эсэхийг шалгахад болно....

тавдугаар сар 11, 2023 · 3 мин · 507 үг · Me

Тооны зэрэг

Бодлого A тооны B зэргийг 10^9+7 гэх анхны тоонд модулдаж гарсан хариуг ол. A, B<=10^13 Бид энгийн давталт ашиглан үүнийг олж чадна. Өөрөөр хэлбэл A тоог B удаа үржүүлэх ба энэ нь бид 10^13 удаа үржүүлэх хэмжээний зүйлийг ярьж байна. Энэ нь ер нь хэр их үйлдэл вэ? Маш их ба 1 секундэнд 300сая үйлдэл хийдэг гэж төсөөлийлдөө тэгвэл 9 цаг гаруй ажиллахнээ. Бид тооны зэрэг олохын тулд 9 цаг хүлээнэ гэдэг бол тэнэг хүн тэвчээртэй гэдэг шиг л болох нь дээ...

дөрөвдүгээр сар 15, 2023 · 6 мин · 1101 үг · Me

Өгөгдлийн бүтцүүд

C++ хэлэнд бид өөрсдөө бичих шаардлагагүй хялбарчилсан олон төрлийн өгөгдлийн бүтэц байдаг ба түүний тухай ярилцяа. Эхний ээлжинд тэдгээр нь юу хийдэг ямархуу бүтэцтэй тухай бичих ба цаашдаа бүгдийг нь өөрсдөө кодыг нь бичээд яаж ажилладдаг болхыг нь бичнэ гэж бодож байна. Array Array тухай. Array олон зүйлийг багтааж чаддаг сав гэж төсөөлж болноо. Одоогийн байдлаар бид 1 хувьсагчид 1-л утга хадгаж байгаа тэгвэл бидэнд 2000 хувьсагч хадгалах хэрэгтэй болвол яах вэ?...

дөрөвдүгээр сар 4, 2023 · 14 мин · 2890 үг · Me