djm03178's blog

By djm03178, 10 months ago, In English,

Currently, any successful hacks on any problem provide exactly 100 points. For problem A and B it seems quite reasonable, but I find it barely motivating to lock harder problems and try to hack (unless it's known that the pretests are exceptionally weak), since:

  • You risk losing a lot of points on system test. Even if you realize mistakes in your code after lock, you can't do anything.
  • There are (usually) not many solutions to look into in your room in the first place.
  • Harder problems (usually) require hard techniques and longer implementation, so reading each solution takes a lot of time.
  • Even if you successfully hack, 100 points don't affect your rank too much.

Rewarding more points for hacking solutions for harder problems would make the system more interesting and balanced. My suggestion is to reward 1/10 of the problem's score for successful hacks. i.e. 50 points for hacking a solution of a 500-point problem, and 200 points for hacking a 2000-point problem.

Here are some reasons for the suggestion:

  • Hacking solutions of a hard problem requires you to understand the hard problem itself, high-level logic behind the codes, and complicated implementations.
  • There are usually more pretests on harder problems, so the chance of passing all pretests on harder problems with a wrong solution is already low.
  • Currently hacks are mostly only for easier problems. If people would be motivated to lock harder problems too, that would make the use of hacks more balanced.
  • It may seem that 300 points for hacking one solution is too much. But this implies that the contestant has solved (or at least, passed pretests) a 3000-point problem. For example in Codeforces Round #509 (Div. 2), if you solved all problems and have 7700 points, you would be at rank 33. Even if you successfully hack a solution on F, you would be only at rank 25. On the other hand, if you solved problem A only and have 450 points, then you hack a solution on A, your rank will be: 4410 -> 4062.
  • For easier problems you usually read a lot of solutions written by people new to problem solving. Solutions for harder problems are mostly written by good coders and reading them itself helps you study as well.
  • It can be seen as an additional reward for passing pretests of a hard problem.

Of course, this is just my opinion and I know it has a lot of disadvantages as well, but I just want to share ideas and imagine how codeforces contests would be with a different hack system. Any other opinions are appreciated.

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

»
10 months ago, # |
  Vote: I like it +20 Vote: I do not like it

Agree on lowering score for hacking problem A. All other is not that important because, as you said, hacking C+ never happens.

»
10 months ago, # |
  Vote: I like it +8 Vote: I do not like it

I totally agree with you. But it will not be changed, because of democracy (solvers >> hackers). It's more expected to change only in the opposite direction...
VLamarca had posted similar suggestions in his post.

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

    I have some thoughts on KAN's reply on last comment of that post.

    • "My personal opinion is that it would make not-so-easy rules even harder" : I also agree that VLamarca's suggestion is a bit complicated (reducing scores for multiple hacks), but I don't think my suggestion doesn't make rules much complicated than it is now.
    • "a problem with a lot of stupid hacks is the fault of coordinator and authors, we should avoid this" : I take that as "trying to make strongest pretests possible." As I mentioned in my post, if pretests are not exceptionally weak, easier problems' pretests tend to be relatively weaker, because of less number of pretests and lack of the solvers' capability of writing safe code. This is one of the reasons why easier problems are easier to hack.

    Also that post was made 7 months ago and even if it's hard to change things immediately, I think it's worth keep discussing. Maybe we can get to a better conclusion?

»
10 months ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

I totally agree with your suggestion. And here is my another suggestion: Limiting a number of hacks in each problem for each contestant as 2 or 3. Without this limitation, hack system is too unpredictable and depend on luck.

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

    This is bad because you want to allow a solution which misses a corner case specific to their code.