How to approach problems like this Playlist or Josephus problem, where we delete some element and rejoin the circle. Also, if anyone can provide 2-3 similar problems, it will be really helpful to master this concept.
Thank you
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3831 |
3 | Radewoosh | 3646 |
4 | jqdai0815 | 3620 |
4 | Benq | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | gamegame | 3386 |
10 | ksun48 | 3373 |
# | User | Contrib. |
---|---|---|
1 | cry | 164 |
1 | maomao90 | 164 |
3 | Um_nik | 163 |
4 | atcoder_official | 160 |
5 | -is-this-fft- | 158 |
6 | awoo | 157 |
7 | adamant | 156 |
8 | TheScrasse | 154 |
8 | nor | 154 |
10 | Dominater069 | 153 |
How to approach problems like this Playlist or Josephus problem, where we delete some element and rejoin the circle. Also, if anyone can provide 2-3 similar problems, it will be really helpful to master this concept.
Thank you
Name |
---|
In many deletion problems, only a small change occurs in the array/circle. For example, in the problem Playlist, at most three GCD pairs change. This can usually help in either simulating the problem or getting to some other observation.
In this problem the number of elements in circle get reduced by 2-3 , but how to approch problems where we have to reduce it to 1 element.
Ex : Given an circular array , you can merge two adjacent elements and replace to by F(a[i],a[i+1]) .Find the maximum value you can get after n-1 operations ??
In deletion problems, there are some common approaches like doubling the array, using a data structure (set, segment tree) to erase and then binary searching or observing minor changes after deleting an element.
I like to use a circular linked list. It is extremely intuitive as it is literally a circle (I feel this makes more sense than for example, doubling the array).
https://www.geeksforgeeks.org/circular-linked-list/