Автор BledDest, история, 9 лет назад, По-русски

Привет, Codeforces!

15 июня в 18:05 MSK состоится Educational Codeforces Round 23.

Продолжается серия образовательных раундов в рамках инициативы Harbour.Space University! Подробности о сотрудничестве Harbour.Space University и Codeforces можно прочитать в посте.

Раунд будет нерейтинговый. Соревнование будет проводиться по немного расширенным правилам ACM ICPC. После окончания раунда будет период времени длительностью в один день, в течение которого вы можете попробовать взломать абсолютно любое решение (в том числе свое). Причем исходный код будет предоставлен не только для чтения, но и для копирования.

Вам будет предложено 6 задач на 2 часа. Мы надеемся, что вам они покажутся интересными.

Задачи вместе со мной готовили Михаил awoo Пикляев и Владимир vovuh Петров. Благодарим за помощь в тестировании Алексея Perforator Рипинена, Алексея ashmelev Шмелёва и Максима HellKitsune Финютина.

Удачи в раунде! Успешных решений!

UPD. Рад анонсировать вторые сборы Hello Barcelona Programming Bootcamp (в сотрудничестве с Moscow Workshops ACM ICPC), которые будут проводиться нашими партнёрами Harbour.Space University совместно с Moscow Workshops ACM ICPC, Университетом ИТМО, МФТИ, СПбГУ и Codeforces!

Подробная информация о сборах.

UPD: Разбор задач.

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

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

WOW !! Editorial has been published before the contest.

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

Please correct the time of the contest

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

Автокомментарий: текст был обновлен пользователем BledDest (предыдущая версия, новая версия, сравнить).

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

Today is Champions Trophy Semifinal INDIA vs BANGLADESH ....Timing issue

»
9 лет назад, скрыть # |
 
Проголосовать: нравится -12 Проголосовать: не нравится

servers are getting really slow. Hope the contest won't be delayed

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

Judgement failed??

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

What is Judgement Failed?

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

What is Judgement Failed?

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

Me too! Don't worry. Round will be unrated. xD

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

Are pretests too weak? I am submitting crap and they all are getting "accepted" as of now.

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

Large amount of hacks on A and B is coming...

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

I think problem F could be solved using segment tree if the interval was smaller... Can it be solved using a lazy-constructed segment tree? (we create nodes as we need them)

Thanks! :)

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

How to solve F and C?

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

Any idea for D? I thought something on basis of RMQ and adding one element at a time to the array. But it is TLE easily.

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

How solve D? :'v

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

can we get AC with a NlogN solution in problem D ?

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

Why i cant double click on submissions to hack it???

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

Can't wait until tomorrow to see the verdict. Please try to hack my C. I haven't used binary search or dp. code

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

How to solve D with O(N) complexity?

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

    here you go.

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

    For each element, let the number of subarrays in which it is the min be cnt_min[i] and the number of subarrays in which it is the max be cnt_max[i]. Answer is sum of arr[i]*(cnt_max[i]-cnt_min[i]).

    To find cnt_max[i], for each index i, find the closest indices to its left and right such that value there is > arr[i]. This can be done in cumulative O(n) time using stack. Similar for cnt_min[i].
    Take care of duplicate values.

    Code

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

    The basic idea is for each i find Nmx[i] — the number of subarrays that will have a[i] number as maximum. Then do final_answer += Nmx[i] * a[i]. Similarly find Nmn[i] — number of subarrays in which a[i] will be the minimum number, and do final_answer -= Nmn[i] * a[i].

    Nmx can be found in O(N) time. To find Nmx[i], you have to find Rmx[i] and Lmx[i] such that a[i] is maximum among all numbers in the segment [Lmx[i], Rmx[i]]. Rmx and Lmx arrays can be obtained with a forward sweep and a reverse sweep of the original array.

    Similarly find Nmn array.

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

How to solve E? I could feel the use of tries but I couldn't come up with a good idea.

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

    Read this tutorial to learn how to solve similar problems involving XOR using trie.

    In this problem, maintain a trie in which numbers are inserted/removed in the decreasing order of bits in their binary representation. Now, for the query part, just traverse along the path specified by P and consider all cases in which you can get XOR < L.
    eg. if next bit of P is 0 and next bit of L is 1, you can add all the numbers along the 0-edge to the answer and then move along the 1-edge (because for all numbers inserted in subtree of 0-edge, their XOR with P will be < L).

    You can see all the cases in my code. Code

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

Constraints in the problem E are so good that an O(Q^2) solution gets AC (it's not that the tests are weak: I can't make it run for more than ~1.5 seconds).

Was it intended?

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

Автокомментарий: текст был обновлен пользователем BledDest (предыдущая версия, новая версия, сравнить).

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

The editorial is published.

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

This was another great educational round from your part, I liked the problems a lot, keep up the good work.

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

Why my MEX queries does not work? Here's my code:

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

It seems like that several past educational rounds are full of data structure problems XD

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

    They are :c We really try to balance out problemsets but everytime it ends up with lots of ds problems.

    I guess that it is actually fine in context of ERs because education in competitive programming is mostly about learning algos and data structures. Still somehow I am not pleased with the quality of contests...

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

For B. Makes And The Product I don't know why my logic won't work

27820072

Basically I am counting the frequencies of smallest 3 distinct elements. For example 1 1 1 2 2 3 3 3 3

So the frequency is 1 -> 3, 2-> 2, 3->4 Call them k1,k2,k3 for smallest numbers a1,a2,a3

If k1>=3, it means the constituents of my minimum product all come from a1...So it is k1 choose 3

else if k1==2, then i just choose one of a2, which gives k2 ways.

else if k1==1 and k2>=2, then number of ways is k2 choose 2

else if k1==1 and k2==1, then i have to choose one a3, k3 choose 1 way of doing that.

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

214 successful hacks!! Great!

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

Can anyone explain me D&C solution for D? Because solution with stacks looks awful. I was thinking D&C on contest but couldnt solve it.

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

Can anyone explain me D&C solution for D? Because solution with stacks looks awful. I was thinking D&C on contest but couldnt solve it. Edit: got it. This solution helped me: http://codeforces.me/contest/817/submission/27832753

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

Would you please update the Python2 version for the judging system?

This submission is said to be runtime error for python 2.7.3 while it works perfectly on my macbook with python 2.7.11.

http://codeforces.me/contest/817/submission/27881187