Блог пользователя vovuh

Автор vovuh, история, 4 года назад, перевод, По-русски

<almost-copy-pasted-part>

Привет! В 14.05.2020 17:35 (Московское время) начнётся Codeforces Round 642 (Div. 3) — очередной Codeforces раунд для третьего дивизиона. В этом раунде будет 6 или 7 задач (или 8), которые подобраны по сложности так, чтобы составить интересное соревнование для участников с рейтингами до 1600. Однако все желающие, чей рейтинг 1600 и выше могут зарегистрироваться на раунд вне конкурса.

Раунд пройдет по правилам образовательных раундов. Таким образом, во время раунда задачи будут тестироваться на предварительных тестах, а после раунда будет 12-ти часовая фаза открытых взломов. Я постарался сделать приличные тесты — так же как и вы буду расстроен, если у многих попадают решения после окончания контеста.

Вам будет предложено 6 или 7 (или 8) задач и 2 часа на их решение.

Штраф за неверную попытку в этом раунде (и последующих Div. 3 раундах) будет равняться 10 минутам.

Напоминаем, что в таблицу официальных результатов попадут только достоверные участники третьего дивизиона. Как написано по ссылке — это вынужденная мера для борьбы с неспортивным поведением. Для квалификации в качестве достоверного участника третьего дивизиона надо:

  • принять участие не менее чем в двух рейтинговых раундах (и решить в каждом из них хотя бы одну задачу),
  • не иметь в рейтинге точку 1900 или выше.

Независимо от того являетесь вы достоверными участниками третьего дивизиона или нет, если ваш рейтинг менее 1600, то раунд для вас будет рейтинговым.

Спасибо MikeMirzayanov за платформы, помощь с идеями для задач и координацию моей работы. Спасибо моим очень хорошим друзьям Дарье nooinenoojno Степановой, Михаилу awoo Пикляеву, Максиму Neon Мещерякову и Ивану BledDest Андросову за помощь в подготовке и тестирование раунда. Также спасибо Артему Rox Плоткину и Дмитрию _overrated_ Умнову за обсуждение идей и тестирование раунда!

Удачи!

</almost-copy-pasted-part>

UPD: Спасибо ma_da_fa_ka, Jaydeep999997, abhishek_saini, infinitepro и socho за тестирование раунда!

UPD2: Разбор опубликован!

  • Проголосовать: нравится
  • +397
  • Проголосовать: не нравится

»
4 года назад, # |
Rev. 2   Проголосовать: нравится -76 Проголосовать: не нравится

......

»
4 года назад, # |
  Проголосовать: нравится -24 Проголосовать: не нравится

vovuh sent this announcement when the contest is going to begin in exactly 30 hours:)

»
4 года назад, # |
  Проголосовать: нравится -35 Проголосовать: не нравится
The key of good contests
»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Still getting used to contests, can someone explain/link me to how the points and penalty system works?

  • »
    »
    4 года назад, # ^ |
    Rev. 4   Проголосовать: нравится +15 Проголосовать: не нравится
    • every wrong submission:penalty(the time you use to solve ecah questions added together)+10.
    • the more penalty you get the worse rank you get.
    • the people solve more problems is always before the people solve less questions.
    • example:
    • User Penalty Solved Rank
    • A 100 3 4
    • B 50 3 3
    • C 200 4 1
    • D 500 4 2
    • 4<3,so C and D 's rank is before A and B 's.
    • 200<500,so C 's rank is before D 's.
    • 50<100,so B 's rank is before A 's.
    • This is ICPC mode,so no points but only penalty and the number of solved problems.
    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Got it, thank you so much. So just to clarify:

      • Solving a problem at the beginning of the contest, and at the end of the contest counts for the same (i.e. you don't get fewer points for late AC)
      • Person with more solved, more penalty has better rank than less solved, less penalty

      Are these two correct?

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится +2 Проголосовать: не нравится

        nope..time always matters..even if you solved late your time will count..and your rank will be less than the one who solved earlier the same problem. and person with more solve has highest rank..that is right.

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится +22 Проголосовать: не нравится

        You are ranked by number of solved problems. If these are same then by penalty. Penalty is sum of minutes of solved problems +10 for every wrong submission of a finally solved problem.

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится +2 Проголосовать: не нравится

        The participants are ranked by the number of problems they solved. However, if two participants solved the same number of problems, they are ranked by penalty (whoever has a lower penalty will be given a better rank).

        For each solved problem, the penalty is the time taken (in minutes) from the start of the contest to solve the problem, plus 10 times the number of incorrect submissions (some types of incorrect submission do not count).

        The total penalty is the penalties for each problem that you solved (Accepted) added up.

        Note: If you tried to solve a problem but none of your submissions were accepted, then the incorrect submissions for this problem will not count in the penalty.

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
            Проголосовать: нравится +3 Проголосовать: не нравится

          Thank you so much, appreciated.

          • »
            »
            »
            »
            »
            »
            4 года назад, # ^ |
              Проголосовать: нравится +17 Проголосовать: не нравится

            Also, let's say there are two problems A and B, and you can solve A in 1 min and B in 50 min. If you solve at first A, then B your penalty is 51. But if you solve B, then A, your penalty is twice as big = 101. which is not very logical.

            • »
              »
              »
              »
              »
              »
              »
              4 года назад, # ^ |
                Проголосовать: нравится +5 Проголосовать: не нравится

              Absolutely agreed ! I believe Google and Topcoder marking schemes are more logical..

            • »
              »
              »
              »
              »
              »
              »
              4 года назад, # ^ |
                Проголосовать: нравится +12 Проголосовать: не нравится

              Yeah your logic is correct to some extent but there is a motive behind keeping such penalties.Suppose the system is changed as per your thinking then people who are ranked higher and are supposed to do 3-4 problems to stop getting negative delta, will start solving the C/D problem first and if they are not able to get logic for the problem in less time, they might not submit anything and escape the negative delta.(no submission in a contest counts to non-participation).

              This type of penalty system almost ensures that contestants don't do that!(but still many contestants do C/D first.)

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      every wrong submission => penalty . this applies to the first submission too ??

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Good luck to all the participants. It's a really good opportunity to become an expert.

»
4 года назад, # |
  Проголосовать: нравится +29 Проголосовать: не нравится

Thank you CodeForces for increasing the contest frequency!!

»
4 года назад, # |
  Проголосовать: нравится +80 Проголосовать: не нравится

»
4 года назад, # |
Rev. 7   Проголосовать: нравится -28 Проголосовать: не нравится

This will be the only meme I've posted so far.

»
4 года назад, # |
  Проголосовать: нравится -23 Проголосовать: не нравится

I hope that this contest can have a wider range of questions. In the last round (Rd 641), I personally think that the problems are too math-based. I believe that a good contest should test contestants in different regions of programming, such as dp, constructive algorithms and etc. Hope this contest can be educational for div 3 programmers and being competitive at the same time!

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится

    That sounds good but lots of contests before have already had what you need. I think we should have more mathletic problems because we are having too few. (sorry for my poor English)

»
4 года назад, # |
  Проголосовать: нравится +37 Проголосовать: не нравится

I run out of memes

»
4 года назад, # |
  Проголосовать: нравится -16 Проголосовать: не нравится

lets hope that the questions don't emphasize on number theory in general a lot...

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +14 Проголосовать: не нравится

    TBH number theory is fun.

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится -11 Проголосовать: не нравится

      No all participants are computer science students. I study aerospace engineering. So I prefer simple math algorithms like euclids GCD, DFS. But not some special, not well known property of prime numbers or modular division. There should be seperate mathforces round.

»
4 года назад, # |
Rev. 3   Проголосовать: нравится +6 Проголосовать: не нравится

Thanks! for round. Hope it will help.

»
4 года назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

One Question .... what are things we should do in college to get a good placement.... Some people tell me that do CP...because at the time of Interview it helps lot....But i have one doubt..We also have to do projects ? or to do only CP..and improve it....And if we have to do projects what are the right time in a 4 year B.Tech course...to do projects.... Please answer this Question it helps me a lot..to prepare my strategy for further Two year... i'm in 2nd year now..... Thanks in advance//

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    You need two or three good projects on your resume so that interviewer have something to discuss with you in the interview.
    It also varies from company to company. Some companies judge you on the basis of your approach for solving cp problems and some will judge you on the basis of your work and understanding of the projects in your resume.
    But in the end to reach face to face interview rounds you have to clear initial coding rounds first. So cp is important for that part. If you can solve div2 ABC level question than clearing those initial coding round will be easy for you.

»
4 года назад, # |
Rev. 2   Проголосовать: нравится -11 Проголосовать: не нравится

Hopefully this will not happen to me again :(

»
4 года назад, # |
  Проголосовать: нравится +33 Проголосовать: не нравится

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Let's hope to rank up after latest Div2 round

»
4 года назад, # |
  Проголосовать: нравится -44 Проголосовать: не нравится

is it rated for unrated participants?

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I have a general doubt:

If there is an update in the problem statements and I am giving the contest in m1.codeforces.com, will I get the notification?

»
4 года назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится

»
4 года назад, # |
Rev. 2   Проголосовать: нравится +9 Проголосовать: не нравится

Wow! Next four days three CF contests and many more to come. Thanks CF.

»
4 года назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

Rounds in this time of selfisolation like a water in desert...

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Struggling a lot to become a specialist. I crossed 1380+ three times. but couldn't reach 1400. I hope this time, I will make it to the 1400 club.

»
4 года назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Long queues Mike, w@#k happened again ?

»
4 года назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Deleted

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится -11 Проголосовать: не нравится

    HP21 this comment will be more noticable by them if you tag them. I think you didn't tag them.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Why aren't contest hosted on weekends more often? I mean, some of us have no opportunity to compete from Monday to Friday, 'cause you know, we work on those days.

»
4 года назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Thank you Codeforces for increasing the contest frequency ^_^

»
4 года назад, # |
  Проголосовать: нравится +24 Проголосовать: не нравится

A say home stay safe.

»
4 года назад, # |
Rev. 6   Проголосовать: нравится -11 Проголосовать: не нравится

deleted

(I mean, why you guys downvote this? This is nothing so can't you just ignore it?

Anyway this was a crap meme and I decided to delete it...)

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I hope that problems will be based on Data structures.

»
4 года назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

Codeforces is surely the best platform to practise CP

»
4 года назад, # |
Rev. 4   Проголосовать: нравится -32 Проголосовать: не нравится

.

»
4 года назад, # |
  Проголосовать: нравится -7 Проголосовать: не нравится

Vovuh and Mike's Div3 never lets me down. Also I am lucky to never cross 1600 and participate in all their rounds.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can anyone explain the rating system or the link of previous discussion about rating system(latest) ?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    You are ranked by number of solved problems. If these are same then by penalty. Penalty is sum of minutes of solved problems +10 for every wrong submission of a finally solved problem. Copied from : spookywooky

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

How much is the importance of knowing algorithm for Div3 and which ones I should know?

»
4 года назад, # |
  Проголосовать: нравится -63 Проголосовать: не нравится

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
»
4 года назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

although I am in div2,usually I cann't fully solve div3. So why cann't I be rated in div3? Maybe we can drop 2 easy problems and append 2 harder problem to make div3 also rated for div2.

»
4 года назад, # |
  Проголосовать: нравится -24 Проголосовать: не нравится
Комментарий удален по причине нарушения правил Codeforces
  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +14 Проголосовать: не нравится

    If you have questions like this, ask the jury.

    It's forbidden to talk about these during the contest.

»
4 года назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

Beautiful problems and straightforward statements... thank you! Also, first time being able to solve E :)

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Can you give hint on $$$E$$$, I am out of ideas!

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Hint:we will use dynamic problem to solve this problem.

    • »
      »
      »
      4 года назад, # ^ |
      Rev. 5   Проголосовать: нравится +4 Проголосовать: не нравится

      Let's denote the input array by s[1...n].

      Let:

      dp[i][0 / 1] — be the minimum number of operations you need to perform in order to make the array s[1...i] k-periodic, considering that you let the i-th bit as it is (dp[i][0]) or that you've changed it (dp[i][1])

      cnt[i] — be the number of 1's in the array s[1...i]

      Let's talk about the case when s[i] = 0...

      If you don't change this bit, it won't affect the periodicity of the array s[1...i], so you can take the answer from the previous subproblem:

      dp[i][0] = min(dp[i - 1][0], dp[i - 1][1])
      

      If you change this bit, then you may have to make additional opperations to assure the k-periodicity property of your s[1...i] array.

      The first option is to turn off all the 1's from 0 to i - 1:

      dp[i][1] = 1 + cnt[i - 1] // 1 + because you change the i-th bit, as well
      

      The second option is to turn off all the 1's from i - k + 1 to i - 1 and continue building your answer based on the subproblem i - k, considering that s[i - k] = 1.

      In case s[i - k] = 1, then:

      dp[i][1] =  1 + dp[i - k][0] + cnt[i - 1] - cnt[i - k]
      

      In case s[i - k] = 0, you have to change that bit, as well:

      dp[i][1] =  1 + dp[i - k][1] + cnt[i - 1] - cnt[i - k]
      

      In the end, dp[i][1] is the minium beween cnt[i - 1] + 1 and one of the two last cases.

      Now, consider a similar strategy when s[i] = 1...

      In the end, the answer will be:

      min(dp[n][0], dp[n][1])
      
    • »
      »
      »
      4 года назад, # ^ |
      Rev. 3   Проголосовать: нравится +1 Проголосовать: не нравится

      I apoligize for the poor editing skills, I am not used to how editing comments works on this platform.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

What could be the test case 2 of problem-E?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    For sure it is a test case that takes into consideration the fact that sometimes you can stop at some character 1 in position i and just ignore the rest of the string. I took this case into consideration to pass the test case 2. But of course to do this you will have to "pay" a price which is the amount of character 1 after the position i.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

How to solve E ?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +18 Проголосовать: не нравится

    You can solve for each index mod k separately. Now replace '0' by -1 and '1' by +1. Find segment with max sum, can be done with Kadane algo.

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      @Len how did it strike you that we need to take maximum subarray sum? I almost spent an hour thinking about it. Could not write dp solution because I am not good at dp :(

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Is it going to be hackforces?

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Is there easier way to solve D beside divide and conquer?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Using Heap...Maintain max-heap for the length of segments simultaneously with min-heap with a lower index of the segment.

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      I did this but isn't there any solution without heap

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        You could put all the segment on a standard queue in right order. But this is surely more complecated than simply generate them, and then sort them.

»
4 года назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

How to solve F, thanks.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +15 Проголосовать: не нравится

    Notice that sum(n) <= 100, sum(m) <= 100 constraint. There will be at least one cell that is not changed. So if you fix that cell, you can determine what value (i, j) needs to be. The rest is n * m dp.

»
4 года назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Can D be solved using heap? I kept getting TLE on test case 2. Using a priority_queue<pair<int,int>> where the first element is the size of the segment and the second one the starting point (times -1 because of the order needed)

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Exactly I did this. Luckily it passed for me, have a look at my submission: link

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Thanks! Glad to know that. If you want to debug my code ^.^: link

      • »
        »
        »
        »
        4 года назад, # ^ |
        Rev. 5   Проголосовать: нравится 0 Проголосовать: не нравится

        Hey, you are popping the current pair from your Heap, after adding the two new segments(pairs) created! So, basically, your code won’t do, what you are intending to do. Just put the “Heap.pop()” line, above the two “Push” lines and a limit condition for adding the two new pairs, and your code will work perfectly! It is giving TLE, because the pop and push of pairs, isn’t in correct order, and hence, you are visiting the same segment(s) more than once, which won’t empty the queue, in any case, and then the loop will run infinitely! Also, you have to put up a condition to add the new pairs(segment(s)), that will be created, after replacing a “0” element with “i”. Else, your code will add two new pairs every time, and hence, your queue, will keep getting longer and longer!

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I have solved using a heap. You can see my code.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится

    You should pop before you push. Because pushing an element may change top of priority_queue which will result in poping unwanted elements.

    Secondly on each iteration you are pushing two elements and poping 1 element. So size is increasing. As a result your queue is not going to be empty in near future. You should apply some condition for push so that size doesn't get too large.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

What's the score distribution? Are all problems worth the same in div 3? Thanks!

»
4 года назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

What was the test case 2 in E ?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    check the default case like string with 1's count = 0 or 1

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +33 Проголосовать: не нравится

    Test 2 contains all binary strings of length from $$$1$$$ to $$$10$$$ with all possible values $$$k$$$.

»
4 года назад, # |
Rev. 4   Проголосовать: нравится +2 Проголосовать: не нравится

Was there a simpler approach to solve D which doesn't use priority-queues/multi-sets ?

»
4 года назад, # |
Rev. 2   Проголосовать: нравится +27 Проголосовать: не нравится

Nice round! Well written statements and interesting problems.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Hey guys, I'm new to this platform and this was my first contest. What does the "open hacking phase" mean and when do I find out if my rating increased?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Now you can see other peoples' solution. If you see an accepted solution will not work for a specific input then give that input and hack that solution.

    After hacking phase there will be system test. After that rating will change. You may need to wait about 14-15 hours for your rating change.

»
4 года назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Is this fair? @vovuh @MikeMirzayanov

Kindly ban this user who is using multiple handles and hacking one account using the other account-

mamun360 and 550mamun

https://codeforces.com/contest/1353/submission/80148191

https://codeforces.com/contest/1353/submission/80124724

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Hi guys can I ask about problem C?... I have problem working with big numbers in C++. I'm sure I have declared m, n, and sum to be long long or int64_t but eventually it cannot calculate the correct number to add to sum, and at the end the answer is wrong.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Code?

    • »
      »
      »
      4 года назад, # ^ |
      Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится
      #include <iostream>
      #include <string>
      
      using namespace std;
      
      int main() {
          int t;
          int64_t sum, temp, n, m;
          cin >> t;
          for (int i=0; i<t; i++) {
              sum = 0;
              cin >> n;
              m = n/2 + 1;
              for (int j=1; j<=n-m; j++) {
                  temp = (int64_t) (j*j*2*4);
                  sum += temp;
              }
              cout << sum << endl;
          }
          return 0;
      }
      

      Previously I simply add the new value to sum but as I see it didn't work out I used a temporary variable to hold the value and unfortunately it is still not working

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится

        I think that this value j*j*2*4 may overflow before the casting. Try to do ((int64_t)j)*j*2*4

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          lol no shit how could it be like this it worked man. i don't know yet why and how but thank you for this i'll try to understand

          • »
            »
            »
            »
            »
            »
            4 года назад, # ^ |
              Проголосовать: нравится +1 Проголосовать: не нравится

            When C++ is evaluating an arithmetic expression it holds temporary values on variables of the biggest type involved in the expression. In this case the biggest type is int.

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится

        Notice how you cast into an int64_t AFTER you do the operation. However, since all j, 2, and 4 are integer values, the value inside the parentheses will overflow.

        Try temp = (int64_t)((int64_t)j*(int64_t)j*(int64_t)2*(int64_t)4); and it should work (this is very explicit, the following also works (int64_t)j*j*2*4).

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Thank you guys this is phenomenal this will help me overcome a shit load of other prroblems. I've always been shaking my head when I see a casting problem, and having to deal with big numbers in C++. I will forever remember this.

  • »
    »
    4 года назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    The biggest value that can be generated by some input is 125000000000000000 ( actually this value is a little bigger than the biggest value that can be generated by some input ) which fits into a long long int variable.

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      I'm fully aware of this but for some reason the result for the last pretest input is 6229295798864 and not 41664916690999888

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can anyone help me understand why this code is throwing runtime error. https://codeforces.com/contest/1353/submission/80152681

»
4 года назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Hello, good time MikeMirzayanov in this submission look like guy who hacked it create 2nd account for it and submit an code that have a bug for hack it with him/his 1st account submission: https://codeforces.com/contest/1353/submission/80164801 bug is this part: if(n==165) { cout<<n<<"\n";

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Has anyone solved D using recursion? I tried but got WA. Any help would be appreciated, because that's the first thought that came to my mind after spending sometime on the problem.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Yes, I used a recursive approach to solve the problem. However, instead of using the built in computer stack, I used a priority queue.

    See my AC submission for more details.80164051

»
4 года назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

My solution for problem F is essentially O(N^2 * M^2), and unsurprisingly it is slow (but it runs within the time limit luckily). Is this the intended time complexity, or is there a solution which runs in O(N*M*(N+M))?

Here is my code, 80169304.

  • »
    »
    4 года назад, # ^ |
    Rev. 4   Проголосовать: нравится +13 Проголосовать: не нравится

    Lol. At least it got an AC.
    80141105 was the only soln is python which got accepted in the contest.
    Only one soln in python is accepted so far 80171692 credits pajenegod.

    TL;DR; vovuh Just don't enforce long ints in div3 just for the sake of it.

    Yet another rant about python.
    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится

      Don't you think that I set such constraints for safety? I don't know if there are some $$$n^2\sqrt{a}$$$ solutions which can get accepted, but even with $$$a_{i, j} \le 10^9$$$ the answer doesn't fit int32. So I could make $$$a_{i, j}$$$ up to $$$10^7$$$ or maybe even less, and what then? Maybe with this constraints there are $$$n^2 a$$$ solutions which can be good optimized? Do you know? I don't. But they can be.

      It is not a surprising fact that the last problem of Div3 is something like Div2C-Div2D. And anybody knows that Python's speed sucks. And anybody knows that C++ is the fastest language and some problems are just not for Python. I know that this is Div3 but if the participant can solve the last problem then he need to understand that the solution written on Python or PHP or Ruby or other slow languages could not be accepted.

      • »
        »
        »
        »
        4 года назад, # ^ |
        Rev. 4   Проголосовать: нравится +18 Проголосовать: не нравится

        Here is how it works with PyPy. 32 bit PyPy (which is what codeforces uses) is able to work efficiently with small integers (corresponding to C long) and with floats (corresponding to C double). So normally when I need performance for say a n = 1e6, A[i] <= 1e9 problem, I can just use floats (which have integral precision <= 2^52 approx 4.5e15). So in the case of today's F, had max been 1e13 instead of 1e15, I would have had a much easier time.

        In general I get that there are problems where it makes sense to involve large integers. However this problem is one where I don't really see the point of making A[i] <= 1e15. Just the usual 1e9 would have worked just as well.

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
            Проголосовать: нравится +3 Проголосовать: не нравится

          Well, I already said that we don't know if there are some non-intended solutions which can get accepted if $$$a_{i, j}$$$ could be up to $$$10^9$$$. Moreover, I didn't know anything about PyPy background so I couldn't imagine that something like $$$10^{13}$$$ will be better than $$$10^{15}$$$ in this problem. I said that I set such constraints to make the answer fits in int64 datatype (even more, make the answer significantly less than $$$10^{18}$$$ because a lot of users uses $$$10^{18}$$$ as 64-bit infinity) and cut off all possible bad solutions.

          Also, my point about using faster languages for hard problems, remains. I checked a bit of your submissions and see that some of them are tightly fits the time limit so I think you knew that PyPy can be very slow in some cases. I agree that I could make the constraints better but, from my point of view, I didn't see significant reasons to do that.

          This is also my bad that I didn't write the Python solution and I'm sorry that I didn't do that and didn't check how it fits. Anyway, I cannot do anything with it right now.

          • »
            »
            »
            »
            »
            »
            4 года назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            I cannot do anything with it right now.

            We know just wanted to point it out for future div3s.

            I checked a bit of your submissions and see that some of them are tightly fits the time limit

            Those are someone else's submission. He asked him why he got TLE on that and how to improve it. Pypy3's IO is slow same soln written in Pypy2 will run fast. His in contest soln takes Time Limit/2 except for this F.

            On a side note, he knows Python is slow but he also knows a lot of cancers in python.

            • »
              »
              »
              »
              »
              »
              »
              4 года назад, # ^ |
                Проголосовать: нравится +12 Проголосовать: не нравится

              As you can see, my previous reply was to pajenegod so I talked about his submissions.

              The last thing I want to say in that discussion is: I hope nobody forgets that the competitive programming is about efficienty. And slow languages are completely don't about it. Don't you think that we need to learn newcomers that cp problems need to be solved efficiently? If we don't do that there, then after reaching div2 they'll stuck on anything because any algorithm or data structure in such languages is about 10 times slower than in Java or C++. I think it's better for them to understand that slow languages are not good for solving hard problems as soon as possible. Moreover, 5 out of 6 problems were python-friendly, so I don't know what else to ssy. My point of view is just different.

              • »
                »
                »
                »
                »
                »
                »
                »
                4 года назад, # ^ |
                Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

                Just to clear confusion here. You misunderstood my last comment.
                I was talking about pajenegod's submissions which you said were slow. Pajenegod's in contest submissions takes less than TL/2.
                Someone wrote that slower code and asked pajenegod in AC discord server for help. He submitted that code.

                Anyways let's stop this debate here. It can go long. Its completely upon you how many problems you want beginners to solve. I completely agree that one should choose the best tools. We just wanted to point it out because next time we may have a similar problem with easier problems. These days you try a lot to make easier problems slow languages friendly (Thanks :) ). If one looks at recent div3's he can clearly see are a trend that constraints of easier problems are set in such a way that slow input-output languages don't get TLE.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I am trying to learn C++ as I usually use Java. I had a question regarding DP problems in C++. Often, a vector cannot be used in recursion, so is an array preferred? I was thinking one way to still use a vector is to give an initialize max size so we can treat the vector as an array and access indices but is initializing a vector with a specific size really slow (I used a vector with 10E6 size and TLEd)?

Furthermore, if I do use an array, how can I initialize all elements to a value as fill_n(begin(dp), size, INF) gave a run-time error.

Thanks!

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Why a vector "cannot be used in recursion"? Or asked other way: What can you do with an array what you cannot with an vector?

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can someone please provide the solution of Q4 i.e D: Constructing the array in python or probably pypy3?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Using Heap...Maintain max-heap for the length of segments simultaneously with min-heap with a lower index of the segment. Code

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится

      it was very helpful thanks

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      hey i have not submitted the code yet but can this solution be acceptable ,i have done this after seeing the editorial but i am not sure it will be accepted or give TLE I will also submit the code once system testing is done code is here

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Hey, I'm new here. It was my first contest. I solved A, B and C. Curious to know when will my ratings be updated. It's still not showing anything on my "Contests" page.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Be patient, it takes some time.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Div.3 contests have an open hacking phase (12 hours) followed by a system testing for all submissions. The ratings will be updated once the system testing is over. It may take some time, however, even after system testing is finished. Welcome to CF!

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

MikeMirzayanov ,Sir I am really sorry for the miskate which I did in last round Div3( round#642). I already logged in my old account and I submitted 4 problems then suddenly I realized that this is not my current and permanent account then I resubmitted all the 4 previous problem + one more problem E in my current account not in old ones. Sir please look at this situation. Both are my own account and It didn't happen intentionally. please don't skip my solution all solutions are my own. I promise that it will not happen again in future.

»
4 года назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Why did my rating fall ? It was supposed to be increasing by +16 according to cf rating predictor ? Can anyone tell me the reason ? Thanks in advance .MikeMirzayanov

»
4 года назад, # |
Rev. 6   Проголосовать: нравится +101 Проголосовать: не нравится

vovuh MikeMirzayanov
I made 25 MLE hacks using pajenegod's test case which TLEed my soln 80141105 . I see ratings got updated but I can't find that test case in system tests (same soln passes 80201283).

Since ratings are updated and only 3 test cases were added in system tests.
Question 1. Is there a system testing phase in Div3? Or if nobody hacked you mean your soln is an AC.
Question 2. If there is one then why was this hack ignored?

26 solutions were hacked using this test case among 127 successful hacks in the round (more than 20%). Shouldn't this be a sufficient reason to blindly add this hack in system tests?

Brief description about the hack
»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Does anyone know why this unusual time?

»
4 года назад, # |
Rev. 5   Проголосовать: нравится 0 Проголосовать: не нравится

contest was bullshit=))))