Teleporting Ants & Dynamic Programming

Sdílet
Vložit
  • čas přidán 5. 08. 2022
  • Codeforces Global Round 15
    Problem 1552F. Telepanting
    codeforces.com/problemset/pro...
    Please leave any constructive criticism in the comments!
    Submission to 3b1b's Summer of Math Exposition 2
    Written and Animated by: Henry Liu, Samuel Brashears
    Produced and Narrated by: Henry Liu
    Channel Art by: Amanda Nguyen
    Music Licensed by: APM Music @ www.apmmusic.com/
    This video was made possible by the open source library manim, created by 3blue1brown and maintained by Manim Community: www.manim.community/
    Video Source Code: github.com/henryliuser/manim-cp/

Komentáře • 460

  • @rwarazor
    @rwarazor Před rokem +94

    for all I know (I have rating of 2194 on cf) for any solution to this problem, we would need to find first x[j] greater than y[i] for all i=1..n and we would either need to sort y, or do n binary searches. We can't do n binary searches in O(n) time, and we can't sort general array in less than O(n log n), but what we can do is use constraint that y[i] < 1e9 and use radix sort(basically 2 count sorts in this case, but for numbers not up to 1e9 but 1e4.5, so linear time since n is up to 2e5), but this feels very unsatisfactory and leaves savory taste in mouth, so I would leave this problem at being O(n log n)

    • @ABitWiser
      @ABitWiser  Před rokem +32

      I believe you're correct. I made that challenge after briefly thinking of a solution where we can precompute the j values using 2 pointers. However, I realize that this depends on the Y values being sorted. I've removed that from the description. Nice catch!

    • @snk-js
      @snk-js Před rokem +4

      I am newbie in competitive programming and will try that problem now and every piece of info here is helping, thanks a lot sir.

    • @naghus_cat
      @naghus_cat Před rokem

      You are forgetting that radix sort is linear in the length of the list only if the length of the keys isn't tied to the length of the list. The time complexity of radix sort is O(w n), where w is the length of a key. In this case we have that w = O(log n), thus radix sort has the same complexity as quicksort.

    • @rwarazor
      @rwarazor Před rokem +1

      @@naghus_cat according to statement, all numbers are less then 1e9, so w = log(1e9) = 30 = O(1). Then technically radix sort would be linear. If we treat 15 bits as 1 digit, then we will only have 2 iterations of radix sort. Of course all of that works only because of the constraint y < 1e9

    • @naghus_cat
      @naghus_cat Před rokem

      @@rwarazor Although I would like to agree with you, that is a trick you can't apply when doing algorithm analysis. Applying the same logic I could sort the list in constant time, because n

  • @gurjotcheema5988
    @gurjotcheema5988 Před rokem +553

    No one can explain a 2200-rated problem better than this... definitely made me a bit wiser.

    • @cobalius
      @cobalius Před rokem +12

      I was just thinking about how damn difficult that might have been. At least 1900 (similar to chess problems).

    • @Gabriel_JudgeofHell
      @Gabriel_JudgeofHell Před rokem +1

      is this chess or am i lost

    • @amirnuriev9092
      @amirnuriev9092 Před rokem

      ​@@Gabriel_JudgeofHell difficulty rating on a coding competitions platform, it's supposed to be similar to elo

    • @Gabriel_JudgeofHell
      @Gabriel_JudgeofHell Před rokem

      @@amirnuriev9092 oh ok where website

    • @amirnuriev9092
      @amirnuriev9092 Před rokem

      @@Gabriel_JudgeofHell codeforces

  • @shivam-tiwari19
    @shivam-tiwari19 Před rokem +416

    This video actually looks like one of those 4m subscriber channels, great job man!

    • @shadowpenguin3482
      @shadowpenguin3482 Před rokem +27

      Damn I had to read this comment to see that he had only 606 subscriber. His video quality feels like 3b1b, who has a lot more subscribers.
      He has 607 now :) props to him, I am sure the number of subscribers will explode soon. Amazing how this was his first video

    • @TheOofster123
      @TheOofster123 Před rokem +3

      @@shadowpenguin3482 978 NOW

    • @typicwhisper6569
      @typicwhisper6569 Před rokem +7

      That's what #Some2 was meant for

    • @shivam-tiwari19
      @shivam-tiwari19 Před rokem +2

      @@typicwhisper6569 what does that mean

    • @Thanjin_sama
      @Thanjin_sama Před rokem

      Better tbh

  • @furkanunsal5814
    @furkanunsal5814 Před rokem +261

    I solved the problem much differently and pure mathematically before watching the video. it is very hard to explain a solution in text form but the main idea was to see the portals as binary numbers. I split the problem into two. evaluating how many times the player has entered a portal (to teleport not passover) and then calculating the total distance traveled. The second problem's solution was easy I just had to calculate the difference in position between the portal and the teleportation target to calculate the "cost" of the teleportation. the total length of the line plus all the costs were equal to the total distance traveled. now for the solution to the first part, look at the first example with 4 portals (red, orange, yellow, green). in the solution of this part ignore all the distances. if you look at the first red portal it teleports the player right behind itself and is thus equivalent to a binary number with one digit. orange also is a one digit number but yellow perfectly encapsulates orange but no other portal so they collectively create two digit binary number. green is encapsulating the entire one digit and two digit numbers. green is not symbolized as 3 digit but (1 + 2)+1 digits. plus operation is not summation in this notation but symbolizes that those two numbers have to be calculated independently.
    so collectively the table for the puzzle is 1+2+(1+2+1).
    we have to take the initial positions of the portals into account. the first one digit portal is closed so it has the value of 1. notice 1 is the maximum value a one digit binary number can hold so the next stop over it will pass it.
    orange and yellow collectively two digit number seems to have the value (0x01=1) but you can observe they act as inverted. so actually they have the value (0x10 = 2) of 2.
    and lastly green was symbolizing the entire copy of the puzzle plus itself but when the player passes it, all the portals will be open. so the value for green is (0 + 0 + 0)
    binary digit table = 1+2+(1+2+1)
    initial value table = 1+2+(0+0+0)
    we are close to be able to calculate total teleportation count. just remember that one digit binary numbers can hold maximum of 1 and leak for the value of 2. similarly two digit numbers can hold the maximum of 3 and leaks for the value of 4.
    binary digit table = 1+2+(1+2+1)
    initial value table = 1+2+(0+0+0)
    max value table = 1+3+(1+3+1)
    difference table = 0+1+(1+3+1)
    when we sum the difference table 1+1+3+1 = 6 you can see that player will teleport 6 times.
    conveying the idea behind these tables isn't that easy in text form so if they are not clear try to read it again and calculate them by yourself this is the best that I can do.
    lastls we have to calculate the costs. as I said calculating the cost for a portal is easy we have to calculate the distance between the portal and the target but when we unite two portals into a multi digit number since the two portals creating that multi digit (in this example two) number can have different costs we have to symbolize them independently. for this example in the case of orange and yellow portals, their costs are 1 and 3 so we will notate them as (1+3) for the 2 digit number. this says that if the player enters the first digit the cost is 1 and if it enters the second digit the cost is 3. we need to somehow evaluate how many times which digit will flip while counting in binary. I will calculate that for the general case later but for two digit binary (00 10 01 11) the first digit will flip every time and the second digit will flip every two times. collectively first 4 times and second 2 times.
    let me write the tables again this time with the cost table too.
    cost table = 1+(1+3)+1+(1+3)+7
    binary digit table = 1 + 2 + (1 + 2 + 1)
    initial value table = 1 + 2 + (0 + 0 + 0)
    difference table = 0 + 1 + (1 + 3 + 1)
    total cost table = 0+(1+0)+1+(1+3+1)+7 = 14
    total distance travelled = cost + distance = 14 + 9 = 23
    the reason for the cost for the second two digit number to be not (1+3) but (1+3+1) is because while counting 00 10 01 11 first digit is flipped from 0 to 1 twice and second digit once.
    thus when the binary digit table is constructed total distance traveled can be evaluated mathematically with near zero computational cost.
    I have spent around 2 hours for the solution and an additional 2 hours watching the video and writing this comment. I'm very happy if you have read it to here and I hope you like the solution. have a nice day.

    • @illuminatelair8084
      @illuminatelair8084 Před rokem +29

      nerd!

    • @furkanunsal5814
      @furkanunsal5814 Před rokem +35

      @@illuminatelair8084 haha! this is my job tho.

    • @lchi1234
      @lchi1234 Před rokem +14

      Yeah at the beginning of teh vid I was expecting a binary related explanation similar to this lol

    •  Před rokem +1

      I had a similar idea. I wonder whether we can actually view the idea in the video as a variant of yours. I think they might be related.

    • @sumitlahiri4973
      @sumitlahiri4973 Před rokem +2

      Yup, this makes sense! Thanks for the long answer, much needed.

  • @__8120
    @__8120 Před 9 měsíci +3

    The sum on contiguous elements idea was genius, I never would have thought of that but it's so obvious in hindsight

  • @salaheddin3113
    @salaheddin3113 Před rokem +41

    Probably the best explanation to a problem I've ever seen

  • @pocces5528
    @pocces5528 Před rokem +60

    Banger video

  • @i_am_acai
    @i_am_acai Před rokem +134

    I really liked how you showed how much DP speeds things up at 7:18. I also like how you cut off the music at 6:37 when making your conclusion. One criticism I have is you sometimes show graphics on the screen only while you talk about it, so it's hard to visually digest what you're showing and listen in that short time (ie sometimes it's a bit fast such as at 5:30)

  • @gzethicus
    @gzethicus Před rokem +33

    So I might have taken your challenge to solve this problem in O(n) a bit too seriously.
    It took a variant of counting sort to allow building a hash map from each exit to the closest entrance in O(n), so we can skip the binary search and replace it with an access to the hash map in O(1), thus resulting in a total complexity of O(n) (where n is the length of the road rather than the portal count, though).

    • @Palparepa
      @Palparepa Před rokem +3

      I did something similar. No hash, just a simple array, with an element for each node, storing the steps needed to go from the start to that node, assuming all portals are open.

    • @gzethicus
      @gzethicus Před rokem +4

      @@Palparepa I also thought of doing that at some point, but I wanted to respect the 256MB limit for the challenge, which I believe this solution can't satisfy with roads up to 10^9 in length. Congrats on O(n) time complexity anyways !

  • @saurabhshah9266
    @saurabhshah9266 Před rokem +12

    Awesome video. I noticed this is your first on CZcams, I hope you keep it up! Really tough problem but you explained it well. Always wished there was a 3b1b for data structure and algs. Could be you.

  • @jakegoat2677
    @jakegoat2677 Před rokem +2

    I'm shocked that this is the first video on this channel, the quality is something I would expect it to take months or even years to achieve. Can't wait for the next one!!!

  • @harshmishra6072
    @harshmishra6072 Před rokem +32

    Oh man.. you took it to the next level. Also how many hours did you spend making this?

  • @mananshah2140
    @mananshah2140 Před rokem +4

    Absolute gold. Keep it up. Wish to see several algorithm implementations and problems in this format.

  • @RayZhaTV
    @RayZhaTV Před rokem +2

    i really liked the animations, especially the last part where the lines of code are highlighted each step and you can see where the results move to.

  • @sun3k
    @sun3k Před rokem

    Checked out your channel to see more vids and realised thats the only one. The music/animation was honestly amazing

  • @SashwatMahalingam
    @SashwatMahalingam Před rokem +6

    An academic epiphany of many proportions

  • @brensenvillegas7177
    @brensenvillegas7177 Před rokem +1

    Absolutely incredible. Amazing content right out the gate! Keep making awesome vids

  • @andrw_
    @andrw_ Před rokem

    Incredible video and excellent teaching. Like many others, I’m amazed this is your first video! You earned a sub - can’t wait to see what else you have for the future!

  • @marwaqawas7040
    @marwaqawas7040 Před rokem +3

    Great video! We definitely need more of that. Keep it up man

  • @ifroad33
    @ifroad33 Před rokem

    Loving the animations. Really made the video so much more understandable. Really great job!

  • @mihirachyuta7272
    @mihirachyuta7272 Před rokem +4

    Love this video and the animations. Keep making more of these videos please

  • @EvgenyAlterman
    @EvgenyAlterman Před rokem +1

    Just great! Can’t wait for the next video.
    And any video made using manim have to be great:)

  • @tagberli
    @tagberli Před rokem +6

    As a green coder (1200-1400 CF) I can say that I understood the 2200 rated problems solution proving that this guy have put a great work into his explanation!

    • @ABitWiser
      @ABitWiser  Před rokem +1

      Thanks! We hoped to guide viewers through the solution while letting you all make a few leaps of your own. Happy to hear you followed along!

  • @angelasun8896
    @angelasun8896 Před rokem +10

    This is the best video on the internet, until you upload the next one

  • @mathguy198
    @mathguy198 Před rokem +1

    You are an awesome storyteller and a talented movie maker, and not to mention an excellent teacher whatsoever.

  • @thestemgamer3346
    @thestemgamer3346 Před rokem +2

    The animations were really nice, particularly for the DP graph visualization. Very creative.

  • @aschmelyun
    @aschmelyun Před rokem +1

    The production value, explanation, pacing, audio, visuals, everything about this screams top-notch quality. Can't wait to see more!

  • @Sofia-ts6gy
    @Sofia-ts6gy Před rokem +1

    the motion graphics illustrating the algorithm are absolutely delightful!

  • @TheSalaho1
    @TheSalaho1 Před rokem

    This is unbelievably good explanation, please keep up and post more!

  • @StolenID
    @StolenID Před rokem

    Very Video, much good, such wow.
    First video, and despite some audio that's clearly form different recording sessions its mostly flawless. Keep on rocking dude.

  • @berggbergg
    @berggbergg Před rokem

    Amazing content, great animations. Really hope you still have plans of making more videos!

  • @maxamillion6042
    @maxamillion6042 Před rokem

    Please make more videos, the wonderful quality and entertainment value this has is beautiful, thank you.

  • @tanchienhao
    @tanchienhao Před 10 měsíci

    Amazing effort for a video about one dp problem! Hope to see another entry this year for some3!

  • @ashleymavericks
    @ashleymavericks Před rokem

    GOAT explanation skills, amazing work! Hoping for a lot more great videos in the near future.

  • @albertocalabrese2958
    @albertocalabrese2958 Před rokem +2

    Incredible video! When I first studied dynamic programing I had lots of troubles wrapping my head around it and seeing it explained so clearly was really nice! I wish your video came out earlier 🤣

  • @dio707.
    @dio707. Před rokem +2

    Loved it! Thank you for this and all upcoming videos, orz

  • @platinummyrr
    @platinummyrr Před rokem +1

    Fantastic video! Use of prefix sums is pretty genius.

  • @hitesh6856
    @hitesh6856 Před rokem +1

    wow such a high quality video for a competitive programming problem. Great explanation and visualization. I just love it.

  • @HimanshuLilhore
    @HimanshuLilhore Před rokem +1

    Just soo good. Please, never stop making these ❤❤

  • @0xggbrnr
    @0xggbrnr Před rokem

    Excellent video. Very well-explained and demonstrated. I hope you post more.

  • @anonidk7235
    @anonidk7235 Před rokem +2

    Beautifully done. Simply awesome

  • @mvdrider
    @mvdrider Před rokem +4

    Thank you for the hard work and for sharing it!

  • @AvinashYadav-tq8si
    @AvinashYadav-tq8si Před rokem +4

    Thank you for making such a great video!

  • @boiimcfacto2364
    @boiimcfacto2364 Před rokem +1

    When I saw your video mentioned in 3B1B's SOME2 results video, I was dead sure you were gonna win.
    Welp, like he said, every video is the best for different demographics of people, and this is the one for me. Fucking incredible video, and thank you for making this!

  • @ibemper1850
    @ibemper1850 Před rokem

    Thank you for explaining this so nicely, I gave this problem a try before looking at the solution and when I saw my solution matched up with the one you presented I was very happy, this is a great explanation of dynamic programming, great video!!

  • @somebodyhere3160
    @somebodyhere3160 Před rokem +52

    This is a great video! But the part near 6:40, explaining how dp was calculated was paced a bit too quick, and I had to rewatch that part to understand it. Otherwise, a great explanation of a hard problem.

    • @ABitWiser
      @ABitWiser  Před rokem +7

      Thanks, we appreciate your feedback!

    • @someonlinevideos
      @someonlinevideos Před rokem +1

      @@ABitWiser it’s a we!?

    • @ABitWiser
      @ABitWiser  Před rokem +5

      @@someonlinevideos Yeah! It's two of us, credits in the description :)

  • @dozheiny5996
    @dozheiny5996 Před rokem +1

    this video is really impressive, please make more!

  • @sirpikapika1129
    @sirpikapika1129 Před rokem

    This is amazing! Calling now that this will be in the winners video :D

  • @code_explorations
    @code_explorations Před rokem

    Fantastic. What a superb first video. I hope there will be more, but even if not, wow.

  • @mohammedjawahri5726
    @mohammedjawahri5726 Před rokem +1

    that was incredible man, please keep on going :)

  • @abhisheksharma1031
    @abhisheksharma1031 Před rokem +3

    This is so well done !!

  • @234234234234ist
    @234234234234ist Před rokem

    Damn thats some quality work! Your Channel needs to blow up. You have my subscription at least :)

  • @TheDmviper
    @TheDmviper Před rokem +4

    The quality of this video is amazing! I really liked how well you made the music sync up to the algorithm at the end with a satisfying ding every time the cost was calculated.
    The part at 10:30 felt a bit rushed though, I had to rewatch and study your python implementation to realize why exactly you needed to binary search to find the index of the ps array, but other than that it was an excellent video and a delight to watch.

    • @ABitWiser
      @ABitWiser  Před rokem

      Thanks for the helpful notes and kind words

    • @shambhav9534
      @shambhav9534 Před rokem

      Yeah, I too needed a lot, and I mean, lot of thought to understand why a binary search was needed. It's a good thing though. I don't want to be this failure programmer who watches videos with an off mind but can't code or think anything himself. I like this!

    • @itellyouforfree7238
      @itellyouforfree7238 Před rokem

      The interesting thing is that one does not NEED to to binary search, and actually avoiding it lowers the time complexity from O(n logn) to O(n).

  • @felipe2637
    @felipe2637 Před rokem +2

    amazing work man, keep it up!!!

  • @raymondlee6661
    @raymondlee6661 Před rokem

    Looking forward to more of these!

  • @gosunov
    @gosunov Před rokem +40

    I've always wanted such content on youtube, and finally here it is. Looking forward for next videos.
    But personally for me it was very hard to follow the solution, the key part about what we store as dp_i and how we calculate it, is explained too briefly. (although I am 1900 on codeforces).

    • @gosunov
      @gosunov Před rokem +10

      And maybe music is a little loud

    • @ABitWiser
      @ABitWiser  Před rokem +12

      Hi, sorry about that!
      dp_i is the time it takes to enter a portal and return back to the same position.
      It is calculated as dist_i + cost_i:
      Dist_i is X_i - Y_i, the distance between the entrance and exit.
      Cost_i is the sum of the return trip times of all the portals we encounter in between i_th exit and the i_th entrance.
      For some intuition on why this works: consider the path you take when you go into an entrance.
      1. X_i, jump to Y_i
      2. Walk until u reach an entrance (which is guaranteed to be open)
      3. Go into entrance; recurse.
      4. Continue past portal, walk until next entrance...
      Repeat steps 2-4 until you reach entrance i.
      Each "recurse" has a fixed cost that we've already computed! That's the corresponding dp value.

    • @gosunov
      @gosunov Před rokem +4

      ​@@ABitWiser Yeah thanks for explanation, I have totally understood the algorithm. In my original comment I just wanted to say, that I think it would be better, if explanation in video were somewhat smoother (I don't really know how to make it so).

    • @michaelmam1490
      @michaelmam1490 Před rokem +4

      I think the music volume is great

    • @davidmcdonnel4831
      @davidmcdonnel4831 Před rokem +1

      I had to rewatch too, not because I misunderstood the concept, but because the variables were not named. In the final solution I had to rewind to where the arrays X, Y, and S were defined 7 minutes earlier in the video at 5:23. Please name your variables appropriately if presenting to an audience (be they viewers, other developers working on the code base, or most likely future you that forgot what you were thinking when you initially wrote it). Let the compiler get rid of the extra characters. Hard drives are a lot cheaper than salaries.

  • @brianrainer
    @brianrainer Před rokem

    Wow amazing visualization! Good job!

  • @vipenloka669
    @vipenloka669 Před rokem +1

    that was smooth, well done!!

  • @andreigrigore3512
    @andreigrigore3512 Před rokem +1

    I just subscribed, I love competitive programming and I think this channel will help me on my journey.

  • @Bazzzzz93
    @Bazzzzz93 Před rokem +2

    Fantastic video. Great job!

  • @sid5468
    @sid5468 Před rokem +1

    Great first video. Loved it. Subscribed.

  • @user-tr7ys1ym7g
    @user-tr7ys1ym7g Před rokem +1

    amazing video!!! Please continue to create similar video.

  • @stefangarofalo3131
    @stefangarofalo3131 Před rokem

    you probably are the best teacher ever for dsa. I have never seen a better explanation

  • @edvinbryntesson2028
    @edvinbryntesson2028 Před rokem

    Looking forward to the next one! ❤️

  • @discreet_boson
    @discreet_boson Před rokem +1

    Excellent video, this is 3b1b-quality explaining!

  • @nananou1687
    @nananou1687 Před rokem +1

    Please make more videos
    This was very well explained

  • @potatopotato4676
    @potatopotato4676 Před rokem +5

    I don't see 84 subscribers, I see 84M!

  • @rianfantozzi7827
    @rianfantozzi7827 Před rokem

    This is so high quality! I thought I was watching a 3blue1brown video

  • @karamboubou8579
    @karamboubou8579 Před rokem +1

    Amazing work, you earned a subscriber!

  • @FloydMaxwell
    @FloydMaxwell Před rokem +1

    Fantastic visuals. I wonder how many followed it all while watching the video without pausing it. I sure didn't. But still I'm impressed.

  • @mayurmhatre9925
    @mayurmhatre9925 Před rokem

    I'm a beginner EASY coder and this video popped up in my feed, my Feedback :- Good Work 👍🏻, nicely explained, with little bit of pace management, even beginner's like me can understand the Problem Solving aspect. Thank You.

  • @viktorklyestov2108
    @viktorklyestov2108 Před rokem

    We need more! More videos!

  • @btmillion2813
    @btmillion2813 Před rokem +1

    Very promising video. Looking forward to more!

  • @paulbetts4984
    @paulbetts4984 Před rokem +1

    Fantastic video. Keep up the great work.

  • @justaknifeinalake7251
    @justaknifeinalake7251 Před 2 měsíci

    This is a really awesome video with great production❤

  • @abhiupadhyay3615
    @abhiupadhyay3615 Před rokem

    Great Explanation. You sure must upload more

  • @tunafllsh
    @tunafllsh Před rokem

    Great video! It took me some time to figure out some claims when you tell us to convince ourselves. A brief explanation or key idea would make it more digestable.

  • @ishwarendra
    @ishwarendra Před rokem +3

    superb work man!

  • @monsieuralexandergulbu3678

    Super nice video!
    Although one thing is not nice, please process your mic's sounds so both audio channels would have equal volume 🙏

    • @ABitWiser
      @ABitWiser  Před rokem +5

      Thanks for letting us know, we'll fix that.

  • @fabioteixeira868
    @fabioteixeira868 Před rokem +2

    Wonderful video! Stated the problem and worked through it with great pedagogy.
    Got me wondering if there is a real-life problem that can be modeled as this ant walk and if this solution to it enabled some new technology or product.
    Got yourself a new sub from Brazil! Cheers!

  • @PrevalentAA
    @PrevalentAA Před rokem

    Please keep making these!

  • @giannismaris13
    @giannismaris13 Před rokem

    Every math or CS student should subscribe!
    Great work man, cant wait to see more of DP or Machine Learning ect ...

  • @evanbelcher
    @evanbelcher Před rokem +30

    I really liked this video. My only problem with it: you left pieces out of the setup. For example, you started talking about "this solution doesn't meet our constraints" without mentioning what those constraints were. And you didn't mention that the line always ends 1 unit after the last portal. Also, you didn't explain the bisect function of python in your solution. So in order to understand 100% of the context, I had to check out the original problem and google the bisect function. That's more legwork than I think you'd want your viewers to do.

    • @windubitably
      @windubitably Před rokem +1

      I was also curious about the bisect import, but opted to view these comments instead of looking it up.

    • @shambhav9534
      @shambhav9534 Před rokem +1

      I really appreciated that he left a lot of the intellectual burden to the viewer. It's like a statement.

  • @patricksmith1520
    @patricksmith1520 Před rokem

    Great video. Good start. Keep up the good work.

  • @hdanielb.m.4125
    @hdanielb.m.4125 Před rokem

    Wow I really liked this explanation, I want more!

  • @DavidInga7
    @DavidInga7 Před rokem

    Fantastic. More please!

  • @dmitriynikitinskyy3731
    @dmitriynikitinskyy3731 Před rokem +7

    I learned so much!!!

  • @DavidTriphon
    @DavidTriphon Před rokem

    I really appreciated this video. I paused at the 2 minute mark, solved it myself in O(n log n), and then saw that I came to the same conclusions you came to in this video. It felt very validating! Thank you for the great visual and description of your terms. I wouldn't have been sure I had actually had the same solution as you if you hadn't. Also yours is much cleaner and easier to understand than mine.

  • @BoditXD
    @BoditXD Před rokem

    Great explanation, felt really absorbed during whole video

  • @notsoclearsky
    @notsoclearsky Před rokem

    Keep making videos, one day this channel would be huge

  • @toreole5831
    @toreole5831 Před rokem

    major 3blue 1 brown vibes. great video (although there seemed to be some issues with audio being only on one side at times)

  • @isbat31416
    @isbat31416 Před rokem

    I feel like I'm going to love this channel....

  • @Splish_Splash
    @Splish_Splash Před rokem

    3000 subscribers? no way, this is an amazing work.
    And i want to say that in the bisect method we can specify "Lo" and "hi" parametres(the start and end indices in the array where we want to search our element), so if we're in portal X[i] and go out in Y[i], we don't need to search all over X to find a nearest portal, we need to search in X[from 0 to i], so if we specify bisect(X, Y[i], hi=i) time complexity for all calls will be:
    log(1)+ log(2) + log(3) + ... + log(n) = log(n!)
    n / 2 * log(n / 2)

    • @itellyouforfree7238
      @itellyouforfree7238 Před rokem

      What's the point of "improving" O(nlogn) to another O(nlogn), when the optimal solution is O(n)? Just find a way to avoid bisecting at all, as it's unnecessary

    • @Splish_Splash
      @Splish_Splash Před rokem

      @@itellyouforfree7238 there's no O(n) solution

    • @itellyouforfree7238
      @itellyouforfree7238 Před rokem

      @@Splish_Splash after reading the problem on codeforces i realized the video is slighty imprecise. it gives the impression that there is only one variable n, the number of the portals, and the length of the track is always 2n. instead there are two variables, n = "no. of portals", M = "length of track", with 2n

  • @johnyjohnjohnson1317
    @johnyjohnjohnson1317 Před rokem

    Greate video, Thanks for the sorce code of the animations.
    i am also on codeforces. I am probably learning more there as anywhere else.

  • @mr.saurabhnagre5920
    @mr.saurabhnagre5920 Před rokem

    Great work man... Hat's off

  • @Yous0147
    @Yous0147 Před rokem

    Great video, subbed from here. I could follow right up until 8:50 then it started getting over my head, I think I'll have to watch the last part a couple of times before I start to get it.

  • @kngod5337
    @kngod5337 Před rokem

    looking forward for the next video

  • @divyanshuverma5652
    @divyanshuverma5652 Před rokem

    Literally amazing..

  • @afadeevz
    @afadeevz Před rokem +1

    Great content! Keep it up!

  • @judgebot7353
    @judgebot7353 Před rokem +2

    thanks waiting for more such content