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

Анхны тоо

Анхны тоо Анхы тоо гэдэг нь яг 2 ширхэг ялгаатай хуваагчтай натурал тоог хэлдэг. Жишээ нь 2, 3, 5, 7 гэх мэт үргэлжлээд явна. N гэсэн тоо өгөгдөхөд тухайн тоог анхны тоо эсэхийг хэрхэн мэдэх вэ? Мэдээж бид [1, N] завсарт гүйгээд N тоог маань хэд нь хувааж байгаа вэ гэдгийг тоолоход болно. Үүнээс хурднаар шалгаж чадах уу? Анхны тоо зөвхөн 2 хуваагчтай гэхээр 1 болон өөртөө л хуваагддаг гэсэн үг ба N тоог [2, N-1] завсарт ямар ч тоо хуваадаггүй бол анхны тоо мөн....

зургаадугаар сар 20, 2023 · 3 мин · 427 үг · 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