SHZhang's blog

By SHZhang, 6 months ago, In English

UPDATE 3: There was a typo in the registration link that led to the pre-registration form. If you filled that out, please fill out our actual registration form. Note that with the contest within 24 hours, we cannot guarantee we review all applications in time. Please submit ASAP if you would like to be considered. Apologies for the inconvenience.

UPDATE 2: The contest is in less than a week! Note that we changed the venue from the MIT Media Lab to Huntington Hall (10-250). There will be thousands of dollars in cash prizes and also exclusive merchandise!

The schedule for contest day is below. We are excited to see everyone!

  • 8 AM — 9 AM: Contestants check-in + breakfast
  • 9 AM — 10 AM: Opening Ceremony + Last minute team formation
  • 10 AM — 10:30 AM: Buffer time as teams are guided to different classrooms.
  • 10:30 AM — 1 PM: The first combined round
  • 1 PM — 2:30 PM: Lunch break + Round one Discussion
  • 2:30 PM — 5 PM: Beginner division round + Advanced division round
  • 5 PM — 8 PM: Mini-activities + Food!
  • 8 PM — 9 PM: Closing ceremony + Announcing Winners + Solutions Review

UPDATE: The contest date and location have been finalized and registration is now open! Find more details on our latest blog post. You can also gain more insights into the inner workings of M(IT)^2 through our Blog!

Please join our Discord server here!

Hello Codeforces!

We (codetiger927, czhang2718, duality, keta_tsimakuridze, kingofpineapples, Olympia, rqi, SHZhang, SuperJ6, Tlatoani), current students at MIT, are excited to announce that we are running a new programming competition — the MIT Informatics Tournament, aka M(IT)^2!

The contest, which is scheduled for January 20th, 2024, will be a full-day event with a hybrid format: an in-person competition at the MIT Media Lab, and an online division held at the same time. Participants form teams of up to three people. Participation is open to everyone, regardless of age!

There will be two rounds, each 2.5 hours long with 6 problems. The first round will have the same problems for everyone, while the second round will be split into Beginner and Advanced divisions, and you do not have to choose which division to participate in until the first round is complete. See the logistics page for more details.

We expect a difficulty distribution roughly ranging from Div. 2 A to Div. 1 E.

For more information, check out our website, and registration is now open on a first-come-first-serve basis!

Full text and comments »

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

By SHZhang, history, 3 years ago, In English

Today I received this incredibly offensive talk message from an unrated account (also with an offensive username), which attacks me based on my national origin:

I strongly suspect that I am not the only Codeforces user receiving such messages recently (I don't think I am particularly notable in any aspect as a Codeforces user, and I cannot think of a reason why I might be specifically targeted); if you received similar messages, let me know in the comments.

I am aware of the "block user" feature and the ability to require a minimum rating for users to send messages to you, but it is not very well-known and is simply insufficient.

Update: after receiving the message, I set a "at least newbie" setting for users to send talk messages to me. However, two unrated users still managed to message me after the blog post was created. This seems to be a Codeforces bug.

I therefore request that unrated users be prohibited from sending talk messages. We should also probably consider the idea of adding a filter of some sort for profanity.

Full text and comments »

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

By SHZhang, history, 3 years ago, In English

In one key step of solving AtCoder Grand Contest 051, Problem E, one must solve the following subproblem (see the editorial for more information):

Given $$$n$$$ vectors $$$P_1, P_2, \cdots, P_n$$$, whose x- and y-components are integers, the set of vectors that can be expressed as $$$\Sigma w_iP_i$$$, where $$$w_i$$$ are arbitrary integers, can be expressed as {$$$mA + nB \mid m, n \in \mathbb{Z} $$$} (I understand why this is true), where $$$A$$$ and $$$B$$$ are some vectors. Find $$$A$$$ and $$$B$$$.

The editorial states that the problem can be solved using a "gcd-like algorithm", but I am struggling to figure out what the algorithm actually is. Can someone provide more details? This appears to be an interesting problem that can be useful for solving other problems as well.

Full text and comments »

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

By SHZhang, history, 4 years ago, In English

This weekend, there were two contests in a row which became unrated due to technical issues; one because of long queue and one because of server returning 500/502/504 all the time. While I do not understand the technical details, I am pretty sure that these two failures are related to each other.

Similar incidents have happened before; for example, just before Codeforces Round 639 (Div. 2) took place, a technical issue was suspected, and the round was rescheduled because of this. However, no one made sure that the issue was actually fixed, and when the contest did actually take place, it was ruined by long queue. In both of these cases, there were known technical issues before the contest started, but the contest took place anyway.

I propose that whenever there is a good reason to believe that a round is likely to be affected by a technical problem (such as after a contest becomes unrated due to queue/server problems, which is reason to believe that the next contest will likely face the same problem), a testing round must occur before the actual round takes place.

Maybe we can also have regularly scheduled testing rounds (such as once every week). These rounds can be hidden from the contest list or deleted entirely after they end, to reduce clutter.

Full text and comments »

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

By SHZhang, history, 4 years ago, In English

This weekend, I lost 115 rating in Codeforces Global Round 9, ranking 3024 and only solving problems A, B, and D (and not quickly). However, only a day after the contest, I have already upsolved C, E, G, and even H (unfortunately, not F), without much outside help.

The main reason I failed so badly was because after solving B (deciding to skip A), I got stuck on C. After making a WA submission, I started to panic, severely affecting my performance. I was freaking out, and started to try more approaches (3 more, in fact), all of which also got WA, contributing further to my panic. After a while, I decided to go back to A, and solved it (through I made it too complicated and took too much time, for someone at my skill level). I was also simultaneously working on D (often switching back and forth between C and D), and I was also stuck for quite a while.

I ended up solving D, but again taking way more time than I should due to my emotional state. By the time this happened, there were around 50 minutes left. I then started working on E (sometimes switching to C), but could not solve either of them during the contest. I looked at some other problems briefly, but did not seriously think about them due to my assumption that they will be too hard (which turned out to be false, especially with G).

After the contest, it turned out that I read problem C incorrectly (missing the fact that the two chosen elements must be consecutive). I did not look at the statement carefully during the contest, again because of the panic.

As I calmed down, I upsolved many problems from the contest.

A day later, I competed in AtCoder Beginner Contest 173, which is supposed to be easy for me. However, I ended up solving only 4 out of 6. The reason was similar; getting stuck on an easy problem, causing a panic which I did not recover from. After solving A-D, I wrote a lengthy solution to E using logarithms which got WA on a single test case due to precision issues (turns out, the code gets AC when double is changed to long double). I started to panic again, and tried approaches that do not use floating point, but taking way more time than I should. The new code was messy (because I was only trying to complete it as quickly as I could), and it keeps getting WA. I was not able to get it working before the contest ended. I opened F but did not think about it much, because I was focusing completely on E at the time (F turned out to be quite easy).

Does anyone have tips on staying calm when things do not go well during a contest (in other words, when one is unable to solve an easy problem)? Currently, for me, this is the main cause of large rating drops.

Full text and comments »

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

By SHZhang, history, 4 years ago, In English

After today's contest became unrated, I noticed that the contest announcement received a number of downvotes.

Monogon, the creator of the announcement blog and writer of today's problems, did nothing wrong at all. The reason the contest became unrated was because of technical issues within Codeforces.

However, by downvoting the contest announcement, one negatively affects Monogon's contribution and feelings.

I believe that not only should the announcement not be downvoted, but it should be upvoted because the author worked hard to create a good problemset! Even though the contest became unrated, (in my opinion) the problems are still high-quality.

Full text and comments »

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

By SHZhang, history, 4 years ago, In English

Currently, when I click on the link "Cities" or "Organizations" (to the right of "Countries"), I get this screen:

Sometimes the screen appears in Russian instead of English, even if I normally use English on Codeforces.

Do other people have the same problem?

Full text and comments »

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

By SHZhang, history, 5 years ago, In English

After the DDoS attack ended, while Codeforces is accessible again, 502 Bad Gateway errors frequently appear while trying to do so. Refreshing the page for a few times solves the problem temporarily.

Anyone having the same problem? Any explanation of why this happens?

Full text and comments »

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