My OI Memoirs
Preface#
Looking back at the path I have traveled, it has already been six years since my very first encounter with Informatics Olympiad. These six years have felt like a long, burning journey—countless early mornings and late nights, and innumerable moments of my fingers raining down on the keyboard in front of the screen have interwoven to form the most unique imprint of my youth.
In those many competitions, I have tasted the joy of success and experienced the dark valleys of disappointment. Today, standing on the threshold of eighteen, I pick up my pen to write down these words. This is both a tribute to those past days and nights that I couldn’t bear to part with, and a coming-of-age gift to myself—a gift belonging to that young boy who refused to give up and still harbors dreams.
The Encounter#
Right at the beginning of my fifth-grade year, my father found a programming institution named [A]. Hearing that learning to program could help with the admission transition from elementary to junior high school, he asked if I would like to give it a try. At that time, I was filled with curiosity about everything new, so I nodded and agreed to this attempt. From then on, every weekend, I would carry my laptop to that computer room and begin my weekly programming class. That was my first encounter with the Informatics Olympiad.
At first, I barely understood how a programming language could run on a computer, nor could I comprehend the logic hidden behind each line of code. The only thing I could do was mechanically imitate the code examples provided by the teacher. In order to get through the institution’s tests, I even printed out all the code and memorized it line by line. Back then, I was as clumsy as I was earnest.
A year later, I finally gained a vague understanding of C++ and could write some simple programs independently. Filled with the excitement of a beginner, I signed up for the CSP preliminary round in the sixth grade. But reality was not gentle—that was my first failure, and I was stopped right at the preliminary round. However, I wasn’t too anxious at the time; after all, programming was still just a hobby rather than the “major subject” of my life. I also once participated in an online individual programming competition for university students hosted by zju, and the result was exactly as expected—zero problems solved.
In the blink of an eye, the time came for the transition to junior high. That year, Hangzhou implemented a “lottery-based” enrollment system for the first time. I registered for the lotteries of both HFLS and Jianlan Middle School, but luck was not on my side for either. Yet, perhaps it was precisely the regret of those two “unselected lotteries” that set me on another path destined to be long and full of passion—the Informatics Olympiad.
Just like that, with a mood mixed with curiosity and confusion, I stepped through the gates of my junior high school, which also marked the starting point of my true journey in Informatics.
The Starting Point#
Just as I was hesitating about whether to continue pursuing the Informatics Olympiad in junior high—after all, my academic grades were quite good at the time, and taking the traditional route seemed safer—fate brought me to meet two companions of extraordinary significance: F and D.
We were assigned to the exact same class during the very first placement exam of junior high school. After getting to know each other, I was surprised to find that they were also studying the Informatics Olympiad. What was even more coincidental was that our student ID numbers were consecutive. With friends walking side by side, the loneliness of learning quietly dissipated. Because of this, our three sets of parents became even more determined: since there are fellow travelers, let’s walk this path together.
From that moment on, I truly embarked on my own Informatics Olympiad journey.
During the first few months of junior high, we only self-studied algorithms sporadically using information technology classes and free time in the evenings. Before long, CSP arrived. Fortunately, I passed the preliminary round for the CSP-J group. In order to prepare for the elimination/final round, I made an unprecedented decision—to suspend my regular school classes and focus entirely on preparation. That was the first time in my student life that I asked for a leave of absence; I hadn’t even taken sick leave before. Looking back now, behind that single leave request slip was the first time my young self learned to “bear the cost for what I love.”
I still clearly remember that during an art class in my first year of junior high, the teacher asked us to write down our goals for the three years of junior high on a timeline. Without a shred of hesitation, I wrote down:
7th Grade: CSP-J First Prize; 8th Grade: CSP-S Second Prize; 9th Grade: CSP-S First Prize.
At that moment, the seed of belief was quietly planted.
F, D, and I signed up for a training class at institution [B] together, where we also met a new classmate, Z. The small-class teaching model allowed us to have more interaction with the teacher. I began to truly understand the thinking behind the algorithms and gradually felt myself growing. That period marked the first leap in my Informatics proficiency. It was also the first time I came across Codeforces, an online algorithmic competition website. However, my skill level was limited back then, and I could barely write anything beyond the “check-in” (simplest) problems in every contest. Frustration was inevitable, but I told myself: this is just the beginning, your road is still very long.
Hard work pays off. A month later, in the examination room of the CSP-J final round, I secured the First Prize with a score of 255. At that moment, I realized the first goal I had written down in that art class, becoming one of the few seventh-graders in Hangzhou to win the first prize that year. From then on, for the very first time, I genuinely believed that I possessed the potential to go further in the Informatics Olympiad.
The Low Valley#
After the CSP competition ended, I began learning Senior-group (TG) algorithms at institution [B]. Time flew by. Before I could truly digest those new concepts and algorithms, the next year’s CSP silently approached. With a year of accumulation, my level had indeed steadily improved, and I passed the preliminary rounds for both the J and S groups as expected.
That year, the J group exam was scheduled for the morning, and the S group for the afternoon. Walking into the test center, I thought to myself: the morning’s J group shouldn’t be a problem, I can easily lock down a high score and save my primary energy for the more challenging S group in the afternoon.
However, accidents always happen when you are at your most relaxed.
Among the problems in the J group that year, there was one called “Network Sort.” The problem required tedious case-by-case discussions. My coding foundation was still shallow back then; I spent a long time debugging a single problem, yet I still couldn’t pass one of the sample cases. For another problem, “Bear’s Fruit Basket,” I remained entirely clueless for a long time.
That was the first time I truly felt trapped in an examination room.
My young self did not have much competition experience, and my mentality quickly began to collapse—anxiety crept in bit by bit, my fingers grew stiff, and my thoughts turned chaotic. By the time I finally snapped out of it, time had already run out.
The result was even worse than the previous year.
During the lunch break, I could barely swallow any food, completely buried in disappointment. For the S group competition in the afternoon, I failed to adjust my state of mind, and my final performance was mediocre.
When checking the scores a few weeks later, I found I had only received a Second Prize in both the J and S groups. I asked about F and D’s scores—both of them had secured the First Prize in the S group, and F’s score was even more than double mine.
For the next few nights, I could hardly sleep. I began to doubt whether I was truly cut out for this path. Those classmates who once walked shoulder to shoulder with me were now leaving me far behind, one by one.
I felt deeply, for the very first time, that passion could also bring such pain…
Opportunity#
The turning point appeared during the summer break transitioning from my second to third year of junior high.
That summer, to help me prepare for the new year’s CSP, my father inquired everywhere for training resources. Fortunately, he got in touch with the Informatics coach of hez—Teacher Li. Just like that, I began attending Teacher Li’s algorithm class. At first, I only studied in the computer room of the large lecture class; not long after, Z invited me to join the training in the small computer room.
The day I walked into that small computer room, I saw those hez seniors for the first time—the ones I could previously only look up to on the leaderboards and hear about in legends. At that moment, I felt as if I had stepped into a much higher world.
That summer break was the first time I experienced such high-intensity training. There was a mock contest almost every single day. To me at the time, those problems were far too difficult—I often spent an entire morning unable to write a problem that the seniors could “instantly kill” in a matter of minutes. On the leaderboard, my name was almost always at the very bottom. Yet I did not back down, because I knew: it is precisely through the process of being repeatedly crushed that a person can truly grow.
After a whole summer, I became much more resilient in both algorithms and mentality. As the ninth-grade CSP approached, Teacher Li suggested that I skip the J group and only register for the S group to avoid repeating the previous year’s mistake. That year, I finally got my wish and secured the CSP-S First Prize. At this point, the three-year goals written on the art class timeline in the seventh grade were entirely fulfilled.
But by then, I was no longer satisfied with just “completing goals”—I began to long to go even further.
Throughout my entire ninth-grade year, I was practically detached from regular school classes to train full-time. Except for the few months prior to the Senior High School Entrance Examination (Zhongkao), I spent almost all my time at hez solving problems and running mock contests alongside the high school seniors. I also got to know seniors S, C, and 5. That year, I went through countless high-intensity training sessions and encountered grand-scale competitions like WC and APIO for the first time. I knew deeply that every single bit of my persistence was making my future self stronger.
The most important competition of that year was the Zhejiang Provincial Selection (Zhejiang Provincial Team Selection). Zhejiang Province provides junior high school students with outstanding CSP-S scores the opportunity to participate as “experience contestants.” To fight for this qualification, I exerted every ounce of my strength to grab every single point possible. In the end, although I didn’t come anywhere near the team cutoff line, this experience made me feel truly for the first time—that was the place I wanted to go.
Speaking of which, there was a small interlude. Before the Zhongkao, I lost my direct admission quota to the hez main campus by a margin of just one rank at the allocation meeting. When the Zhongkao results were released, I missed the hez main campus by a single point once again. I originally had two opportunities to go to XJ, but in the end, I still chose hez Shouchuang.
Because at that time, there was no longer any hesitation in my heart—I had already decided that no matter how difficult the road ahead might be, I would keep walking down this path of the Informatics Olympiad.
Surprise#
After a year of high-intensity training in the ninth grade, I felt that my level had improved significantly. Smoothly enough, I continued to secure the CSP-S First Prize in my first year of high school (G1).
Soon, I welcomed the first pivotal competition of my Informatics Olympiad career—the G1 NOIP. This competition directly dictates the scores for the provincial team selection, meaning it is intimately tied to the qualification for NOI.
Not long after the exam began, I successfully solved two problems: “Dictionary” and “Three-Valued Logic.” However, the third problem, “Double Sequence Expansion,” left me stuck. It took me a long time to devise a approach with polynomial complexity, which could be optimized to $O(n\log n)$ using data structures, but no matter what, I couldn’t think of a linear solution. Watching time tick away bit by bit, anxiety began to surge into my heart. Holding onto the objective of “maximizing my score,” I started scrambling for partial points. In the fourth problem, “Daily Check-in,” I didn’t spend too much time overthinking and simply analyzed the solution for each set of partial points.
When estimating my score in the examination room, I expected to get 347 points—which would have been a competitive score in past NOIPs. I was originally quite satisfied, but I was shocked by reality when I asked my classmates about their scores: D, S, C, and 5 had all achieved perfect scores. There were only 16 spots for the provincial team a year, and the score of the 16th rank on the leaderboard was already close to a perfect score. In other words, if I wanted to make it into the provincial team, I would have to stage a comeback and make up a gap of more than 50 points during the Provincial Selection.
Over the next few months, I threw myself into even higher-intensity training. Aside from completing the school’s mock contests, I searched everywhere for various mock exam problems, grinding through them time and time again, just so that my efforts throughout my G1 year would not go to waste.
The March spring breeze blew against my face, but I had no time to enjoy it. The pressure of the Provincial Selection was like a massive boulder, firmly weighing down the drifting thoughts in my mind.
In the exam room of Provincial Selection Day 1, “Monsoon” was a very simple problem, and I passed it quite smoothly. The second problem was “Magic Wand.” After a long period of thinking, I successfully put together a correct approach. I was eager to start implementing it, but no matter what, it wouldn’t pass the samples. During the debugging process, I even briefly forgot what the logic behind one of the steps was. With only one hour left in the competition, I still hadn’t passed the samples. I began to panic, thinking—if I can’t pass this problem, my season is over. Should I stop being so aggressive and quickly go scramble for various partial points instead?
But facing a 50-point gap from the team cutoff line, I had no choice—All in. Lady Luck seemed to smile upon me; I quickly fixed the various bugs and successfully passed the sample cases. After scraping together the partial points for the third problem, Day 1 finally stabilized. I breathed a sigh of relief.
The Day 2 competition was even more challenging. The first problem, “Maze Guard,” was quite difficult. I quickly thought of an approach, but the implementation details were intricate. I ran into the exact same issue as Day 1—debugging for a long time without passing the samples. I kept running stress tests and modifying the code, but it just wouldn’t pass. The thought of “season over” crossed my mind once again, but I told myself: “If you can’t even pass T1, what problem can you pass?” Miraculously, I was blessed by the god of luck once more, successfully passing the samples in the final hour and a half of the competition. After securing the partial points for the last two problems, the competition came to an end.
A few weeks later, the results were announced—a surprise arrived: relying on the critical points scored on D1T2 and D2T1, my total score successfully placed within the top 16, smoothly earning me a spot on the provincial team.
At that moment, I found it unbelievable, as if the entire world was flashing just for me. I even began to fantasize about what my future university life would look like after entering the National Training Team…
The Blow#
The G1 NOI arrived very quickly. It was perhaps my closest opportunity to Tsinghua or Peking University at the time. Yet, it remains an experience that I still find difficult to look back on to this day.
That year’s NOI was hosted by Chongqing Yucai Secondary School. As CQYC is a sister school to hez, we arrived in Chongqing half a month early to participate in the training camp. However, the food in Chongqing is drastically different from that in Zhejiang; almost every dish in the school cafeteria carried a intense spiciness. I found it hard to adapt, and my physical condition was poor for several consecutive days.
During the training camp in Chongqing, I performed poorly in several consecutive mock contests, frequently getting stuck even on the “check-in” problems that I could easily solve in the past. In the UNR a few days later, my performance remained mediocre. This made me begin to doubt my own ability, and I developed significant worries about my condition.
On the day of registration, the problem escalated further. Perhaps due to the dry climate coupled with the specific diet of the past few days, I began to get frequent nosebleeds that were difficult to stop. Every nosebleed left my body and mind increasingly exhausted, making it hard to concentrate my thoughts. During the Day 1 competition, I could only move cautiously, scraping points bit by bit, and ultimately failed to reach the level of the team cutoff line.
On the social activity day, we were taken to visit the Three Gorges Museum. The scorching weather made my already fragile body even more unbearable. The night before Day 2, I was woken up by a nosebleed again. The blood kept flowing, leaving me completely sleepless from that point onward, tossing and turning in bed until dawn.
The Day 2 competition remained rough. I got stuck right on the first problem, “Fraction,” failing to find a pattern even after observing it for a long time. In the second problem, “Mountaineering,” I devised a correct approach, but because the implementation was overly tedious and my physical state was poor, the final score was naturally disappointing.
Just like that, my G1 NOI came to an end—I only walked away with a Silver Medal, ranking around 100th place, leaving a considerable gap between myself and the National Training Team.
After the NOI ended, I went traveling in Ulan Butong, trying to pull myself out of the shadow of failure and resume normal training. I understood that from this moment on, I only had one final opportunity left. In the coming year, I couldn’t afford a single slip-up; every single attempt had to be met with my absolute absolute best.
The Ending#
In the stories that followed, I became one of the lucky ones, experiencing the tale of a successful OIer…