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

Автор cgy4ever, история, 8 лет назад, По-английски

Topcoder SRM 711

Time: 5:30 am EDT Saturday, March 25, 2017

Calendar: https://www.topcoder.com/community/events/

Update: we moved the SRM 1 week later (and the start time has been changed).

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

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

It clashes with VK Cup 2017 — Round 1.

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

Auto comment: topic has been updated by cgy4ever (previous revision, new revision, compare).

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

I've started Data Science Weekly Challenges series for competitors in Algorithm and Marathon tracks. SRM 711 is the chance to jump in the first challenge — the lowest-rated person who will get a bye to Stage 2 of Algorithm Competition will get a TCO'17 t-shirt!

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

Contest will start in 17.5 hours.

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

Can someone please explain solution for Div1 500?

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

Hello, I was the writer of this round. This time we tried to make problems easier than usual. May be div1-hard should be more challenging. What do you think?

Here's short hints:

div2 easy, SquareMaking

hint

div2 medium, StringTransform:

hint

div2 hard, TreeMovingDiv2:

hint

div1 easy, ConsecutiveOnes:

hint

div1 medium, OrderedProduct:

hint

div1 hard, TreeMoving:

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

    Does random generator ensure that we get correct trees in div2 hard?

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

    Arterm whats difference bw div1 and div2 hard 1000 pts.

    you gave same soln

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

      In div2 hard n and m up to 50, which allows O(mn^3) solutions.
      In div1 hard n and m up to 500, intended solutions works in O(mn^2) and O(mn^2 \log n). Unfortunately, some O(mn^3) managed to pass too.

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

    Can you please explain the solution a bit more of div1 medium?

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

      contains_one(int n): number of sequences of length n with at least one one with product X,
      greater_one(int n): number of sequences of length n with each element greater than one with product X.

      To calculate contains_one go over amount of ones (we should take at least one):
      contains_one(n) = sum(i = 1..n-1) choose(i, n) * greater_one(n-i)
      greater_one(n) = total(n) — contains_one(n)

      total(n): number of sequences of length n with product X (no restrictions on elements).
      To calculate total(n) we iterate exponents and assign primes[i] independently, hence:
      total(n) = product(i) choose(a[i], a[i]+n-1)

      Result is sum of greater_one(i)

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

Come on guys, I don't remember when was the last time I solved any TC problem faster than today's Div1 500. It deserves to be 250 pts at most xd.

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

I take some time to investigate where is wrong in my input parser of Div.1 Hard. And Finally find the wrong thing is the explaining of example...

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

    I managed to make different samples in div2 hard and div1 hard, but copy-pasted the explanation. Sorry for that.

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

In Div2 Hard if try removing every edge that is not a bridge in the resulting graph after adding removed edge from previous tree to calculate dp. Is this method correct ?

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

For Div 2 hard, I used the recurrence F(i, j, k) =number of valid ways using the first i trees,selecting edge number j from last tree ,and edge k picked from tree m - 1 (to maintain cyclic property).

I start this recurrence by calling solve() trying and removing each edge related to tree m - 1 one at a time, and going to tree 0. This procedure is followed for each tree thereon recursively. However, on sample 3 I get WA. Am I doing something wrong ?

Code

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

If we code bruteforce for Div1Hard it will perform n^3 operations "add constant on a path in tree", however random path in a random tree is very short. Were there tests to cause such solutions to get TLE? I think it may be impossible to create them, but it is also sad if such solutions passed (I didn't investigate that)

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

    You can interchange flowers (graphs of diameter 2) and bamboos. This should cause TL for such solutions. I though about that only after the contest, that's sad.

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

FML

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

Please provide Div2 hard, TreeMovingDiv2 editorial with proper explaination. I am unable to understand after looking others solutions.

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

When will full editorial be published ?