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

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

Here's the link: https://ranking.ioi18.net/Ranking.html

How excited is everyone?

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

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

I am literally shivering with excitement!!

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

It's not loading anymore. Kinda expected more from Japan.

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

Are there public statements available?

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

What? In 30 minutes all problems all solved by Benq

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

Let's discuss problems. Who has any idea?

»
6 лет назад, # |
  Проголосовать: нравится +78 Проголосовать: не нравится
Hint for B
»
6 лет назад, # |
  Проголосовать: нравится +42 Проголосовать: не нравится

wow, i'm Benq fan!!

»
6 лет назад, # |
Rev. 2   Проголосовать: нравится -14 Проголосовать: не нравится
hint for A
»
6 лет назад, # |
  Проголосовать: нравится -36 Проголосовать: не нравится

It's really excited. But Is It Rated?

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

How to solve werewolf?

I had a in time and in memory (C is a small constant ~= 8) solution which unfortunately MLE on the last subtask (it was able to get the 34 p. one). The idea uses a couple of small to large tricks and DSUs but it's quite long (and it doesn't pass for 100), so I won't explain it here. Did you have some similar solutions or the idea is very different?

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

    where do you submit ? can i have the mirror?

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

    Did you reduce to check if two subarrays of two permutations have common element? If so, a simple Mo's algorithm with a tricky technique may pass.

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

      Note: There's no mirror so I couldn't test this.

      If a and b are the permutations, then checking if al, ..., ar and bL, ..., bR share an element is equivalent to having points (i, b - 1(ai)) for i = 1... n (where b - 1(ai) is the index of ai in b) and checking if there is point in the rectangle [l, r] × [L, R]. Counting the number of such points can be done offline with sweepline + fenwick tree in time and memory.

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

      Can you explain the reduction in more detail?

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

    Mine is of similar complexity ( time, memory if I remember correctly)

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

    My solution that passed actually uses 2 DSUs with 2 small-to-large.

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

    I don't know if my solution is correct but what i do is compute the smallest i can go for each Si with one DSU in offline fashion for all queries (ordered by L decreasing). Then I process the queries (ordered by R increasing) and use another DSU to check if that smallest node is reachable from each Ei. This is a total complexity of O(QlogQ + Nα(N)) runtime and O(N + Q) memory.

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

      I may have understood you wrong, but I think the meeting point shouldn't necessarily be the smallest / largest valued node reachable from Si, because some other nodes unreachable from Ei may be blocking it off.

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

Second place the georgia!!! georgia for the win! georgia will got first place in one year, and in two years too.

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

where I can see the problems?

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

How to solve A?

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

    Determine the first letter with 2 queries ( First query two letters like AX, so you can discard two letters, and then query just one ) Then, for every letter from 2 to N-1 do the following ( Assume the first letter of S is ‘A’. For the other cases its the same process but different letters )

    Let s be the prefix of S that you already know.

    Ask s + ‘B’ + s + ‘XB’ + s + ‘XX’ + s + ‘XY’
    If the next character is ‘B’, then the query returns | s | + 1. If it is ‘X’ then | s | + 2 is returned. If it is ‘Y’, then | s | is returned. Then just get the last letter with two queries similarlly to the first letter

    This works in N+2 queries and it is enough to get 100 points

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

      Sorry , misunderstanding was my bed.

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

      I actually have another solution very similar to Diegogrc's.

      Similarly to his solution, define s and the prefix of S we know so far, and assume A is the first character in the string. Also, the first letter can be obtain in two queries as described in that solution.

      We will look at two consecutive indices at a time, appending onto s. In order to maintain 2 queries per 2 indices, we will split the cases into two groups as follows:

      Group 1: sXB, sXX, sYY Group 2: sYB, sYX, sXY

      First, append all elements of Group 1 together to make sXBsXXsYY. If we query and get |s| as the return value, we know that neither X or Y can be appended to s, therefore we know that B must come after s. In this case, we just move on to the next index. The cost for this case is 1 query per 1 index.

      On the other hand, if we have |s| + 2 as the return value, then we query for the string sXX. If we get |s|, then YY must be appended to s. If we get |s| + 1, then XB must be appended to s. If we get |s| + 2, then XX must be appended to s. We can then jump two indices to the right. Notice that we only used two queries per two indices for this case (one to determine that there is an answer within this group, and one to determine which of the ones in this group is the right answer).

      The other case is when we have |s| + 1 initially. We know that the first letter after s must be either X or Y, but the second letter after s makes the answer not within the first group. Therefore, our answer is contained in the second group. We use a similar method of determining the correct answer in the second group as in the previous case (|s| + 2). We also spend two queries per two indices.

      Since we spend two queries every two indices (or one query every index, as in the first case we described) and risk overshooting N-1 by one, the worst case number of queries is N. We also need 2 queries for finding the first element. Therefore, the solution runs in N+2 queries.

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

      For A, couldn't you just build the known prefix by trying out all characters from {A, B, X, Y} for the next unknown position? The score if it matches will be 1 + length of known prefix. Number of queries will be 4n, which since n = 2000 and max queries is 8000 will just fit.

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

        You need to find a solution with <= n + 2 queries to get 100 points

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

          In hindsight, I should have realized such a simple solution would never have been expected at the IOI.

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

The scoreboard is updated with day 2 tasks!

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

How much participants will have a medal ?

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

Can somebody make a graph "CF rating vs IOI score"? And the same graph for only blue+, violet+, orange+.

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

How to solve meeting and highway?

Hint for dolls
  • »
    »
    6 лет назад, # ^ |
    Rev. 4   Проголосовать: нравится +10 Проголосовать: не нравится
    90 pts for highway
    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится +8 Проголосовать: не нравится
      90 pts with 51 queries

      I might have squeezed this solution to 50 queries on Yandex with some randomization and pruning, but I'm not sure as the scoring is broken.

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

    I described my solution to meeting point on the day 2 blog. If someone has a simpler solution, I'd love to hear it.

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

congratulations Benq for winning IOI 2018!