Possibly, someone called "MO" once used the trick in a local contest, and the name stuck and later got popular. I have never encountered the name "Mo's algorithm" outside of competitive programming.

The technique, or the term "Mo's Algorithm" ("莫隊算法" in Chinese) was originally thought of and popularized by 莫涛 (Mo Tao) and his teammates. It was first used to tackle a problem from 2009 China IOI Camp: 小Z的袜子(hose) — authored by 莫涛 himself. The problem was: given a sequence of integers, for any given interval, calculate the probability of choosing any 2 numbers and the 2 numbers are equal.

*Now let's start. I have here compiled the tutorial, some articles written by me, and problems on Mo's algorithm.*

### Tutorials:

**Sqrt Decomposition****Introduction to Mo's algorithm**— By anudeep2011**Introduction to Mo's algorithm**(Video tutorial) — By kazama460**MO's algorithm on Tree**— By animeshf

### Basic problems:

I have written some basic articles on Mo's algorithm which has been published on Geeksforgeeks.

- Queries for elements having values within the range A to B
- Queries for Count of divisors of the product of an Array in given range
- Number of elements less than or equal to a number in a subarray
- Count of odd and even parity elements in subarray using Mo’s algorithm

### List of problems:

- DQUERY — SPOJ
- Count on a tree II — SPOJ
- Zero Query — SPOJ
- Powerful array — Codeforces
- Tree and Queries — Codeforces
- Jeff and Removing Periods — Codeforces
- XOR and Favorite Number
- Factor Tree — Codechef
- So Close Yet So Far — Codechef
- Chef and Graph Queries — Codechef
- Tree difference — Codechef
- Sherlock and Inversions — Codechef
- Estimating progress — Codechef
- Anup at Amrithapuri — Codechef
- Chefina and Beautiful Pairs — Codechef
- Traffic Count — Codechef
- Chef and cities — Codechef
- Kriti and her Birthday Gift — Hackerearth
- Sherlock and Inversions — Hackerearth

**Edit:**

Thanks for the upvotes! It means a lot to me

great research saurabhyadavz.

There must be a bookmark option to save such blogs .

Well said. These awesome blogs must be bookmarked.

Just as awesome as your editorials xD

There is a bookmark option. You can click star near upvote and downvote buttons and this blog will be added to your favourite blogs. You can watch them in your profile or using this link.

thanks :)

There is already such option ,U can star the blogs which you like and these blogs will be saved in favourites section in your profile

you can add this to favourites

Mo is someone's name, writing "Mo's algorithm" makes more sense, no capital O. Where did that come from anyway?

Thanks for pointing out though. I think it comes from China.

The algorithm of course comes from China ;), but somehow I doubt the capital-O spelling comes from there.

This is not englishforces .

It’s MO’s in order to

capitalizeon thebig Oruntime.Really nice blog. Made my day !

I remember a time when I was stuck in a question in Codechef Long Challenge. This blog is really gonna help all.

Yes it was Factor Tree. Really challenging problem and one of the best Long Challenge I ever faced.

Hey dude, nice blog! Thanks a lot.

Just wondering what made you think the part you have written after edit!

Great job! Newbie lives matter.

Very nice blog. Just looking bookmark it.

Are there any questions that can only be solved by Mo's Algo? The algorithm is pretty cool in itself but personally; not a really big fan of it. What can be an alternative?

Thank you so much for this. Please create more blogs like this on Tree and Graphs

I am at a rating of 1077 right now..Good to see somebody like you who at this stage could at least rise above 1500 hmm ..Good job by the way! I will use this list for my practice

For MO's Algo on trees, how to find the LCA of two nodes??

You need to preprocess the LCA. You can query LCA later time in O(1). You can use binary lifting.