ICPC Sinchon Summer Algorithm Camp Review
- algorithm
Review of Sinchon Union Algorithm Camp
1. Camp Contest 3rd Place
I placed 3rd in the beginner contest of the Sinchon Union Algorithm Camp. I consider this a fairly good result. In fact, it is the first time I have achieved a result that I am somewhat satisfied with through my own efforts, so I write this review filled with TMI with a sense of relief. Moreover, there was an event offering a prize through a lottery for those who wrote reviews, so I couldn’t refrain from doing it.
2. About Myself
This is my current profile since I don't have a profile from when the vacation began.
I have been involved in algorithms for quite some time. By the start of this vacation, my tier was already Platinum 4 according to https://solved.ac/, and I had solved over 800 problems. Considering the simple timeline, it has been about two years, so it is not unusual.
During this time, I have met many algorithm experts like YunGoon, dlstj0923, snowflake, gs11008 and got to know fellow experts from the same school, such as raararaara, shiftpsh, wbcho0504, djs100201, and seastar105. There must be countless other experts whom I have spoken to at least once or twice. Aspiring to be a shining individual like them, I began a double major in computer science. I also had the privilege of leading a study group with those who were much better than me. Through this, it seems that people began to recognize my skills as quite decent. It is true that my skills are much less than those of the people I associate with.
Therefore, I have always thought my skills were inflated. I still think that now. I know I am not completely a newbie, but I don’t consider myself as someone deserving of the Platinum tier. This Platinum tier is just due to my momentary eagerness without any real high-level understanding of advanced algorithms. For instance, while I have solved some problems involving network flow and other advanced techniques, I don't remember any of them now. I only copied and pasted code without understanding the principles behind them.
So I have often thought about starting over from the beginning. However, I've continuously been hindered by a lack of time or my own unnecessary arrogance. It was only during this vacation that I managed to realize this by enrolling in the beginner class of the Sinchon Union Algorithm Camp.
3. Sinchon Union Algorithm Camp
Hello, we are the programming club union of universities in the Sinchon area. We are composed of 180 computer science majors from Sogang University, Sookmyung Women's University, Yonsei University, Ewha Womans University, and Hongik University. We started our activities in the winter of 2020 and have continued regular activities every season.
Excerpt from https://icpc-sinchon.io/
After joining the algorithm society, I was initially inactive, but suddenly the universities in the Sinchon area came together to create a union and began offering quality lectures. Although the Sogang University society had skilled individuals providing good lectures, there were still deficiencies in mentoring and examination systems. The number of members in the Sogang University society was likely insufficient to implement such systems.
However, with the establishment of the Sinchon Union and an increase in members, various systems were created, allowing those willing to work hard to learn algorithms in a much better environment. Various systems were established to help those who wanted to learn algorithms, such as lecture deposits and mentoring.
Despite being present almost since the union's inception, I don't think I actively participated much. I often listened to lectures and worked on problem sets without really engaging. I used the excuse of having other commitments as a reason not to participate properly. Furthermore, since I was in the intermediate class, many of the algorithms discussed were quite challenging for someone with a lacking foundation like me, making it difficult to grasp.
Nonetheless, this time, I decided to focus and applied for the beginner class. Most of the curriculum covered algorithms I had at least encountered before and had solved several problems on, so I intended to solidify my foundation by reviewing them. From personal experience, I realized that while learning difficult algorithms could be fun, it didn't significantly contribute to improving basic skills unless one had a solid knowledge base.
Reference: A Society Promoting Difficult Algorithms - Green55
Unfortunately, I wasn’t able to solve all attendance problems.
Therefore, this time I aimed to try solving every problem with my own hands. If I truly couldn't, I could look at the solutions, but I resolved not to copy others' codes superficially and submit very similar code. I understand that merely copying others' codes does not help improve my skills, even if it is shameful to admit I have done so quite a bit. I decided that even if I referenced solutions, I would implement them myself after understanding them.
Looking back after the camp ended, I realized that while I didn’t solve every problem solely through my own insight, at least I accomplished solving them with my own hands. In terms of tier, I solved problems that are significantly lower than those I had solved through gradually learning advanced algorithms. However, I dare say they are more commendable than any of the advanced problems I had previously solved.
3.1 Progress of the Camp
The data structures and algorithms covered in the beginner class of the Sinchon Union Algorithm Camp are basic yet notoriously challenging subjects. (For instance, Union-Find and BFS are categorized as Gold Lower and Silver Upper tier algorithms according to solved.ac, but when mixed, they can lead to horrendous problems like BOJ 14868 Civilization. Many advanced algorithms, such as line sweeping using stacks, derive from these basic algorithms.)
Therefore, while many people tend to breeze past these basic algorithms, they are very important and require capable guidance. I believe the Sinchon Union provided well in these aspects. The instructors were at least Codeforces Orange level, and the mentors were quite impressive as well.
In any case, the camp proceeded with these topics. After lectures from the instructors on each topic, attendance was recorded based on solving a certain number of attendance problems (as well as practice problems). Additionally, perhaps for motivation, an attendance deposit was collected at the start of the camp, and a system was implemented to refund it only to those who met certain criteria during the camp period.
I think it was a really good idea, though I'm not sure who came up with it. Just having a few thousand won deposit made me participate more actively.
3.2 Camp Story - Attendance Problems
Attendance problems on the greedy topic. Although you only needed to solve four or more, most of them were Gold level greedy problems.
However, speaking as a participant, I believe the selection of attendance problems for several topics could have been better. While I'm not entirely sure if the organizers aimed to give a taste of the mysterious world of algorithms solely through these basic topics, I found it a bit unreasonable to throw Gold Upper level problems at complete beginners.
(Of course, I have no major criticisms regarding topics such as Minimum Spanning Tree, which are classified as at least Gold 4 tier. However, I think a Backtracking problem rated Gold 4 is considerably more challenging than a basic MST problem rated Gold 4. I believe that having a Gold 3 attendance problem in MST should not be treated identically to one in Backtracking.)
I can agree with the view that someone wanting to delve into algorithm competitions should not find it out of reach to tackle such problems. Honestly, I would feel the urge to throw challenging yet worthwhile problems their way too. However, there were over 150 students in the beginner class, and it's unreasonable to assume that all those individuals were fully committed to completing algorithms. Personally, I suspect that at most 10% of them, about 15 individuals, could be considered algorithm warriors.
Since the camp isn’t just for such individuals, I think it would be better to have somewhat easier problems as requirements and assign the rest as practice problems next time... But, since I'm not part of the camp's organizing team and I liked the problem selection, I don't have much else to say. If they choose equally impressive problems next time, I might very well participate in the beginner class again or at least help as a mentor to tackle the problems.
3.3 Camp Story - Lectures and Practice Problems
Even though I knew nearly all the content, I found the lectures pretty good. They didn’t provide advanced techniques, but the explanations were solid enough that attending them felt like my knowledge base was getting stronger. Codeforces Orange instructors indeed are different.
The attendance problems, as I mentioned, might not be suitable for complete beginners, but for me, the problem selection was really good. For someone like me, who knows what a stack is and what dynamic programming is but can't utilize them properly, these problems forced me to apply these concepts. I believe even someone starting algorithms for the first time could find worthwhile challenges if they possess the desire to learn. I have indeed seen several individuals significantly improve their skills due to this camp.
Of course, for me, backtracking is still difficult, dynamic programming is hard to come up with, and exhaustive search implementations are tough. However, I think I’ve become somewhat more familiar by attempting to solve applications of these topics on my own. In the past, I would barely glance at them or scribble a bit before checking the answers.
3.4 Camp Story - About the Utility of the Camp
Is taking the camp a good choice for improving algorithm skills? I can’t say it’s an absolute yes. However, it does lower many hurdles commonly faced when starting algorithms.
I think the effectiveness of what you learn from the camp is not particularly high. Of course, the claim that high-quality lectures are provided at the camp is true. However, that kind of information could easily be found online if one is motivated. Well-organized materials already exist on blogs like kks227 and Baekjoon, and on YouTube, channels like IOI Korea have renowned individuals from the algorithm community giving lectures. There is nothing unique that can only be learned at this camp.
However, they provide a clear curriculum. There is a promise that if you master these topics and solve these problems on your own within this period, you will reach a certain level. Furthermore, if you encounter something you don’t understand or a problem you can't solve, the presence of mentors makes it easy to ask questions. Such aspects can also be found online, but for someone just starting algorithms, it is quite challenging.
Attendance problem scoreboard. It stimulates competitive spirit.
Moreover, even if I have never met someone before, the existence of individuals who are slightly ahead of me is motivating. For anyone seriously interested in algorithms, seeing someone higher up on the scoreboard naturally evokes a desire to solve more problems.
People on open chat rooms or in algorithm communities are typically very skilled, so while they can provide good advice, they might not be able to be good competitors. If you are just starting algorithms, how could you compete with those at Codeforces Purple and Orange levels? The Sinchon Union Camp provides competitors who stimulate a certain degree of competitive drive. Even I find it hard to resist solving one more problem when seeing those scoreboards.
However, I believe that face-to-face studies or seminars can lead to many unexpected connections (for instance, I met my idol, raararaara, through such an opportunity), and it was unfortunate that due to COVID-19, there were no opportunities for face-to-face interactions. I think that once small gatherings become possible in the future, having some in-person activities during the camp would be beneficial. Alternatively, separate study groups could be created. Now that I think about it, study groups could have been formed even now, but nobody initiated them.
In summary, there is nothing that can be obtained solely from this camp. However, I believe it provided a lot of things that are not easily achievable alone.
4. Camp Contest
Since I placed 3rd, I can't skip writing about the contest entirely. I will briefly describe my experience.
The experience of receiving the :god: emoji from unfamiliar people was refreshing.
On the day of the camp contest, since we couldn’t use the university’s lab, I tried to rent a study room. However, at a cost of 14,400 won, it seemed a bit expensive, so I looked for someone to share the cost. I ended up going with p_jun
, who contacted me immediately.
The study room we went to with p_jun
was somewhat tilted in its seating, but quite good overall. While 14,400 won is not a small amount, it's relatively cheap for a study room rental, and the quality was satisfactory for that price. I particularly enjoyed being able to drink coffee freely.
In any case, we worked silently in the study room, solving problems. My comments on the problems are as follows: I'll list them in the order I solved them.
A. Binary Division
This problem can be solved by carefully considering the properties of binary numbers. I think it's a mistake-prone