galen_colin's blog

By galen_colin, 4 years ago, In English

Since the two failures of the contests last weekend, a lot of people have expressed that they want to help Codeforces in some way, but there isn't much many of us can actually do about the system. At the same time, there have also been a lot of (reasonable) requests for a testing round before round 656. So let's put those two together. Why don't we set some potential testing rounds? Maybe they should be rated, maybe they shouldn't, but in any case, they should be interesting enough to draw in participants like normal rounds do. It's probably not a good idea to "sacrifice" rounds not rated for Div. 1, as some have suggested, because that still wastes the efforts of the setters. So what I'm suggesting is that we prepare rounds with the specific intent of them being testing rounds.

Some advantages of this system:

  • If these rounds are unrated, there's much less pressure for original/novel problems (and probably fewer problems will be rejected), so more of these rounds will be able to be prepared
  • On this same point, it's a great entry point for new problemsetters: rounds are easier to prepare and there will likely be fewer participants (meaning it's easier to manage during the contest)
  • It reduces pressure on MikeMirzayanov and the Codeforces team
  • You get more problems to solve!

Some potential disadvantages:

  • If problems are of lower quality, then they might pollute CF! But there's a simple solution to this: if this becomes an issue, just don't add the problems to "Problemset"
  • People would be preparing rounds with a larger chance of the whole round failing! While this is true, these rounds support CF in a different way: they test its infrastructure. And it's not like the whole round is wasted if something goes wrong — after all, that's what we possibly expect from a testing round.

I think it would help, and some testing round would especially be necessary before round 656. So... I'm not one to just throw around words. I have a few problems of my own prepared (not the most "novel", but they should be somewhat educational — I tried to include some common topics, as people have been wanting lately), and am willing to offer them to a testing round. I'll probably host it in the gym, unless it becomes an "official" testing round, and I've adjusted the constraints/time limits to take longer per test case to better simulate the judge pressure of an actual round, since there will likely be fewer people.

Tentatively (it's still in the testing phase, so things may change), there will be 5 problems and the round will last 2 hours. Expect the difficulty to be around Div. 3, maybe somewhat easier. When it's ready, I'll post it in the gym.

I think a good time to schedule it would be around a day before the upcoming round 656, perhaps at the time that Monogon's round was to be held before it was rescheduled. So for now, it will be held at this time (later changed to 1 hour earlier — ignore this link).

What do you think about this?

UPD: you can now view the contest in the gym. Registration opens 6 hours before it starts, which I don't think I have control over. It will start at Jul/16/2020 16:35 (Moscow time), which is 1 hour earlier than it was initially set to.

Thanks to 12tqian, meiron03, and Kaunta for testing. A special thanks to 12tqian for letting me theme the problems around him. And, of course, thanks to MikeMirzayanov for the awesome Polygon, the even more awesome Codeforces, and the platform issues so that this round can be possible :P

UPD 2: the scoring distribution is $$$(1 + 1) - 1 - 1 - 1 - 1$$$ (it's ICPC mode lol)

A is split into subtasks. A1 has a time limit of 15 seconds (maximum setting) with 20 tests, and I highly encourage submitting slow solutions that get close to TL. The rest of the problems have relatively normal constraints. If more people register than I expect, I'll lower these numbers.

If you really want to put load on the queue, you can stall your program until it gets close to 15 seconds. An example of this in C++:

code

Other languages have stuff like this too, you can check the documentation for it.

UPD 3: Editorial is out. I hope you enjoyed the round! It seems like there were way too few participants for it to be effective, though. I hope the div. 3 tomorrow goes well.

Congrats to the winners!

$$$~$$$ 1. Geothermal
$$$~$$$ 2. Fanurie
$$$~$$$ 3. CV_Hasan_Fan
$$$~$$$ 3. NotGivingUp
$$$~$$$ 5. idk3910

And an honorable mention to h2o_ and erekle for full-solving.

Announcement of Testing Round #XVII
  • Vote: I like it
  • +257
  • Vote: I do not like it

| Write comment?
»
4 years ago, # |
  Vote: I like it +26 Vote: I do not like it

I see no downsides to this :)

»
4 years ago, # |
  Vote: I like it +48 Vote: I do not like it

All advantages you listed are just advantages of making a GYM contest. Such contests are fine but making them official would require some care from CF coordinators and that's contradictory with "not putting pressure on them".

I think that the load won't be smaller if you just take a few old easy problems instead of making new ones.

  • »
    »
    4 years ago, # ^ |
      Vote: I like it +10 Vote: I do not like it

    Yeah, GYM contests are fine, but the issue is that they get less attention, and testing rounds need a lot of competitors to work. Even if we were to recycle some easy problems, it would still probably be a good idea to re-prepare them with constraints better suited for testing. For example, in the last testing round, the "A + B" problem seems almost useless for testing. Maybe there will be many submissions, but there's very little pressure being put on the queue. Recycling old problems is a good idea, but it still won't be a freebie for the CF team and it would be better for some of us to do it.

    I'm not experienced with this, but what pressure does making a contest official put on the coordinators? It seems like, with this setup, it would barely take any effort from coordinators if everything's already set up on Polygon. It wouldn't even exactly be an "official" round: it would be unrated and labeled as a testing round.

    Also, part of the point of making this blog was just to make something happen. It's definitely a good idea to host a testing round before the next contest and many people were asking about it, but I didn't see any official statement about it (last time there was a contest issue this bad, after round 639, Mike immediately said there would be a testing round in a blog).

    • »
      »
      »
      4 years ago, # ^ |
        Vote: I like it +5 Vote: I do not like it

      and testing rounds need a lot of competitors to work

      Which is contradicted by making them unrated.

      • »
        »
        »
        »
        4 years ago, # ^ |
          Vote: I like it +8 Vote: I do not like it

        If they're rated, there's a much higher standard of quality. Likely, the same amount of effort would go into the round as a normal rated round from both setters and coordinators, and if the round fails, it would be the same amount of wasted effort and disappointment as a normal round failing.

        The last testing round had 4695 participants, while the last div. 3 had a bit more than 18000. With well-designed easy problems (my A has a 15 second TL), we can simulate the load on a normal contest's queue with that many participants. Maybe it won't be a perfect load test for the server, but it's definitely at least a strong one. That being said though, the testing rounds do need attention (featured in "top", on the main page, or something), otherwise they won't do anything.

        I ask this with no hostility: do you have a better idea, one that has a better tradeoff between potential disappointment and the efficacy of the test? Or is there something else about rated testing rounds that I'm missing?

»
4 years ago, # |
  Vote: I like it +11 Vote: I do not like it

It would have been a nice div — 3 round. Thank you for the contest.

»
4 years ago, # |
Rev. 2   Vote: I like it +9 Vote: I do not like it

Nice problems. They might be "standard", but at least to me, C — E here are more interesting than the usual problems B — D in div 2.

»
4 years ago, # |
  Vote: I like it +9 Vote: I do not like it

Thanks for the effort put forth by you galen_colin sir and other testers too! It was a good testing round.

»
4 years ago, # |
  Vote: I like it +11 Vote: I do not like it

Although it didn't simulate a contest situation very effectively due to the number of competitors, the contest was great fun! Thanks to galen_colin and all the testers.

  • »
    »
    4 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Can you please explain me how i can do A1 and A2 with dp approach??? my code:https://ideone.com/fs8gvn But it is getting WA.

    • »
      »
      »
      4 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      I don't think DP works for this problem.

      I can understand why you may be tempted to try DP. At first it seems possible to move from dp[m] to dp[p*m] — or something like that. But at a second glance it looks impractical.

      If you are interested in a non-DP solution, you can check the editorial. Here is my code too: 86993173.

      • »
        »
        »
        »
        4 years ago, # ^ |
          Vote: I like it +11 Vote: I do not like it

        Just a heads up, below-CM can't view gym submissions.

        • »
          »
          »
          »
          »
          4 years ago, # ^ |
            Vote: I like it +8 Vote: I do not like it

          I don't think it works like that. I also can't see the solution. This is mp in control of the creator. It is like this in mashups.

          • »
            »
            »
            »
            »
            »
            4 years ago, # ^ |
              Vote: I like it +16 Vote: I do not like it

            I don't have control over it, the setting is forced to be visible to only those who solved it. But if you enable coach mode in the gym tab (I don't know the requirements for it, but some combination of high rating/number of contests), you can see everything.