hxu10's blog

By hxu10, history, 6 weeks ago, In English

I have participated in the Meta Hacker Cup for four consecutive years: 2021, 2022, 2023, and 2024. After receiving the T-shirt today, I would like to share my experiences and progress.

2021: A newbie want a T shirt 2021

This year, I was a complete newbie. The first two rounds lasted over 24 hours, which gave me more time to solve the problems, so my rank looked good. However, Round 2 was only 3 hours long, and it turned out to be a complete disaster for me.

I got stuck on the first problem and doubted my solution repeatedly. Although I finally solved it 30 minutes before the contest ended, I had no time left for the other problems. In the end, I only solved one problem and ranked 2700+, which meant I didn’t even qualify for a T-shirt. I shared my result with some Meta HR representatives, but they didn’t respond. I applied to several positions at Meta, but my resume was rejected.

I also participated in the Google Code Jam Round 2 and ranked 1000+, but I failed to qualify for Round 3.

2022: Finally I get a T shirt 2022

This year, I performed much better. I finally made it to Google Code Jam Round 3! For the Hacker Cup, in Round 2, there were six problems, and I was able to solve two this time. I made it to the top 1000 and won a T-shirt for the first time.

However, after the contest, I realized I could have done better. With just 30 more minutes, I could have solved A2, and the probability problem wasn’t too hard either. If I had solved just one more problem, there was a great chance I could have qualified for Round 3.

2023: Thank you Meta for keeping this competition alive 2023

This year has not been a smooth one.

First, I wanted to challenge myself with Google Code Jam again because, although I qualified for Round 3 last year, I performed poorly and ranked near the bottom. However, Google canceled the contest this year, which left me with a very bad impression of the company. To make matters worse, TopCoder also canceled its contest. I thought Meta might follow suit, but to my surprise, they decided to keep the Hacker Cup running.

This year, I must admit that I didn’t perform as well as I had hoped, especially in Round 1. For the first time, I ended up with a four-digit rank in that round. My performance in Round 2 was a little better. After struggling with Problem C (Wiki Race) for nearly an hour, I discovered that Problem D was much easier. If I had focused on Problem D earlier, I might have qualified for Round 3. Still, I managed to secure a spot in the top 1000 and earn a T-shirt. The T-shirt is very comfortable, and I’m wearing it even now.

On a positive note, I was contacted by an HR representative from Meta. She said she was impressed by my performance and wanted to talk to me. Although I haven’t received any follow-up or rejection letter since then, it feels like a good start.

2024: Finally make it for round 3

This year, GPT has become much more advanced, and Meta introduced an AI track, which made the competition even more interesting. Additionally, the pretests in this contest were noticeably weaker. My guess is that this might be an attempt to prevent AI-assisted cheating.

My performance this year was much better than in previous years. In Round 1, I made a false assumption and received a Wrong Answer (WA) on Problem D. In Round 2, I missed a corner case on Problem B and got another WA. However, this has been my best performance yet, as I ranked in the top 500 for all three rounds and historically qualified for Round 3! My goal this year was to win the coveted "Top 200 Badge" T-shirt.

Three days before Round 3, I mocked the 2023 Round 3 and achieved a rank of around 140–150, which gave me confidence that I had a real chance. Then, on Saturday, Round 3 began.

The Contest Problem A was very tricky. Initially, I misread it as "minimum area," so I wrote a sliding window solution within 30 minutes. However, I soon realized my understanding was wrong—it was actually about "maximum area." This forced me to start over from scratch.

I also noticed that the validation test set didn’t include the k=3 case. My judgment was that Problem A would likely have a high FST rate. To ensure my solution was robust, I spent more than two hours considering numerous corner cases, writing a brute-force solution, and using a random generator to create small test cases for debugging. After extensive testing, I was confident in my solution and submitted it.

When I moved on to Problem B, I realized it was much easier than Problem A. I regretted spending so much time on A, as I only had 30 minutes left. Unfortunately, I wasn’t able to finish B in time. In the end, I only solved one problem and ranked 296, falling short of my goal of earning the "Top 200 Badge" T-shirt.

Reflection The main reason I failed was that I was overly cautious about system test failures, which made me spend too much time on Problem A. While I did secure my 17 points on A, I now realize that even if I had failed the system test on A, solving B quickly could have still placed me in the top 200. Problem C was also solvable for me, as I am quite good with probability, but I didn’t even get to attempt it due to my time allocation.

2025: Can I have a top-200 badge T-shirt this time?

To be continued ....

Finally, I would like to thank Meta. Although Meta has rejected my resume for SDE and MLE positions 12 times, the company still provides us with a great contest (not cancel it like GCJ), at least for fun.

The IOI is designed for high school students, and the ICPC is for college students. For someone like me—a post-PhD graduate—there are almost no public contests in the United States. Despite the unique format of the Hacker Cup, which many of us are not fully accustomed to, I still hope this contest continues in the future.

At this point, I no longer expect HR to give me a chance for an interview, as it feels meaningless. Competitive programming itself is fun, and that’s enough for me. Besides, you can see my progress from 2021 to 2024—it has been steadily improving. That alone is a great achievement.

Full text and comments »

  • Vote: I like it
  • +138
  • Vote: I do not like it

By hxu10, history, 19 months ago, In English

Hello everyone. I am a codeforcer for two and half years. I took part more than 130 contests, write hundreds of comments and blogs. Now it's time to say goodbye, but not fairwell, to contests. My English is not very good, but my words are sincere.

As a Physics PhD new grad try to become a sofeware engineer, I took part in my first codeforces contest in 2020. My initial reason for the codeforces, is to practice algorithm, since I found it difficult to solve the hard tag problem in leetcode weekly contest, and a experience leetcoder told me: "if you want to solve harder problem in leetcode, try codeforces, and if you can solve 2400 rating problem in codeforces, leetcode problem is just piece of cake. "

So I took part my first contest: educational codeforces 97. The results was very good, I solved four problems and get a ranking of 600+. However, my second contest is a disaster and give me huge lesson. I found it difficult even for reaching blue. I keep practicing, focusing on problems that close to my rating. Efforts finally pay off. In my first contest, I thought 2000 rating problem is very hard and nearly unconquerable. But now, I can finish most of the 2000 rating problem during contest. I can even AC 2400 and 2500 rating problem.

I reached my highest rating 2204 last year, which make me, but it's a "fragile" high rating by luck since I just drop down to expert only a few contests. This time I reach candidate master again, but is more stable. If you believe, you can see my rating graph. In my most recent contest (round 875), I got a very good performance. I solved three problems, problem 1C is in last minute, and get top 200 in a contest that rated for only div1 users.

Thanks to codeforces, I also have much greater performance in leetcode contest. I reach top 20 many times and won a bunch of real prizes.

Thakns to codeforces, I entered Google Code Jam 2022 round 3, and won a T-shirt.

Besides contests, codeforces is also a lovely community. Comments and blogs are very interesting here, even some are highly downvoted. For me, I try to be sincere and friendly, so my contribution is also good. You are more than welcome to upvote this blog and leave comments.

Then you may ask: why I say goodbye for such a good platform? It's not platform, it's about jobs.

I faced very great difficulty finding jobs. I got a PhD in August 2022, and when I am looking for jobs in United states, I found it extremely difficult. I am good at algorithms, but they only ask very easy coding questions. The most difficult problem asked during interview is a 1300 rating codeforces problem. I solved it very quickly during interview but still cannot proceed next round, because I cannot write a "Thread safe singleton class".

More times, the HR just reject my resume because I have no experience, no internship. Even for Google and Amazon, I know I can pass coding interview, but they just threw my resume to rubbish bin and didn't gave me any chance.

Then, I just split myself into halves, preparing for jobs in days and practicing codeforces or leetcode in nights. However this is still not enough, I am still unemployed, and my money deposit is running out in a few months. Now I need to 100 percent focusing on my jobs. get a job, get a job, get a job!

If you are a software engineer in US, you are welcome to give me a reference if you can. I have physics PhD degree. I am good at Java, python, c++, backend technologies like SpringBoot, Feign clients, and frontend technologies like javascript and React. I also have experience in machine learning. What's more, I got AWS certificate recently.

I am not saying fairwell. If I find a stable paid job and I get used to the work environment, I will still come back for contests. I even want to be a problem setter for contest. It's just a goodbye. It's so enjoyable competing and solving problems in codeforces.

Finally, Thank you MikeMirzayanov for this great platform.

Full text and comments »

  • Vote: I like it
  • +440
  • Vote: I do not like it

By hxu10, 20 months ago, In English

I have participated codeforces for 125 rounds. Yesterday's educational round is a good round for me, make me have a +69 rating, then I found nearly every educational round can make me gain good rating.

So I just grab my recent 50 contests, get the performance (which is obtained by carrots), and draw a graph, and find the interesting thing.

My educational round is far higher than ordinary rounds. 10 rounds total and average performance is 2170. My div1 only round is much worse than ordinary rounds, 5 rounds and average performance is 1771. Other rounds, average performance is 1943.

Does others have the same feeling, or it is just me, that div1 only is much easier to lose rating and educational rounds is much easier to gain rating?

Full text and comments »

  • Vote: I like it
  • +58
  • Vote: I do not like it

By hxu10, 22 months ago, In English

Now the newest GPT have published its academic performance. Here is the picture.

fig

We can see from this picture that latest Chat-GPT have very outstanding performance at all kinds of exams GRE (beat me hard in GRE verbal), SAT, LSAT....

But for codeforces, original GPT only have a rating of 260, the GPT-4 is slightly better, with a rating of 392. Even a newbie can beat chatGPT-4 now (2023-03-14). Codeforces is the only one that GPT behave below 5%. Therefore, I am proud to say, competitive programming, like us codeforces, is one of the hardest obstacles chat-GPT will overcome.

The reason why I post this, is that many people, including me, worries that chat-GPT will destroy the competitive programming, like alphago destroy the go.

I am not saying it will not. However, think about it, why alphago vs Sedol lee or Jie Ke is most famous and shock the whole world? Because go is the hardest checkerboard game AI can beat, beat most famous go player means beat all checkerboard. We can also say, if AI beat tourist and rank No.1 in a contest, it means AI beat the whole education system, make all online exams and contests cheatable. Therefore, this contest will be shock the whole world again, end the old era and open the new era, and we contestants will all witness the history.

Full text and comments »

  • Vote: I like it
  • +296
  • Vote: I do not like it

By hxu10, history, 2 years ago, In English

Currently I have already got a PhD in physics, but I would like to find a job in computer science (like data scientist or SDE) instead of postdoc. However, my disadvantage is that I have no internship and programs to write. (My school forbid us to take internship that are not relevant to our study)

My advantage is that I have some "good" competitive programming results, like entering 2022 Google Code Jam round 3, Google Kick Start top 100 for three times.

I would like to include my codeforces rating in my CV, but many friends of me said to me:"no recruiter know codeforces." So I would like to ask everyone, does anyone has ever included codeforces in CV and what consequences?

Another question is that, if you write codeforces(or actcoder, leetcode...) results in CV, what rating do you write, like maximum rating or current rating? Thank you.

Full text and comments »

  • Vote: I like it
  • +82
  • Vote: I do not like it

By hxu10, history, 3 years ago, In English

I have participated in four div 1 only contests, and every time ends up in very big negative data. First time, I thought it is just coincidence, but 4 times, every time I lost big, then in the contest 796 , I do an experiment.

The score distribution: div1: 500, 750, 1500, 1500, 2000, 3000 div2: 500, 750, 1250, 1500, 2000, 3000

ABC in div1 corresponds to DEF in div2. According to each problems accepted users, the difficulty ranking of each problem is div2A <= div2B << div1A < div2C < div1B << div1C << div1D..... More difficult a problem is, more time a user expect to spend.

Assume a user takes part in div 2 contest and solve 5 problems, and finish each problems in time 0:05, 0:10, 0:40, 1:00, 1:50, with no wrong submissions. His score, according to the rule should be 490+720+1050+1140+1120 = 4520, he will rank 93 in this contest, and his performance rating is 2147 according to the rating predictor.

Then, this user takes part in div 1 contest, since div1C is very hard, and he is not able to solve it. He will solve only two problems, with time 0:20, 1:10 (each subtract 40 minutes), and his score will be 460+540=1000, and his ranking is over 550, with performance rating less than 1900.

That means, if his current rating is 1899 and participate div2, he will gain big rating (about +60), however, if his rating is 1900 and participates div 1, he will lose rating and go back to expert.

I would like to ask if you all have the same feeling, that is, it is harder to gain rating in div1 only contest?

Full text and comments »

  • Vote: I like it
  • +115
  • Vote: I do not like it

By hxu10, history, 3 years ago, In English

Currently this contest will start in less than 20 minutes, and I find no blog about this contest, so I decide to write one. Here is the link:
Code Jam 2022 Round 2 link

Last year I ranked 1672 and failed to qualify for round 3, this year, I feel that I improve so much, hope I can get a T-shirt. Good luck everybody, and any discussion is welcomed.

(updated: Finally I ranked 484 and won a T-shirt, so excited, see you in round 3! )

Full text and comments »

  • Vote: I like it
  • +123
  • Vote: I do not like it

By hxu10, history, 3 years ago, In English

I know it is not very appropriate to discuss politics in this CP platform. But this war is too big, and has already influenced this platform. The go study round has already been postponed because of this.

In many social media platforms, there are many jokes about the war, like taking Ukraine women home .... I cannot be more disgusted seeing these comments. War is war, no matter what excuse, it will hurt people badly. It's not game, it's real. I stand against every joke about this war, and hope the war end as soon as possible.

I post this because many people in Ukraine start hating Chinese after seeing these jokes, and ministry of foreign affair suggests Chinese in Ukraine to not expose their nationality in pubic to protect themselves. I would like to say this cannot represent all Chinese. If you see a Chinese on the street, don't assume they support Putin. China already had so many wars and has been invaded by so many countries, Japan, US... we love peace. I stand against every war.

Finally, I send my best wish to Ukrainian, please be safe, and may the war end quickly and back to normal as soon as possible. I also send my best wish to Russians. Standing with Ukrainians does not mean standing against Russians, they are both victims of war.

Full text and comments »

  • Vote: I like it
  • +474
  • Vote: I do not like it

By hxu10, history, 3 years ago, In English

I have participated over 60 contests. I became expert in my 12th contest and reach the rating 1800 at 17th. I feel very confident and my goal then is master and grandmaster.

However, I find it extremely difficult to move further. I have stayed between 1747 and 1965 in the nearly 30 contests, every time I reach 1900, my next contest will more likely to have negative rating and make me drop into expert again. My title keeps expert -> candidate master -> expert -> candidate master -> expert ....

I would like to know if any people have the same feeling as me, like very hard to reach purple or very hard to stay purple. I heard from another saying: "hard work makes you expert, but if you want master, you need talent. " I don't know if the saying is true.

----- UPD: Sorry for the title change. The gap between expert and candidate master is actually only 1. I previously want to ask if a stable expert is very hard to become a stable candidate master. Reaching candidate master by chance and drop to expert next time does not count for stable candidate master.

Full text and comments »

  • Vote: I like it
  • +80
  • Vote: I do not like it

By hxu10, history, 3 years ago, In English

The codeforces round #765 is over, among the top 10 rated users, 5 are newbies, 2 are specialist. Ranking are as below. rankings

If you click on these newbie users, like the 3rd place @Alan_boyfriend, you can see the user previously take part in round 764 and rank 1st. The 8th place, @Asaoix, participated in round 763 and get 6th. And so on....

These newbies, I called, are fake newbies. Because they are not newbie level, they are far more than that. Some of the newbie users are even red level, they have low rating only because they are new users and only take a few contest, and the rating cannot accurately measure their level.

Besides, you will not get your performance rating in the contest, if you get rank 1, your new rating will not be rank 1 rating, you new rank will based on your previous rating and this contest performance. If you have 1400 rating, and your performance is 2600 in a contest, you will get probably one third of the difference, say 1800. But if you are 2600 level, 1800 can still not measure your real ability. In general, you need to take at least 4 contests to have your rating consistent with your ability.

Why I mention this ? I am not making complaints. It's a good thing, since codeforces has been expanding from time to time, more and more talented programmers are joining in codeforces platform. They have already achieved well in other platforms, and codeforces should welcome them. The only thing I care is the rating calculation.

In each contest, you get rating based on how many users you defeat, and how many users defeat you, and what their ratings are. If you defeat a user that have high rating, your rating will increase, and if you are defeated by a low rating user, your rating will drop. The detailed rating calculation are listed here

Therefore, if you are defeated by these fake newbies, the rating system will say: "Hey, you are so suck. You are defeated by these newbies, your rating will not be good." Which is not true. You cannot make them unrated, it's unfair to them. And here is my suggestion, like div3 does:

Make a pool of trusted users for all contests(not only div3). Every rated users who participate more than 3 or 4 contests will be marked as trusted users. Everyone's rating will only be determined by these trusted users, and every users within the rating range will be rated whether it is trusted or not.

Another reason that so many fake newbies is that they are the alternative account of some high level user. It is discouraged, but it is very difficult to discover. Since many users, they have multiple accounts, and only use one account in the contest. By expanding the "trusted users" idea, they will have no influence to the low level users.

Full text and comments »

  • Vote: I like it
  • +174
  • Vote: I do not like it