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

Автор EJIC_B_KEDAX, история, 11 месяцев назад, По-русски

Привет, Codeforces!

Во 20.06.2023 17:35 (Московское время) начнётся Codeforces Round 881 (Div. 3).

В этом раунде будет 7 задач, которые подобраны по сложности так, чтобы составить интересное соревнование для участников с рейтингами до 1600. Однако все желающие, чей рейтинг 1600 и выше могут зарегистрироваться на раунд вне конкурса.

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

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

Штраф за неверную попытку в этом раунде будет равняться 10 минутам.

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

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

  • не иметь в рейтинге точку 1900 или выше.

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

Задачи были придуманы и написаны: zwezdinv, EJIC_B_KEDAX, molney, Sokol080808, meowcneil, Vladosiya.

Также большое спасибо:

  1. Vladosiya за координацию нашей работы.

  2. MikeMirzayanov за системы Polygon и Codeforces и тестирование раунда.

  3. tute7627 за красно-чёрное тестирование раунда.

  4. ace5, sevlll777, oursaco, lightseba, gmusya, pavlekn, vrintle, tolbi за жёлтое тестирование раунда.

  5. diskoteka, moonpie24, SashaT9, shell_wataru, MGod, Phantom_Performer, tarattata1, alex.kudryashov, Restricted, sdyakonov за фиолетовое тестирование раунда.

  6. Alex239, MrEssiorx, olyazyryanova, marzipan, Pa_sha, Rudro25, azureglow, IHateGeometry, ivan.alexeev, krigare за синее тестирование раунда.

  7. Guevara74, ctraxxd за бирюзовое тестирование раунда.

  8. sahal, exhausted, viteli, prohamer80 за зелёное тестирование раунда.

Всем удачи!

UPD: Разбор.

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

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

As an author, I recommend you to participate in it.

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

wow !! Vladosiya is back :)

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

Hope so it would not be like the CF round 880

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

Wish this contest is not bad like Round 880.

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

As a tester, this round is bombastic.

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

As a tester,

I tasted some apples I tested some cool problems.

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

first unrate div3,GL&&HF for everyone:)

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

and one more thing,how can i become a tester

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

If you have time you should write this round! Because it give you a lot of rate if you are good in programming. Please like it!

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

As a Tester,

Spoiler
»
11 месяцев назад, # |
  Проголосовать: нравится +16 Проголосовать: не нравится

As a tester, you must participate! Problems are interesting!

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

hope to became pupil

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

Waiting for this round. Best of luck everyone

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

As a participant, I hope to become yellow one day.

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

Div 2?????!

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

    I thought I was misremembering/misreading things! Sat down to write the Div. 2 -> It's a Div. 3 -> Wrote it anyway -> NO REGRETS, GREAT ROUND.

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

As a tester, blablabla...

ahmet23 orz!..

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

I think there is a mistake in the typo, it should be Codeforces, not Codefoces, missing a "r" letter

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

As a friend of the tester, I don't know good this round, or not

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

As a tester, I recommend you to take the contest :)

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

Wish this isn't bad as 880 ;-;

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

As a Participant looking forward for a good round.

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

As a blue tester, I may say that I am a blue tester.

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

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

hope the problems are well balanced

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

Best of luck to everyone .

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

I hope can solve four or five problems

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

hope to get CM today! :D

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

As a non-tester I will test this round during contest.

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

I'll test this round at 20:05 :-)

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

Grey Tester missing !!

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

omg a div 3, I'm so glad!

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

i need to esceb from newbi rank

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

As a participant, I hope to become blue one day.

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

Can I become expert today?

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

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

Unfortunately, no gray testing!

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

It's a good one, nothing like 880 :)

»
11 месяцев назад, # |
  Проголосовать: нравится -9 Проголосовать: не нравится

is this a div4 round?

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

contest of trees

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

E and F are really good problems.

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

    How to solve E?

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

      binary search on the answer

      once one of the arrays is beautiful it will remain beautiful, so we can use binary search. to check the condition after some number of changes, build the array and check the segments with prefix sums.

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

      I used binary search to search whether I can get a beautiful array using the first m queries. Inside the binary search you can just maintain a prefix sum with the first m queries each time to calculate the number of 1's in a segment quickly, so you can know if there is a beautiful array if pre[r] — pre[l — 1] > (r — l + 1) / 2.

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

      E can be solved by binary search.Initialize lower and upper bound of binary search as 1 and q and find whether for a given 'id' is there any beautiful segment.Since each query element is between [1-n],store value of queries [1-q] in some data structure and check for each segment whether there are more than half the length of values present.

      Here's my submission- 210424751

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

    How to do E?

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

      I solved it with binary search. For each iteration, maintain an ordered set of all the queries already processed. Then iterate over each segment and check how many numbers are processed using order_of_key. You can now check whether any of the segments contain more ones than zeroes. You don't have to use ordered set, but it was the first implementation that came to my mind.

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

    yes you are correct, I was able to solve F1 but couldn't solve E

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

Long Long anyone ?

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

friendly contest (●'◡'●)

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

friendly contest!!!!!!

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

Почему неправильный ответ 2 в задаче F1 считается как неверная посылка и влияет на штраф, если второй тест — семпл?

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

    В следующий раз (если он будет), постараемся сделать примеры в одном семпле

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

Can someone tell me why my solution for D gave wrong answer for testcase 4

`

def solve(num, graph, diction): if len(graph[num])==0: diction[num]= 1 return 1 if num in diction: return diction[num] ans=0 for item in graph[num]: ans+= solve(item, graph, diction)

diction[num]= ans
return ans

for _ in range(int(input())):

n= int(input())
# a, b, c, k= map(int, input().split())
# arr= list(map(int, input().split()))
# arr2= list(map(int, input().split()))
# a, b, c, k= arr[0], arr[1], arr[2], arr[3]
graph = [[] for i in range(n+1)]

for i in range(n-1):
    a, b = map(int, input().split())
    graph[min(a, b)].append(max(a, b))
    # graph[b].append(a)

diction = {}
# ans= solve(1, graph, diction)
# print(graph, diction)
q= int(input())
for i in range(q):
    a, b = map(int, input().split())
    ansa= solve(a, graph, diction)
    ansb= solve(b, graph, diction)
    print(ansa*ansb)
# print(diction)

`

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

    1 4 1 3 3 2 4 3 3 1 1 3 3 2 2 Check this test case

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

      Did you mean this?

      1
      4
      1 4 
      1 3 
      3 2
      4
      3 3
      1 1
      3 3
      2 2
      

      Result:

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

        Same problem for me, wrong ans for test case 4. And I'm getting the same result at you (1 4 1 1) for the above test case. Did you find a solution for it yet?

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

          Yes i got the solution. I thought of this but for some reason i did not implement it during contest. I initially used the same logic as yours but it wont work. In the question is states If a vertex u has a child, the apple moves to it (if there are several such vertices, the apple can move to any of them).

          It wont follow the linear order.

          For example:

                                           1
                                     2           6
                                 3                   7
                              4      5 
          

          In this example there are three leaf nodes, 4, 5 and 7

          if an assumption is at (4, 2), the pairs can be: (4, 4), (4, 5), (4, 7)

          From 2, it can go to any node, so it went 1 -> 6 -> 7. and also 3 -> 4 and 3 -> 5

          This is what i wrote the code for.

          I had to use c++ because with python i got stack overflow and runtime error.

          Hope I am right on this one

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

        No, the problem is that you are assuming that for every edge, the parent is the one whose value is the lowest, but it isn't. So when you try to traverse the graph, it doesn't work as planned, because it's disconnected.

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

      Sorry for the bad test case, check this:

      1 
      4 
      1 4 
      4 2 
      4 3 
      2
      1 1 
      4 4
      

      The output must be: 4 4

      If we change the position of the node 4 with the node 2, it will give us the right answer:

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

        I kinda improvised from your previous testcase, and found the solution. THANKS! Feeling terrible for not implementing an easy logic

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

Finally a nice and easy contest after a string of hard ones

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

Although E is binary search, technically an easy sqrt solution exists in n^1.5 by processing queries n^0.5 at a time.

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

    can you explain this solution? Thanks

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

      Just like binary search, the solution is based on using prefix sums to check if any segment has been satisfied.But we use up n^0.5 queries at a time instead of checking prefix sums every query like brute force. If we see any segment satisifes after the current bacth of n^0.5 queries we can just check all those individually. Otherwise we skip and start with the next batch.

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

How would F2 be solved? Initially I thought it was continuing the idea of max/min subarray sum but on arbitrary paths, and that we could use binary lifting to find the LCA, then to find max subarray sum on path from u to v, take best of the three cases: u to LCA, v to LCA and some path that crosses the LCA. But didn't find a good way of doing it. Am I on the right track or is it something completely different?

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

    You are right! That's how I tackled this problem, at least. You just need to come up with ways to merge the binary lifting answers.

    Calculating the total sum, best (max/min) sum, best prefix sum and suffix sum on the path will certainly be useful.

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

      Ah, I see. I keep forgetting that binary lifting can be used to store information other than the 2^k-th ancestor.

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

for E should we use MKTHNUM — K-th Number question from spoj.

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

As a participant, I enjoyed this contest a lot, especially the F2 problem! :D

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

    please explain your solution for problem F.

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

      F2 (and F1):

      First of all, we pre-build the tree and answer all the "?" queries later.

      Let's note that, if we know the min and max values between all the subsegments on the path, then all other in-between values are reachable. For example, if there are subsegments with cost -5 and 7, then there always is at least one subsegment with cost 3. Why? Because when we add a new node to the path, the cost always changes by 1, there are no jumps. We can't get from 0 to 3 without going through 1 and 2 first, for instance.

      All we need to do is to calculate these min and max values quickly, and then it's a simple check that minn <= k <= maxx.

      Now, when faced with a "?" query, let's find the LCA (Least Common Ancestor) of u and v. Where can the min be? Well, it can just be somewhere on the first path (u -> LCA), or on the right one (LCA -> v). But perhaps it touches both, meaning it's the best suffix of (u -> LCA) + x[LCA] + the best prefix of (LCA -> v) (OR the suffix of (v -> LCA), since it's the same thing, just reversed).

      All we need to find these values is some binary lifting. For each up[v][power], you'll need to precalc the total sum on the segment, the best subsegment sum, best prefix and suffix sum.

      I hope this makes sense. :')

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

        Oh my God! I wrote HLD on it...

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

          That's one of the first things that came to my mind, too! Gladly, I didn't think about it too hard and came up with a different idea, instead. ...mainly because I'm inexperienced with HLD.

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

            Usually, if I find a solution, I implement it, even if it is a treap in Div.2 C

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

              Oh, absolutely. But just thinking "HLD, maaaaybe?" wasn't exactly enough for me to start writing the solution. :)

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

                I think it is a good problem to implement HLD. And you can also speed up it using Disjoint Sparse Table instead of Segment tree

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

                  For me, the HLD solution gave TLE's despite my best attempts to optimize it. I later switched to the sparse tables approach.

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

                  I tried to find mistake for a while. You should use links to vector arr in init_tree and dfs_labels. But even after adding links, the solution gets TLE.

                  May be you have a problem on multiple test cases — I don`t know.

                  My solution passed without any problems: 210446339

                  May be, you should remove vectors and structs to improve the constant of solution.

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

                  I was using galen colins template, havent written my own template ever .. perhaps I should try doing it.

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

        I have exactly the same idea, but i was unable to implement the solution..very sad

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

        Can you guys please provide me some practice problems where one has to keep multiple factors as attributes of a node and has to figure out ways to merge them in binary lifting and HLD ? I have solved such problems in segment tree but somehow I could not figure it out for this problem, or for example in another problem where you had to find the longest arithmetic progression in a weighted tree.

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

    Really? F2 is just 2 standard well known techniques mashuped together. What part was nice?

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

      I liked the implementation. Also it's a great introduction for binary lifting in my opinion.

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

        belongs as a cses task not a codeforces problem (and max subarray sum exists as cses problem too just not on tree)

        0 thinking (i took ~2mins to come up with the solution) and then lots of implementation (if you are doing from scratch like me, ~20mins), when the problem itself is standard. [i have 2nd solve on the problem btw]

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

          International master for a reason

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

            i'm sorry, i didn't mean for it to be a flex, i just do not like putting standard problems in cf rounds

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

Can anyone tell me why memory limit exceeded on this submission https://codeforces.com/contest/1843/submission/210459020

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

    this is a mult-testcase problem, you need to clear the memory for your graph, you keep adding without deleting. graph[a].push_back(b); graph[b].push_back(a);

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

      Also need to use links to vectors instead of whole vectors in dfs

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

        dont know how to do that but i guess i should have used global vector and resized it later.

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

          Yes, or static array. Or you can do this using & before vector's name:

          vector<bool> &used

          And do this for all vectors in dfs. You have already use link in one of vectors.

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

    It is not necessary to pass large objects to the function, they are copied in each function call. Your function is called O(n) times and we get O(n *n) memory, which is not good.

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

Can you solve D by only using BFS? or would get TLE and have to use DFS?

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

    Why do you need BFS for D? Either way, both will work in O(n + m), so it doesn't really matter.

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

      For test case 6, it was getting maximum recursion depth exceeded in dfs.

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

        Huh. Uh, something-something, blame Python?

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

          Blaming no one, just learn the other way after checking the solution of others. Thankfully that i got error.

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

            Great mindset!

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

              But not of use, i am stuck at the rating. Any advice or guidance to improve my rating?

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

                did you implement bfs ?

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

                Learning good themes is always great, but lots of practice is at least as important, even more so for the first few rating groups, provided you know the basics. Just keep going and don't give up. Practicing keeping composure during contests is useful, too. Don't rush too much, don't worry about your rating, don't give up, even if the problem seems too tough, etc.

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

Can F2 be solved with persistent segment tree?

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

    I only know that E can: 210400778

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

      Didn't solve E but I suspect segment tree on it is an overkill.

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

        It is an overkill, but overkilling is often better than overthinking during contests. :)

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

          But that undermines the whole point of mathematicians coming up with efficient and (not always) beautiful solutions for problems =)

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

        Oh I didn't know binary lifting and merging range like segment tree was a thing, I guess that totally overkilled the problem lol

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

        If a person has written an algo many times, its implementation becomes simpler for him than thinking about easier solutions.

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

As far as I know , all of the sample tests don't cost any penalties when getting WA or RE and so forth , but why problem F has cost me a penalty when I got WA in test 2 although it's included in the sample test . IS it a problem with the system testing or anything else ? thanks in advance.

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

Tasks E and F1 are very interesting, and the condition is very incomprehensibly written in task D. It also seems to me that there is too big a gap between D and E. It was too difficult to guess the key idea in E for its place in div3.

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

Nice contest, problems were from various topics, and their difficulty and overall time to solve were adequate

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

I read A statement wrong. Then, 10 minutes later I read it wrong again. 40 more minutes later, I read it wrong yet again. Finally, 80 minutes after the beginning of the contest, I read it right.

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

in d i took the count of leaf nodes reachable from u and v . their product should have been the answer but what is wrong with this one which failed on test case 4

https://codeforces.com/contest/1843/submission/210448804

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

    The result shows "Accepted"

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

    what was the problem? I am also getting wrong answer on test4.

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

    same with me. I am unable to understand why i am getting was on 4 You can check my code above

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

    To those who are failing on test case 4 on problem D, it's probably because you assumed that we only traverse from low to high. But, this is not correct. ONLY THE ROOT NODE IS 1. Every other node number can be arbitrary up to n.

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

treeforces

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

I loved question F1!

Don't know if it was intended, but running Kadane's algo on a tree was very satisfying.

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

Any ideas on E , I was really stuck there for a long time but couldn't think anything

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

AH YES!!! THE OG div3 contest for newbie/beginner coders who are well versed with 'trees' right??? disappointed.

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

E: We let t[x]=inf initially, and if we a[x]=1 on the i-th query, we let t[x]=i. Then if the segment [L, R] become beautiful at the i-th query, i will be contained in t[L, R], and there will be at least floor((R-L+1)/2) elements smaller than i. so after we sort t[L, R] increasingly, the (1+floor((R-L+1)/2))-th element will be i. So we can solve the problem by range query for k-th minimum element on t[1, n]. We can answer the queries by Mo's algorithm, in which we need to maintain a subset of [1, q]. Using sqrt decomposition we can add/remove an element in O(1) and query k-th minimum in O(sqrt(q)), so we can solve the problem in O(n*sqrt(m)+m*sqrt(q)).

F1: Assume the minimum sum of weight over all subsegments of path (u, v) is m, and the maximum sum is M. Then if sum(L1, R1)=m, sum(L2, R2)=M, when we change the subsegment (L, R) from (L1, R1) to (L2, R2) by extending or reducing the length by 1 each time, the sum of weight will be increased by -1 or +1 each time, so the sum of weight can be any integer between m and M. Therefore, we only need to find m and M for path (u, v). When u=1, we only need to check for path (1, v). Let p be the parent of p, define M(v)=the maximum sum of weight over all subsegments of path (1, v), suf(v)=the maximum sum of weight over all suffixs of path (1, v), we have suf(v)=weight(v)+max(0, suf(u)), M(v)=max(M(p), suf(v)). Similarly we can calculate the minimum sum m(v).

F2: When u can be any nodes on the tree, we need to look for what if we concatenate 2 paths. Let M=the maximum sum of weight over all subsegments, suf=the maximum sum of weight over all suffixs, pre=the maximum sum of weight over all prefixs, sum=the sum of weight over all nodes on the path. Then if we denote (L, R) be the concatenation of path L and R, we have:

(L, R).sum=L.sum+R.sum

(L, R).M=max(L.M, R.M, L.suf+R.pre)

(L, R).pre=max(L.pre, L.sum+R.pre)

(L, R).suf=max(R.suf, R.sum+L.suf)

So we can merge information of any 2 paths. Therefore, we can solve the problem by binary lifting: Let infos[r][u] be the information of the path from u to the (2^r-1)-th ancestor of u, and parent[r][u] be the (2^r)-th ancestor of u, we can find LCA(u, v) and merge path from u to LCA(u, v) and the reverse of the path from v to the child of LCA(u, v).

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

    In F2, what if u and v are in the same subtree?

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

    kth minimum can be solved by wavelet tree instead of Mo's, the complexity is O(m * logq)

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

    Here is a very elegant solution for E that I used:

    Maintain a fenwick tree of values. It need not be persistent, we will take care of that later. Of course we will binary search on queries (because of course, monotonicity). Let us define these three functions.

    • $$$go(i,j)$$$ : apply queries in the range $$$(i,j]$$$.
    • $$$rollback(i,j)$$$ : cancel queries in the range $$$(i,j]$$$.
    • $$$check()$$$ : on the current state, check if the array is beautiful.

    Trivially, $$$check()$$$ can be implemented in $$$O(M \log N)$$$. Also, $$$go(i,j)$$$ and $$$rollback(i,j)$$$ can be implemented in $$$O((j-i)\log N)$$$ similarly. Maybe with a PST it will be faster. but without it, we don't seem to find a better time complexity for these three functions. But this time complexity seems to be enough. Why?

    Let us look at the time complexity deeply. There will clearly be $$$O(\log Q)$$$ calls to $$$check()$$$. So that part is $$$O(M \log N \log Q)$$$. Now the issue is whether the other two functions will be fine. Look further. What will we find? Write down the recurrence formula. You will find this — $$$T(Q)=T(Q/2)+O(Q \log N)$$$.

    This recurrence seems very familiar, doesn't it? We can easily see that this recurrence is equivalent to $$$O(Q \log N)$$$. Now, everything seems so trivial.

    Time complexity at last — $$$O(N+Q \log N + M \log N \log Q)$$$.

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

For D I was using DFS in python and it was having RTE on test 7, so I googled for decision and found the way to use threading, but for unknown reason now my code does not print anything help me please https://codeforces.com/contest/1843/submission/210454284

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

    i used BFS and got RTE on test 7 too, i feel like it's probably a key error or something but i can't find it

    https://codeforces.com/contest/1843/submission/210442051

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

    Because on each iteration on DFS you pass the graph to the function. It will be like 10^10 memory which gives MLE

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

    The MLE is because pypy handles function calls differently, which means it handles setrecursion depth differently: so not only will pypy happily allocate enough RAM for the call depth you requested, the amount per level of depth might be surprisingly heavy.

    tl;dr setrecursiondepth on pypy gets you your MLE result before hitting any of your other bugs

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

      https://codeforces.com/contest/1843/submission/210468007 i stopped passing the graph to function and i use python 3 instead of pypy how can I conquer the runtime error?

      • »
        »
        »
        »
        11 месяцев назад, # ^ |
        Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

        interpolation's comment above is an incorrect extrapolation of low-level concepts like pass-by-value vs. pass-by-reference... python's already skating on top of its own system of internal objects, so VERY LOOSELY SPEAKING, since you're already interacting via levels of indirection, everything you're passing in python code is already a reference (except when it's not, but for a mutable object/collection, this story fits here better than the low-level fear of a massive copy).

        If you only used setrecursionlevel to undo python's safety limit, you're probably running out of stack space (stack overflow, undefined behavior, etc.). In cpython, you can essentially set the limit to whatever you want (since there's no matching pre-allocation like in pypy), but that doesn't change how much stack space there is. That's why the bits with threading and setting a custom (large, multiple of target system page size) stack size happen. Other languages also need to do this too, just that it's conveniently handled in cpp compiler parameters and commonly pre-applied due to its popularity in competitive programming (and a source of angst for other contests where people go back to running code on their own systems).

        Personally, my habit is to simulate bfs/dfs iteratively rather than confronting python's recursion warts or dropping into lower-level (ie closer-to-hardware/system, less abstracted-away) concepts (otherwise might as well go back to cpp).

        You can also look up 'bootstrap recursion' but like the thread-parameters backflips, test it out before trying to use it in contest... I'd at least rank bootstrap above the thread-parameters idea as you can keep pypy's faster-worst-case speed.

        But before any of that, you should probably internalize python-y ideas of mutable/immutable so you feel more comfortable predicting behavior of things like a name passed as a function parameter. Try to avoid slapping 'global' onto things in reaction to errors without understanding the underlying causes etc... happy hunting!

        edit:

        A follow-up...! The biggest weakness of the thread-parameter approach is finding the right value for the thread's stack size. See 210486427 and how it consumes 450,528 KB by requesting 268,431,360 for its thread's stack. Weirdly, that seems to be a maximum on codeforces. I tried a smaller value ~160mb and reproduced the test 7 stack overflow. Maybe there are values in between that'll work, but it's not something I'd mess with mid-contest.

        Other approaches mentioned (sorry for sloppiness, was poking at this whenever I got a moment this afternoon):

        bootstrap recursion: note the use of yield 210485286

        iterative simulation: 210483619

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

Feels more like atcoder ABC__

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

could some figure out what did i do wrong in f1

this is my submission : 210459296

for every x(1<=x<=n), i have stored the maximum continues ones and minus ones from 1 to x.

then while querying i just checked

if k==0 ans is always true

else ans is true if maximum length of ones or minus ones >= absolute(k)

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

    If there is a sequence like 1 1 1 1 -1 1 1 1, we can get sum 6.

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

any approach for E please explain??

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

    Binary search + any data structure for queries sums on segments and updates(Segment tree, Fenwick, Something like Mo heuristics)

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

      you can just use cumulative sum instead of O(log n) query data structure for range sum.

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

        Exactly! A cumulative sum would suffice for each search space from 0 to q-1 within the binary search to find the minimal change number so that at least there is one beautiful segment.

        210467548

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

Good round! The statements are very clear and I love it!

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

Tree forces !

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

I loved the round! I hope you all get your delta increases!

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

I don't understand why I got a TLE on F1. Here is my submission https://codeforces.com/contest/1843/submission/210465690

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

E can be solved using parallel binary search

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

Can someone help me understand why I am getting TLE https://codeforces.com/contest/1843/submission/210409586?

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

I have a question about problem D. It can be easily solved using recursive DFS, and (at least almost) participants used this solution. But how could you know in advance that it would be satisfactory? I mean, that we know that n <= 2*10^5. And the tree could be very long and thin. In this case a recursive solution would cause stack overflow. So whether almost anyone did a leap of faith that trees would not be so thin?

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

    In most contests of CF you don't need to worry about stack overflow when n<=2e5

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

      Is that's the case for python?

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

      That sounds a bit vague. Moreover, there exists correct data which would cause stack overflow for almost any solution. E.g. this code should generate such data, which would hack such solutions, isn't it? I tried to hack some solution but got "incorrect test". Could you please explain why it is incorrect?

      #include <iostream>
      using namespace std;
      int main()
      {
          int t = 1;
          int n = 200000;
      
          cout << t << '\n';
          cout << n << '\n';
          for (int i = 1; i <= n - 1; ++i)
              cout << i << ' ' << i + 1 << '\n';
      
          int q = n;
          cout << q << '\n';
          for (int i = 1; i <= q; ++i)
              cout << i << '\n';
      }
      
      • »
        »
        »
        »
        11 месяцев назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        You only output one number per query instead of two.

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

          Oh, indeed. Thank you! I tried, and it seems that the test machine has bigger stack size than mine. Is that stack size known? Because it seems like another limit in addition to the time and memory limits.

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

            I believe the stack size depends on the selected programming language. For example, I've seen many comments stating that it's low enough on Python that you basically have to use BFS. The best way to know the limit here for sure is just plain testing.

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

              Yeah, sure. But if we consider a programming language that compiled to native code (C++), then a stack size could be a part of OS environment variables (e.g. I think it might be the case for Linux). What bothers me is that even if the program passed the pretests it still can fail on some tests. So trial and error during the contest is no guarantee of correctness. So we return to the leap of faith concept :(

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

            https://codeforces.com/blog/entry/57646 So, there are 256 MB for stack (on C++17). By default, you have probably something like 8MB.

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

              210441297 can you tell why mle and why i have to decrease no of ways for 1 by 1 szaranczuk

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

                vector<vector<int>> adj(n+1,vector<int>(n+1));

                You are allocating (n+1)*(n+1) memory at the beginning, thats why you got mle. I didn't test it, but im not convinced whether you actually need to decrease this value.

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

              Cool! Thanks a lot!

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

graph and tree ..here we go again

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

Div 3 A to D did not test binary search and since its a div3 binary search is usually tested => neuron activation => immediately starts coding binary search solution for E

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

    I also had the same thought initially, then I reverted, and then came back and solved it. The binary search was subtle. If you have not implemented a similar algorithm before, it is definitely tough to inspire. The idea is to check a prefix, and from there it takes linear time to check. Initially, I thought it would take NM time to check. Good to see you got the insight instantly!

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

      I tried to implement BS twice, deleted everything halfway through, tried to build a fenwick tree with an O(q * m * log(n)) time complexity instead, fuck me

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

        Lol. I thought of Binary Search for a minute but never dived into it. SegTree had taken over all my ideas. After the contest, it was so easy to solve with BS+SegTree.

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

Very nice problemset (though more than expected tree problems) & perfectly balanced contest..Author should get ++.....+INF contribution.

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

goodjob

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

Can anyone tell me what is wrong in my python solution for problem D here? It gives Runtime error on 7th testcase. 210431759

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

    recursive stack limit exceeded

    you cannot use recursive dfs for this question in python, you should convert to iterative or use other languages where recursion isnt so heavy

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

    same. the first thing I did was use BFS so that every vertex’s value in the graph only contained its children, not all neighbors.

    then I found the number of leaves each vertex has as descendants.

    but i get an RTE on test 7 and I’m not sure why.

    https://codeforces.com/contest/1843/submission/210442051

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

    210472002. I corrected your latest C++ submission which was getting WA. All you missed was typecasting your ans to long long.(I did it using 1LL).

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

    If you get a clean exit (error code 1) at later test case (7), you probably hit python's safety limit against deep recursion.

    If you get a weird result with garbage values, perhaps you used setrecursionlimit to alter that limit (python, not pypy) and overflowed the stack (thereby finding out why the limit exists in the first place).

    While it's possible to alter the stack size sufficiently for straightforward deep recursion to work (again, regular cpython, not pypy), that approach has some more system-specific pitfalls than other approaches, see my responses to olezhkavayn above.

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

      Should I stop using python for competitive coding?

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

        It would be a good idea to transition to C++. It has a larger userbase and better resources to improve in CP.

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

        Not really. Maybe practically all problems <= 2000 can be solved using python, and of couse it is very good for problems like div 2 A-C.

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

    some optimisations that i used to avoid TLE using recursive dfs (java) https://codeforces.com/contest/1843/submission/210402068

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

For problem B, the problem name is the main hints. (Long Long)

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

Can anyone explain to me what's wrong with my code? It fails on second test, 662 numbers differ. My logic was to find all a[i] < 0 and a[i+1] > 0 and save the last positive that was found as c (index of the last positive number) and then use the for loop to find if there are any elements a[i] < 0 in segment from c to n. https://codeforces.com/contest/1843/submission/210449968

Tnx in advance.

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

first time solve div3 E lol, i was hard stuck at D cuz i have no experience with graph before. Great ground <3

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

Great round! First time solving E feels great, sadly i got 5 WA's in D.

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

Is there any penalty for nonsuccesful hack on a div 3?

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

I just miscalculated subtree in problem D and getting negative delta.Life goes on!!

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

In problem D,I miscalculated subtree nodes of leaf. Life goes on!!

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

Nice contest! I like problem F

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

F2 is 2 hard for div3 :(

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

can i do grey testing?

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

Not a lot of people mentioning problem C. Albeit simple, very nice question. The observation that broke the problem was that the node u has children 2u and 2u+1 (obvious if you are grounded with binary trees).

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

F2: Commutative law, I miss you...

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

That's a good contest and I got + rating. Thank you to EJIC_B_KEDAX and his friends.

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

Please do some works on servers. This is really annoying that site was going down frequently while doing contest.

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

3 solve only >~<

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

how to find out the turtorial of these exercise

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

This is the best 3rd division of those that I have solved!

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

https://codeforces.com/contest/1843/submission/210504578

Please see the above solution for problem D and tell me where i am going wrong :( spent so many hours to figure it out. but couldn't able to resolve it :(

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

My solution to problem A is still in queue and when I submitted it was shown accepted and now its showing in queue.

»
11 месяцев назад, # |
  Проголосовать: нравится -12 Проголосовать: не нравится

My two questions are still in queue...why is it so?

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

why my rating has not been improved even after solving three questions?

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

can anyone tell me how to create tree from given edges in Problem D (apple Tree) ? because edges are not given consistent like higher level to lower level of tree....some edges given higher to lower and some are given lower to higher....that's the only issue I have in my approach..

My approach:

Once I have tree, I will apply BFS on the given x and y separately. BFS on x will return total possibilities(integer value) that are exist for an apple on node x (same for node y). int value return by BFS on node x will be stored in variable ans1 and int value return by BFS on node y will be stored in variable ans2.

and finally we will print ans1 × ans2 for each assumption...

so, can anyone tell me how to store tree in C++?

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

    I think the problem is way more natural with DFS instead of BFS. Also your approach will TLE, you are not supposed to run whatever traversal for each query here. You need to preprocess the input once and store the number of leaves reachable from each node. This can be achieved with a single traversal.

    To be sure the adjacency list is correct you must put the second node in the neighbors of the first and also the first node in the neighibors of the second.

    While doing dfs just be sure you are not visiting the parent again. You can do this both with a visited array or by keeping track of the father of the current node, in this way if the next node is not the father you keep going with the dfs, otherwise you dont.

    While doing DFS you can compute on fly the number of leaves reachable from any root and store into an array, let say array "leaves". Ans for each query is leaves[i]*leaves[j]

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

It was last rated div3 for me :)

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

Why hasn't the tutorial out? Crying ಥ_ಥ

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

Why did my rating fell from 852 -> 796??? It shows accepted. I am really unable to understand this platform.

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

    Because you solve only 1 problem?

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

      And how is that a reason for rank to decrease ? In previous rounds too I have solved a single problem and got increase in ranking.

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

        Why do you think you rating must always go up? There are like more then 15k ppl solved A,B,C. So yours rating drops.

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

          I saw the formula but it didn't go into my head. In one of the contests I solved 0 problems but had a leaderboard rank of 6275, which is the best amongst all(if you consider my other leaderboard ranks) but my rating decreased in that round.

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

The name of the problem B may indicate that you should use long long.

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

EJIC_B_KEDAX I'm surprised this passed pretests :/ :/ went from 200 to 1522 :/ https://codeforces.com/contest/1843/submission/210366483

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

Hi, I received a penalty for q4 in this contest. However my approach was directly derived from a prior reference that i had studied, finding all the leaf nodes in an n-ary tree using dfs. https://www.geeksforgeeks.org/print-all-leaf-nodes-of-an-n-ary-tree-using-dfs/ is the link that can be checked for reference, Kindly look into the problem and perhaps give a more appropriate solution for the same? Thanks, yxjat

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

Я писал двумя аккаунтами поэтому у меня одиннаковый код

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

I am not able to understand why I received mail from codeforces (Attention!

Your solution 210439915 for the problem 1843D significantly coincides with solutions .....) I think because I used online gdb(https://www.onlinegdb.com/)compiler, they found plagiarism in my code,You can cheak my code too. Please I request you to resolve my issue because I didn't copy code from anyone.Please anyone helpe regarding this issue.

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

Author I have been flagged for having similar solutions but this is a standard problem and I have reused previously written code . Please look into this :(

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

Hi, I got a notification of plagiarism in the last contest of Codeforces Round 881 div3. I have gone through both the submissions and both the codes seem to be different to me. It must be a coincidence that plagiarism was detected because if a question has a particular type of approach there is a good enough probability that it might match someone in a pool of about 30k participants, I think that same thing happened here. This was a normal dfs + dynamic programming question and I think the other person has done the question in the same way. There is no way I have cheated here. Please review it once.

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

Hello, even I got a notification of plagiarism for 1843B. I have gone through others' submissions and my code is way different than the others. Could have been a coincidence that I was marked for plagiarism because in a pool of about 30k participants its pretty possible to get similar codes because of the same correct approach. This was a simple and normal arrays question and I think the others have done the question in the same way. I did it myself and it is the truth so you cant just conclude I have cheated here. Kindly, review it once. Thanks

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

I am writing to express my concern regarding the solution matching issue I encountered while solving Problem D on Codeforces. I solved the problem using the standard DFS (Depth-First Search) approach, I am surprised to see my code matching with a large number of other participants.

I want to clarify that my implementation is based on a well-established algorithm commonly used for efficient problem-solving in graph and tree traversal. I assure you that there has been no plagiarism or intentional copying involved. I developed and implemented the solution independently, relying solely on my understanding of the problem statement and established programming techniques.

I kindly request your support in ensuring a fair evaluation of my solution. I ask for your consideration in not penalizing participants, including myself, who utilize standard algorithms like DFS when there is code similarity due to the widespread usage of such approaches. ~~~~~ Your code here... ~~~~~