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

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

Всем привет!

На днях состоится Открытая олимпиады школьников по программированию. Олимпиаду подготовила Московская методическая комиссия, известная вам также по Московской олимпиаде школьников по программированию, Московской командной олимпиаде и олимпиаде Мегаполисов (раунды 327, 342, 345, 376, 401, 433, 441, 466, 469, 507, 516, 541, 545, 567, 583, 594, 622, 626, 657, 680, 704, 707, 727, 751, 775, 802, 829, 852).

Открытая олимпиада составляется из самых интересных и сложных задач, которые были предложены многочисленным коллективом наших авторов, поэтому мы решили провести нерейтинговое зеркало олимпиады на Codeforces. Олимпиада проходит в два тура, каждый из которых состоит из $$$4$$$-х задач, неупорядоченных по сложности, и $$$5$$$ часов на их решение. Сложность задач сопоставима с уровнем Div. 1. За каждую задачу можно получить до $$$100$$$ баллов, которые распределены по нескольким подзадачам с различными ограничениями, что позволяет участникам получить частичные баллы. Оценивание происходит по формату IOI, где участник получает полный отчёт по тестированию по всем тестам Online-подгрупп во время соревнования. Особенностью открытой олимпиады является то, что в некоторых задачах присутствуют Offline-подгруппы, результат по которым будет доступен только после конца соревнования. Обратите внимание, что во время соревнования вам не будет доступна таблица результатов.

Зеркало на Codeforces состоится в Mar/08/2024 12:05 (Moscow time) и Mar/09/2024 12:05 (Moscow time).

Задачи соревнования были придуманы и подготовлены Mangooste, vaaven, Tikhon228, ViktorSM, isaf27, TheEvilBird, sevlll777, Papaz239 и pakhomovee под руководством Ormlis, grphil и Андреевой Елены Владимировны.

Отдельное спасибо MikeMirzayanov за системы codeforces и polygon, который использовался при подготовке задач этой олимпиады.

Большое спасибо тестерам олимпиады: dshindov, FelixDzerzhinsky, Adikolon, isaf27, adepteXiao, talant, AgafonovArtem, Dart-Xeyter, inhabitant, Kapt, Siberian, alexashkins, alexxela12345, Sweezy, v0s7er, MOHOXPOM, Titoffifee.

Всем удачи!

UPD1: Решения были протестированы на offline-группах. Также доступна таблица результатов для первого дня.

UPD2: Решения были протестированы на offline-группах. Также доступна таблица результатов для второго дня.

UPD3: Общая таблица результатов

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

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

Will there be an editorial after the contest?

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

Will there be a live scoreboard?

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

[Deleted]

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

.

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

omg IOI rules official round

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

    It's not an official round, it's an unrated mirror of an onsite contest that has nothing to do with CodeForces.

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

you are right

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

We can't see the standings during the contest?

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

GL & HF for you all guys!

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

please upvote this comment, thanks.

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

Goodluck everybody. Hope you're doing well.

After the contest, solutions and statements will be available in this site: https://inf-open.ru/?lang=en

And you can also see the Qualification stage of Open Olympiad 2023-2024 in that site.

If you want to upsolve problem for Qualification round go here: https://codeforces.me/gym/104922

And for editorial visit this link: https://inf-open.ru/2023-24/zaoch-materials/

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

Although i could only solve one problem,i had a wonderful time.

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

It was a good contest, so could you open standings?

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

How to solve D? I have a naive solution O(N^2*W) solution , which will fail eventually.

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

How to solve D? I have a naive O(N^2*W) solution , which will fail eventually.

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

    Noticed that for each state that the current player choosing switches, the number of minutes he is falling behind always satisfies $$$t\le a_{r+1}$$$. So you can optimize the number of states to $$$O(n\cdot \sum w)$$$.

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

      Will you please elaborate? How is number of states optimized to O(n⋅∑w) ?

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

      I had the same observation but my code was failing miserably so I set the upper bound to be $$$t \leq 2*a_r$$$ which was enough to pass only up to subtask 5 :((((

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

      So inspiring!

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

      I now get this. Earlier I don't know why I was feeling even with this restriction it shall be O(N^2*W). if we define dp[i][j][w] , then for fixed j , there will be j values of i. so it will take sum(j*w[j+1]) , which is less than O(N * W)

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

I need editorial for problem D :(, I really liked the problem but I only came up with a $$$O(n^2W)$$$ solution and I got 56 pts.

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

    can you explain your idea? I got 22 only in D.

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

      Basically let $$$k$$$ be the time Alice has, if $$$k \geq 0$$$ then it's Alice's turn, otherwise it's Bob's turn, and let $$$f(l, r, k)$$$ the maximum value of Alice's score using the interval $$$[l, r]$$$ with time $$$k$$$, then:

      $$$ f(l, r, k) = max(f(l + 1, r, k - a_l) + a_l, f(l, r - 1, k - a_r) + a_r) , \ \ k \geq 0 $$$
      $$$ f(l, r, k) = min(f(l + 1, r, k + a_l), f(l, r - 1, k + a_r), \ \ k < 0 $$$

      So, Alice's final score is $$$f(0, n - 1, 0)$$$.

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

A is an enjoyable problem :)

btw when will the standings be public

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

Can anyone explain why this solution for D gives WA on group 2 test 12?

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

Can anybody explain the solution of problem D? I thought if they play optimally then the minimum difference of their sum will be the answer. So following this I used dynamic programming on O(n*W) but it is showing wrong answer from group 3 to 5

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

    Your greedy is incorrect, you just need to do smth like dfs on states. It is $$$O(n^2W)$$$ but can be optimized to $$$O(nW)$$$

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

      how can I optimize from $$$O(n^2W)$$$ to $$$O(nW)$$$? currently my states are $$$[l,r,t,num]$$$ means that the remain subarray is $$$[l,r]$$$, $$$t=0/1$$$ shows the current player and $$$num$$$ is the remaining sum from player $$$t$$$.

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

HOW TO SOLVE THAT TREE PROBLEM B? ANY HINTS PLEASE....

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

Can someone suggest a case for this? link

Second test group fails, but the worst case i could make runs locally in 0.6 seconds.

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

    Link not opening..

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

      mostly it's because you have no access to other's solutions. Maybe you need to be manager of contest, or possibly wait some time. Some old contests allow you to look into other's solutions. However, this contest is unique, because it's not Codeforces round.

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

    For C Time Limit is very tight. I did some simple optimizations like int instead of long long(wherever you can use) and unordered_map instead of map and by avoiding modulo operations it got accepted

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

how to solve C?

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

Can someone share their full AC code for D? Is your complexity better than $$$ O(n*W) $$$.

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

how to solve day2 C?

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

    you can use sqrt descompose, this can pass in 3s

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

    For each element, let's find the last value it can reach in 1 move; let's call this $$$nxt_i$$$.

    A correct greedy solution for answering the queries would be, at each step, to find the greatest value on the interval $$$[u, nxt_u]$$$ that isn't bigger than $$$a_v$$$ and jump to it.

    To do this efficiently, we will use square root decomposition. At each step, we will solve all queries with $$$a_v$$$ in the range $$$[k \cdot \sqrt{n}, (k+1) \cdot \sqrt{n}]$$$ for some $$$k$$$. For each element, let's compute the fastest way we can reach any value in this range and store where we will land 1 move before.

    Now, for each query, at each step, we will jump 1 step before a value in a range and decide whether we want to move to it or jump further. We will repeat this process $$$O(\sqrt{n})$$$ times for each query.

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

      Also, your solution is easy to remake to D&C. And get $$$O(n \cdot log^2 n)$$$

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

      Wth that's so based

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

      Wouldn't calculating fastest way to reach any value in range itself be $$$O(nlog(n))$$$

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

        When you move to the next bucket, the values can change to only $$$\sqrt{n}$$$ different values. So, you can calculate RMQ in $$$O(\sqrt{n}^2)$$$ and then just look based on the first to the right from $$$i$$$ and the first to the left from $$$nxt_i$$$.

        Although I actually had to squeeze a monotonic queue and binary search for it to pass.

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

D is too short code this is my code : https://ideone.com/HwO0wc

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

May someone help me with C question Day 1. With my solution I was able to get only 14 points by passing group1 testcases and on rest testcases some are passing some are giving WR and time limit exceed. Also I can't think of an idea to make it fast. Here is my Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stdbool.h>
int main(){
    // int p;
    // scanf("%d", &p);

    // while(p--) {

        int n, k, t;
        scanf("%d %d %d", &n, &k, &t);

        int temps[n];
        for(int i = 0; i < n; i++) scanf("%d", &temps[i]);

        int arr[n * k];
        int count = 0;
        for(int i = 0; i < k; i++) {
            for(int i = 0; i < n; i++) arr[count++] = temps[i];
        }

        int i = 0;

        int ans = 0, prev = -1;
        int temp[k];
        memset(temp, 0, sizeof(temp));
        int cnt = 0;
        int len = n * k;
        int numGift = t;

        while(i < len) {
            while(i < len && numGift > 0) {
                // printf("i : %d\n", arr[i]);
                bool flag = true;
                for(int j = 0; j < cnt; j++) {
                    if(arr[i] == temp[j]) {
                        flag = false;
                        break;
                    }
                }

                if(flag) {
                    temp[cnt++] = arr[i];
                    --numGift;
                }

                prev = arr[i];

                while(prev == arr[i]) ++i;
            
                if(numGift == 0) {
                    ++ans;
                    memset(temp, 0, sizeof(temp));
                    numGift = t;
                    cnt = 0;
                }
            }

        }

        if(numGift != 0 && numGift < t) ++ans;

        printf("%d", ans);

        printf("\n");
    // }

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

B is Dp ?

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

Will we have a merged scoreboard?

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

the scoreboard of day2 is not fully rejudged, please fix this sir Ormlis

edit: fixed

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

How to solve B day2 ?

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

Will there be official scoreboard and editorials in the near future?

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

is there any editorial? Ormlis