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

Привет, Codeforces!

В 28.05.2020 17:35 (Московское время) состоится Educational Codeforces Round 88 (рейтинговый для Див. 2).

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

Этот раунд будет рейтинговым для участников с рейтингом менее 2100. Соревнование будет проводиться по немного расширенным правилам ICPC. Штраф за каждую неверную посылку до посылки, являющейся полным решением, равен 10 минутам. После окончания раунда будет период времени длительностью в 12 часов, в течение которого вы можете попробовать взломать абсолютно любое решение (в том числе свое). Причем исходный код будет предоставлен не только для чтения, но и для копирования.

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

Задачи вместе со мной придумывали и готовили Роман Roms Глазов, Адилбек adedalic Далабаев, Владимир vovuh Петров, Иван BledDest Андросов и Максим Neon Мещеряков. Также большое спасибо Михаилу MikeMirzayanov Мирзаянову за системы Polygon и Codeforces.

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

Также от наших друзей и партнёров из Harbour.Space есть сообщение для вас:

Codeforces and Harbour.Space

Привет, Codeforces!

Как вы, возможно, помните, у нас есть бесплатная серия вебинаров с участием всех наших звездных преподавателей, которые делятся ценным контентом и инсайдерскими знаниями, о которых вы не узнаете через обучение в традиционных классах.

Присоединяйтесь к нам завтра, в четверг, 28 мая, в 12 ч. (BCN) / 17 ч. (BKK), чтобы посмотреть, как Сергей Гордейчик, директор по информационным технологиям Inception Institute of Artificial Intelligence, поделится своим анализом и инсайтами о том, как положительно и отрицательно искусственный интеллект используется во время глобальной пандемии COVID-19, в своем вебинаре “Digital Lockdown: AI against COVID-19”. Настройтесь узнать некоторые практические примеры того, как компании используют ИИ для различных целей во время кризиса, исследуя такие темы как медицинская визуализация для КТ-анализа, диагностики и массового наблюдения.

Принимая участие в этом вебинаре, вы получите сертификат участника, специальный цифровой подарок от Сергея и получите шанс выиграть БЕСПЛАТНЫЙ 3-недельный модуль в Harbour.Space University, в зависимости от наличия мест и условий участия в курсе.

До завтра и удачи вам в раунде!

Забронируйте свое место сейчас!

Поздравляем победителей:

Место Участник Задач решено Штраф
1 244mhq 6 174
2 bmerry 6 219
3 dlalswp25 6 233
4 hepth 6 238
5 Volkov_Ivan 6 251

Поздравляем лучших взломщиков:

Место Участник Число взломов
1 Hideki_Ryuga_L 37
2 KonaeAkira 19:-1
3 ujjwalsingh30 18:-1
4 veteran_ 14
5 ashwinginoria 13
Было сделано 318 успешных и 469 неудачных взломов.

И, наконец, поздравляем людей, отправивших первое полное решение по задаче:

Задача Участник Штраф
A andryusha_na_knopke 0:01
B thech0sen1 0:03
C IAKWF 0:11
D Kerim.K 0:06
E HeHere 0:06
F user202729 0:44

UPD: Разбор опубликован

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

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

First comment! Thank you Codeforces and Harbour.Space University for these rounds in this tough time!

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

    Don't know the reason of such hatred shown by the community here. I just thanked the organizing panel for their efforts, that's it, as a good gesture. No wonder why the community hated it so much. Maybe because I am a specialist and not a red, not really sure about it.

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

      Don't worry about downvotes too much.

      Your positivity will reach the people no matter what.

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

      This is one big problem with cf. On one side, there is Mike who is bringing out new div4 contests for not so high rated participants and on other side are these guys who boast a lot about their ratings.

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

      If everyone showed thanked the organizer in the comments, then we'd just have a thread of 19,000 people saying thank you. No one wants that, if you want to thank them give them an upvote.

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

        Almost everyone is sad about this lock down (including me), and if these contests give hope to people or put a smile on their face or excite them, there's no harm in saying a "thank you" as a good gesture. And I think that it's nearly impossible for such a large number of people to post it in an announcement. It's just a few, which doesn't flood these announcements. In my case, I just got excited seeing the announcement and that there isn't any comment yet, so I thought why not write a good thing for the organizers, there's nothing bad in it. It gives hope (or just puts a smile) to some, if not all.

        I don't want to hurt anyone with my comments, and if I did, I am sorry about it.

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

          Hey, don't worry both of the groups supporting/disagreeing with your comment are right in their point of view. The first group that supported you was for your pleasant thanksgiving and the other group that disagreed on you was because they want that more important messages/helpful messages are to be shown so that it would give way to more important messages in a bunch of good messages. That thanksgiving gesture was very pleasant hope it will spread positivity in this environment.

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

      I guess you've been downvoted for your 'First comment'. That's totally useless.

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

Where's the unusual time ??

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

Where's the unusual time ??

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

Googleforces

Let's goooo!

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

Hope this educational round will be much better than previous one^_^

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

Looking forward to more geometry problems! Especially, ones with subtasks <3

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

Lets hope we get to see problems involving both math and graph theory. It was long back when we had problems involving math as well as graph theory.

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

Thanks for having back to back contests! Giving something to cheer for.

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

Looking for a data structures problem ..

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

I rarely see a Div2C or Div2D a graph theory problem I think in a while i have seen two only one livonia and kingdom and one from ehab and bla bla .... I am looking for good Problems rather than standard ones with unusual time limit and memory limit.

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

I hope to see Tree , Data structure , Math Problem But i don't want to see geometry .... i am very weak of that

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

    everything is fair until it's not one click away on google. specially when it's prob A/B/C/D. because that makes contest unfair for 80% rated participants.

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

      How did you calculate the percentage of the unfairness? Why not 0.4% or 5% or 15% or 146%? Please, provide some proof or stop speculating.

      Anyway, if you deserve your rating you'll gain it in no time. Otherwise, if you need to google A/B/C/D in ER you probably don't have the rating you can be proud of.

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

        Btw how did you generate such numbers .4%,5%,15%,146%. Any formulas for that or random. He is saying correct those who wasted time in solving that suffered. Googlers got Ac instantly. At least it should be not present on google

»
6 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится -35 Проголосовать: не нравится
  • Educational codeforces round exists *
    No one :
    Literally no one :
    People who get negative delta after the contest :
    Educational codeforces rounds should be unrated.
»
6 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Why score distribution is not given in any educational round announcements?

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

RUSH RUSH!!

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

[deleted]

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

Who else is trying to solve their first div2 c problem

»
6 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится -47 Проголосовать: не нравится
  • Problem C : This Problem Can be Solved Mathematically using inequalities.
Idea
Solution

Link to my solution : 81821029

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

Woohooo Vovuh is back!

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

Hope there are no geometry problems!

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

sry, I LOVE MATH!

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

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

why has no one yet asked whether the round is rated or not!!

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

I give up Codeforces and leave this site because of problem C. I am 100% sure that my code is correct but I got 7 WA. I give up. Bye.

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

1937 : There will be flying cars in 2020

Meanwhile in 2020 : brainless pupils and Newbies exist.

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

Speedforces!

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

Last time I was lucky to notice the pattern in C task which resulted in formula answer, this time C revenged! :D

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

A great contest with beautiful problems and short statements for which Educational rounds are generally known.

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

Can C be solved with the help of binary search ? If yes, how ??

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

What is the testcase #4 of problem C ?

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

How to solve D?

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

How to solve F?

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

    My idea:

    Forget about starting at any time for a moment. Let all cars start moving at $$$t = 0$$$. For any $$$t$$$, Consider the line segments of each car whose endpoints are starting position of that car and position of that car at time $$$t$$$. Find the least $$$t$$$ for which there is an intersection of any two line segments. Then the answer is $$$t$$$, because if line segments corresponding to cars $$$A$$$ and $$$B$$$ intersect, then I can start one of them late and make them crash exactly at $$$t$$$. So binary search on $$$t$$$ and use line sweep to check if there is any intersection.

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

I solved C using ternary search . can some one please proof how the shape will be similar to parabola (I just assumed) .

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

    You can use just Binary Search in the odd number of movements.

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

      Can you plz tell me how? . I am able to find out that we need to search only in odd position but didnt find the how to solve it as brute gives tle and you said binary search . But I didnt get it how??

      • »
        »
        »
        »
        6 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +3 Проголосовать: не нравится
        1. take one cup of the hot water and pour it into an infinitely deep barrel;
        2. take one cup of the cold water and pour it into an infinitely deep barrel;
        3. take one cup of the hot water and pour it into an infinitely deep barrel;
        4. take one cup of the cold water and pour it into an infinitely deep barrel;
        5. and so on...

        Here for every cup of cold water you have already poured a cup of hot water already. So whenever the even number of cups poured, the temperature will be constant which is the avg(h, c).

        After you pour the 1st cup of hot water. The temperature will be h. After you pour the 2nd cup of hot water. The temperature will be slightly low since you have poured one cup of cold water before.

        Therefore, the temperature will be decreasing monotonically towards the avg(h, c) when ever you pour a cup of hot water. So you can use this property to binary search the appropriate value.

        Link to my submission : 81771518 . Hope you find this useful

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

    No the shape would not be parabolic.

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

    Assume you put x hot cups and x — 1 cold cups. Then middle temperature is (xh + (x-1)c) / (2x-1) If you put x + 1 hot cups and x cold cups then middle temperature is ((x+1)h + xc) / (2x + 1).

    Subtract second from first and you get (h-c)/(4x^2 — 1) which is always positive. So temperature is strictly descending function from number of hot cups.

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

    I can be proved that $$$ \frac {x} {2 * x - 1} $$$ (x = 1, 2, ...) is decreasiong.

    Proof:

    $$$ 2x^2 + x \gt 2x^2 + x - 1 $$$

    $$$ x *(2x + 1) \gt (2x - 1) * (x + 1) $$$

    $$$ \frac{x}{2x-1} \gt \frac{x + 1}{2(x + 1)-1} $$$

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

    1

    2

    3

    stock svg images

    I just plotted the graph, and you can see it is a decreasing function for odd number of cups.

    and you can see it is constant for even number of cups.

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

The ordering of problems was very bad E was even easy from C

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

    I think it was easy to guess but not easy to prove .

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

      A somewhat loose proof for the solution to E is that if you consider a list of numbers [2,2x,2y,2z,...] such that every term divides the smallest number (for example, 2), no matter how you re-arrange the numbers, eventually, you will have to take it modulo the minimum number in the array, which will cause the result to become 0. Then, it is zero all the way to the end.

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

        How to prove that if there is more than one number not the multiple of $$$k$$$ then the final modulo is different?

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

          Suppose that there is a number $$$a_i$$$ that is not divisible by $$$a_1$$$.

          Let $$$x$$$ be equal to $$$a_i$$$, and let's take two following orders: $$$[a_1, a_2, a_3, \dots, a_k]$$$ and $$$[a_i, a_1, a_2, \dots, a_{i-1}, a_{i+1}, \dots, a_k]$$$. Then in the first case, $$$x \bmod a_1$$$ is non-zero (but less than all $$$a_i$$$, so it is the resulting value), and in the second case, $$$x \bmod a_i = 0$$$.

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

          If the property isn't true, then there is some number (call it m), which isn't a multiple of k.

          Now, feed in X=k to the machine. If the permutation of A is [k,m,kx,ky,kz,...] then our answer is clearly 0.

          However, if our permutation of A is [m,k,kx,ky,kz,...] then clearly since m is not divisible by k (by definition), then the value will be (k%m), and the value after the second step will also be non-zero. The value of the result won't change after the second step, because kx,ky,kz > k. Therefore, the final result in this state is non-zero.

          So our array that included m was therefore unstable.

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

        We can prove using mathematical induction. As BledDest showed that only those sequences may work which contain multiples of smallest number .

        Notation : $$$x$$$ mod $$$(a_1,a_2,a_3)$$$ = $$$((x$$$ mod $$$a_1)$$$ mod $$$a_2)$$$ mod $$$a_3$$$

        Base case : $$$size=2$$$ , consider $$$[a_i,v.a_i]$$$ where $$$v \gt 1$$$ . Take any number $$$x$$$. Then $$$x = p.(v.a_i) + r$$$ , where $$$r \lt v.a_i$$$. Then $$$(x$$$ mod $$$v.a_i)$$$ mod $$$a_i$$$ = $$$r$$$ mod $$$a_i$$$ ,$$$(x$$$ mod $$$a_i )$$$ mod $$$(v.a_i)$$$ = $$$(r$$$ mod $$$a_i)$$$ mod $$$(v.a_i)$$$ = r mod $$$a_i$$$ .

        Assumption : Suppose above is true for size $$$k$$$ i.e $$$[a_1,a_2 ... a_k]$$$. Note that all all elements are multiple of $$$a_1$$$.

        Let us prove for size $$$k+1$$$ i.e $$$[a_1,a_2 ... a_{k+1}]$$$. consider $$$x$$$ mod $$$(a_i,...a_{k+1} ..a_j)$$$ (type 1) and $$$i$$$ not equal to $$$k+1$$$.It will make no difference since $$$a_{k+1}$$$ is not at first position.consider $$$x$$$ mod $$$(a_{k+1} ....a_j)$$$ (type 2) i.e $$$a_{k+1}$$$ is at first position. Then by assumption it will be same for all permutation where $$$a_{k+1}$$$ is at first position. Now we only need to prove that answer for any particular permutation of type 1 and type 2 are same. Let us choose $$$x$$$ mod $$$(a_{k+1},a_1,a_2,a_3.....a_k)$$$ and $$$x$$$ mod $$$(a_1,a_{k+1},a_2,a_3....a_k)$$$. Since $$$x$$$ mod $$$(a_{k+1},a_1)$$$ = $$$x$$$ mod $$$(a_1,a_{k+1})$$$ (from base case proof) hence both are equal . Thus answer is same for all permutation of length $$$k+1$$$.

        I will be thankful if some one points out mistake in above proof.

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

      suppose the gcd you'll take is g, then x=g*q+r, where r is x%g. now if you take x%(n*g) then x%(n*g)=g*(q%n)+r which is some g*q'+r. after repeated divisions when you finally do %g the answer will be q.

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

    couldn't agree more

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

    The round was very similar to AtCoder Beginner Contest, except for F (which I don't dare to even read lol)

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

Why D gets WA on testcase 7.
my submission : 81782286

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

C was really interesting...

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

Solotion of C!!! Please!

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

    I used two ternary-search (one for hot == cold + 1 and one for hot == cold) and compared two final results from each ternary search, but I think there are easier solutions

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

    For all the odd pouring, the temperature at ith pour would be ((i+1)*h/2+(i-1)*c/2) and this has to be equal to t. Now on finding i, the answer would be 2*i-1.

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

    C can be solved in O(1) time.

    This is my submission: 81757911

    If h == t, clearly the answer is 1. If h + c >= 2 * t, the answer is 2 as the most you can lower the average to the target is via the first cold cup.

    Now we consider the case where the average of h and c is less than t.

    We make an observation that now there will be one more hot cup than cold cup, so let the number of cold cups poured in be k. Inclusive of the latest hot cup, the average temperature would now be ((h+c)k + h) / (2k + 1). We would like to find the value of k such that the fraction is closest to t.

    We first solve the equation where ((h+c)k + h) / (2k + 1) == t. We can then obtain h-t = k(2t-h-c) and k = (h-t)/(2t-h-c). We can see that either floor(k) or ceil(k) will give us the closest value to the target, hence we check the difference between ((h+c)k + h) / (2k + 1) and t for floor(k) and ceil(k), thus solving the problem.

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

      Hi, I am unable to understand why when h+c>=2t, answer will be 2. Can you please explain?

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

        When the average is greater than t, the smallest average is obtained by pouring 1 hot and 1 cold cup. The average is the same if there is an equal number of hot and cold cups, and it will increase when there is one more hot cup. Thus, 2 is the minimum number of cups for the average to be closest to t.

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

In problem D, I used Kadane's algorithm and got WA on test 7. Can this algorithm be applied on D?

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

One of the best contests ever. Got to know for the first time(or maybe noticed for the first time) about the modulus property that had to be applied in problem E. Thanks again !!

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

Task C took soul out of me but never showed Accepted

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

Please tell me what is wrong with this solouton for C 81802932 I know I've been silly there but please help me

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

Can D be solved with the DP?

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

    Yes, I solved with DP.

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

    Idk about dp, but i'd like to say it can be solved in nlogn independent of ai's values. Sort a list of indices based where indices with higher ai values come first, and hold a segment tree of the prefix sum values. Now just iterate through your list of indices and add them as boundaries for querying in a set as you go, and for each index find the largest prefix sum greater than and index and the least prefix sum less than an index such that the range is within all the boundaries in your set, then update ret with subtracting those prefix sums minus the current indices value.

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

      It can be solved in O(n) as well independent of ai's value. You can maintain a stack to do so, https://codeforces.me/contest/1359/submission/81806616 .

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

        Wow, very cool!

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

        can you please explain your solution ?

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

          Basically for each index 'i' of array (1-based indexing), I found out what is the rightmost j for which a[j] > a[i] and j < i. Now Assuming this element has to be removed, I maintained a mxl array to maintain max. subarray sum that is ending at [i — 1] for a given 'i'. Note this includes a[i — 1], (no matter if its positive/negative). Now as per the implementation using stack, for left ('L') part, for a given 'i', s.top has 'i — 1' index, so I keep on removing indices from stack for which a[s.top()] <= a[i], but also kept on maintaining the max sum ending at 'i — 1', which includes a[i — 1]. If you observe mxl[s.top()] does not necessary means max sum goes up to indices 2nd topmost element of stack. So to find the mxl[i], you have to make the continuous sum starting from 'i — 1' to the current s.top(), and update the mlx[i] if valid.

          Similar goes for right part.

          And then for each element just assume you are removing it from its range, find what is the max left and right sum within the range.

          Also if you are still having difficulty in understanding this, I would suggest first try solving easy part of this question — Imbalanced Array. The editorial of it have a similar idea.

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

      I solved it in O(n) . I first used Kadane algorithm and then i consider all subsegment which do not contain negative number .submission Edit : now hacked .

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

    Yeah, dp[i][j] = max value you can get with a segment ending at i, with maximum equal to j. The transitions are pretty straightforward (just need to offset negative values).

    Submission: here

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

    $$$dp[index][maxval]$$$ is the maximum sum ending at $$$index$$$ containing $$$maxval$$$ as the max value. Answer is $$$max (dp[index][maxval]-maxval)$$$

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

isn't C binary search why alot of people wa on 2 testcase

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

DELETED

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

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

In q C, my code gave wrong answer in C++17(64) but got accepted in C++14. Happened with anyone?

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

I feel if E was before C it would have more solves

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

Can someone why my submission to problem D, received runtime error on test 2? It was working fine on my local machine.

Thanks

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

In Problem C, I was worried about using floating point numbers, and then thinking about a solution using only integers ...

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

Not brute forcing to find a pattern do be like that sometimes. E would have been significantly easier if it was placed as problem C.

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

hi guys why this solution don't work in pb b THANKS . #include<bits/stdc++.h> using namespace std; typedef long long ll;

int main()
{
    int t;
    cin>>t;
    while(t--)
    {

   int n,m,x,y;
   cin>>n>>m>>x>>y;
   char mat[n][m];
   cin.ignore();
   int ans = 0;
   for(int index=0;index<n;index++)
   {
       int curr = 0;

    for(int j=0;j<m;j++)
   {
       char c;
       cin>>c;

       if(c=='.')
        curr++;
       else{
         ans +=min((y*curr/2+curr%2*x),x*curr);
         curr=0;
       }


   }
   ans +=min((y*curr/2+curr%2*x),x*curr);
   }

   cout<<ans<<endl;
    }

    return 0;
}
»
6 лет назад, скрыть # |
 
Проголосовать: нравится +16 Проголосовать: не нравится

My AC solution of problem F is wrong. Can anyone hack me? Please (>__<).

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

AC problem F, just after the contest... WHY I DIDN'T REMEMBER TO USE 1e-10 INSTEAD OF 0.0 !!!

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

For D, i took : max of (maximum subarray sum ending at index i — max element in that subarray) for all indices i, why doesn't this work?

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

When you missed the last exercise because you didn't round an almost zero value to zero before comparing it with zero. So sad :(

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

Can C be solved using ternary search?

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

Can someone explain the following case for problem D?

11
3 0 1 -2 5 -5 -1 0 3 2 2

The answer is 4 but I'm getting 3 after trying it out by hand and with my code.

Edit: Figured it out. In case anyone's wondering, the max_num at each step when taken from left maybe different from the max_num when taken from the right.

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

Could someone tell me why https://codeforces.me/contest/1359/submission/81809462 gives TLE

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

Can anyone tell hack for C? TIA

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

Video Editorial :- Problem C

I will add editorial for problem D using segment trees soon.

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

Hi! So I was going through the hacks and saw something odd...

https://codeforces.me/contest/1359/submission/81798994

So this guy made a smurf, submitted his own code, and intentionally added code which would fail on certain input. And you can even see that the author's name is still the same! There aren't any points for hacks in this contest, but shouldn't there be some action against this user?

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

How to solve D without using dp ?

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

For the problem C, I think there is always a way to achieve the average temperature equal to c. Let's say, x number of hot cups were poured and y number of cold cups were poured if we solve the equation assuming, the average temperature will eventually be equal to c, we have hx + cy = tx + ty from here, you get x:y = (t-c):(h-t) taking x and y in this ratio should give the answer, so final answer should x+y For example, in the second sample test case given, x = 15, y = 11, the average temperature will come to 30. So, the judgment is wrong for this question. Please advise on my understanding and correct me if i am wrong.

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

can someone hack my C? 81742048

I believe it is wrong :)

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

Here's a proof for $$$E$$$.

Take any index $$$i \neq 1$$$. The condition applied to $$$x = a_1a_2\dots a_k + a_i$$$ in the order $$$a_1,a_2,\dots ,a_k$$$ gives $$$a_i \pmod{a_1}$$$ on each step since this is at most $$$a_1-1$$$ and all modules are greater than that.

Now evaluating in order $$$a_i,a_1,a_2,\dots a_{i-1}, a_{i+1}, \dots a_k$$$ evidently gives $$$0$$$ as $$$a_i | a_1\dots a_k + a_i$$$. Therefore $$$a_i \pmod{a_1}$$$ must be zero, which means $$$a_1|a_i$$$ for all indices $$$i$$$.

Proving that the smallest element dividing all others is enough is not hard. Say $$$r_1 = x \pmod{a_{p_1}}$$$, $$$r_2 = r_1 \pmod{a_{p_2}}, \dots$$$.

Notice that for any $$$r_i$$$ by definition we have $$$r_i = r_{i-1} \pmod{a_{p_i}}$$$ thus $$$a_{p_i}|r_i-r_{i-1}$$$ where we define $$$r_0 = x$$$. Since $$$a_1|a_{p_i}$$$ we must have $$$a_1|r_i-r_{i-1}$$$ for all $$$i$$$. Thus $$$a_1|(r_1-r_0)+(r_2-r_1)+\dots + (r_{k}-r_{k-1}) = r_k-r_0 = r_k-x$$$.

We also know that the result is a non negative integer at most $$$a_1$$$ because once $$$\pmod{a_1}$$$ is applied the result becomes constant as all other modules are bigger. Thus $$$r_k$$$ is always $$$x \pmod{a_1}$$$ no matter what order we do the operations in.

Therefore the problem reduces to finding for each smallest element $$$a$$$, the number of ways in which we can choose $$$a_2 \lt a_3 \lt \dots \lt a_k$$$ integers divisible by it in the range $$$(a,n]$$$.

This is just $$$\displaystyle \sum_{a=1}^{n} \dbinom{\left\lfloor \frac{n-a}{a} \right\rfloor}{k-1}$$$.

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

Today's ques C went like a Game changer for many .

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

what is the approach for D except seg tree! can we solve it using kadane

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

In Problem C, Test Case# 4 999977 17 499998

Judgement is: wrong answer 14th numbers differ — expected: '499981', found: '499979'

But 499979 gives perfact 499998 result and it is < 499981 so why it is not correct answer?

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

Is it possible to solve problem d in O(n), not using a segment tree?

https://codeforces.me/contest/1359/submission/81786125

I merged same consecutive sign elements.

Let's say chunk1 = +, chunk2 = -, chunk3 = + ~~

I judged which one is better between (chunk1 + chunk2 + chunk3) or (chunk1) or (chunk3) I couldn't find why this logic is wrong..

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

Is it possible to solve problem D with Kadane Algorithm + Segment Tree to get max query ?? I tried but I'm getting WA.

E: Just tried doing it going once from forward and other backwards but now TLE.

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

who can tell me about the case 999977 17 499998 why 499981 is better than 499979?

499979 => 499998.0000020001 499983 => 499997.9999979999

is that cause by accuracy?

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

I think educational rounds are going more towards math and heavy implementation nowadays!

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

How to solve B If I can rotate the 2 x 1 tile?

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

Can anyone check my submission of Problem D 81799081 I used kadane's algorithm from left and right. It was AC but now it's hacked.

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

Can anyone please suggest me which compiler is to use?? I am really suffering from this.

81814748 compiler: GNU C++17 (64) — WA

81814723 compiler:GNU C++14 — ACC

I can't get myself out of this.

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

Is there anybody who solved problem C using python? I did a parametric search, but I got WA. I think it's because of the python precision issue...

499979 => 499998.0000020001 499981 => 499997.9999979999

Or should I solve the problem C with a different approach?

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

Here's why I think E was probably easier than even C.

So for E literally the only observation you need to make is that all array elements need to be divisible by atleast 1 number in the array or all elements need to be a multiple of a single number in the array for the array to be stable.

So if n(i) is total possible elements divisible by i then ans = ncr(n(1)-1,k-1) + ncr(n(2)-1,k-1) + and so on. Notice that I'm subtracting 1 because I'm fixing the smallest number in n(i) i.e i and finding the combinations of the rest.

So the code just boils down to:

ll ans=0;
for(int i=1;i<=n;i++){
    ll q=n/i;
    ans=(ans+ncr(q-1,k-1))%p;
}
cout<<ans;
  • »
    »
    6 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    Yes, but how can you be so sure that other arrays will give you different modulo? Apart from checking with bruteforce?

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

      Just imagine 2 numbers a and b where a>b and b is not a multiple of a. Now take a number x=a+1, then x%a and x%b will be different always. Now you can add a couple more numbers along with a and b to make it into a longer array, but the mod(array with a before b) will always be different from mod(array with b before a)

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

    Problem E is easy if you know the tricks, but not easy if you do not.

    Some tricks that we need to know are: - (hardest) Computing nChooseK in mod P space (MOD — 2 trick) - (hard) Recognizing that when you fix the first element of the array, and the appropriate calculation for that is choose(n-1, k-1) - (easy) Using DP to compute factorials quickly

    The problem is definitely suitable for an education round. But, depending on your strengths (whether it's in number theory or implementation), you might think problem E is easy or hard.

    Personally, I found C quite easy — I did a bunch of algebra on paper and then coded it up pretty easily with minimal floating point calculations (despite missing some edge cases)

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

      I think ncr%p is an extremely standard problem. Even if you just know about it, the code can be easily taken from the internet, but yea making the observation may take some time based on one's experience.

      I compared it with C because the implementation of C can be a bit tricky, although the equation can be derived easily. If one uses double they have to be extremely careful.

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

I could upsolve D using 2 segment trees to find min of prefixes and suffixes between given indices. However, I am constantly getting feels of an O(n) solution. Has anybody done this in O(n)? Is it simple enough and could you give a hint?

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

For problem D: We can use the fact that the range of numbers is very small. So, for each number from -30 to +30, we can assume it(let's call it x) as the largest sum and find the maximum sum subarray. For this we can apply modified Kadane's by ignoring the elements > x.

Saw this approach in Ashishgup's code: 81746030

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

I'm unable to hack other people's solutions. I get an "Illegal contest ID" error when I click the hack button. Does anyone know of a work around?

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

OMG!! solving C using equation was much simpler :(

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

Why from the past 4 to 5 contests div. 2 and educational rounds are based on mathematical problems, in place of them algorithmic problems should be asked which test the actual capability of contestant.

PS- Mathematical Questions results in large negative delta :)

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

In pF, is it intended to let $$$O(n^2)$$$ pass?

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

    It was not, but unfortunately we cannot cut it off because of 64-bit compilers. They are not present in Polygon, so we could not test quadratic solutions there — and I don't think that it's possible to cut $$$O(n \log^2 n)$$$ from $$$O(n^2)$$$ on 64-bit compiler under reasonable constraints since $$$O(n \log^2 n)$$$ solution gets almost no performance improvement while switching from C++17 to C++17 64-bit, but $$$O(n^2)$$$ solution becomes more than twice faster.

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

Can somebody tell me how to solve problem C using binary search and if not then why? Thanks in advance.

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

Hi, can anyone explain what I'm getting wrong in my solution? Submission I used binary search, m is the the of cups of hot water. Edit: Figured out the problem, was missing a few conditions that could occur. AC submission

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

Question C sucked life out of me but I could not solve it. Can anyone please tell me my error....81801589. Thanks in Advance....

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

Educational Rounds are meant to fuck java participants! Last time around with that fenwick tree problem and now with Problem C!

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

I was specifically careful not to use doubles (or long doubles) in C, to avoid precision issues. After the contest finished, I find out some participants did use doubles and got AC. I tried to find a case where precision breaks their solution, so I figured out some big values that made the following true: $$$\left\lvert t_b-t \right\rvert = \left\lvert t_{b+1}-t \right\rvert$$$. But these imprecise solutions didn't break with that case. I got kind of upset, since I could've saved time submitting with doubles and gotten less penalty. Does anyone know if there's a logic behind float operations leading to imprecisions? Is there some kind of upper bound for which imprecisions just don't happen? How do I know when it's safe to use floats?

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

Today's Education : 'Don't Believe double.

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

My solution for D:

We iterate over each value v in range [0, 30] and we fix this value to be the maximum value in the segment we will take. We iterate through the array from end to beginning and when we encounter an element with a value greater than our current fixed value v, we set our current best segment value starting from the current idx to 0 (we reset it). Otherwise we take this element and we add it to the best segment we can take starting from the element to the right of this element. Whenever our current segment value is smaller than 0 we set it to 0 again (we will clear the segment). Now for each iteration we set the max possible segment value to current segment valuev. This is easy to code and is just O(31 * N) = O(N).

https://codeforces.me/contest/1359/submission/81819736

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

In Problem C :-> WA code using C++17(64) [in contest time]: https://codeforces.me/contest/1359/submission/81772254

AC code Using C++14 Exact same code [After Contest :( ]: https://codeforces.me/contest/1359/submission/81811049

But, I can't understand why ?

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

In Problem C,

WA in contest time using C++17(64): https://codeforces.me/contest/1359/submission/81772254

AC After contest Using C++14 Exact same code :( : https://codeforces.me/contest/1359/submission/81811049

But i Can't understand Why???

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

Problem C reminded me of JEE calorimetry problems from Heat and Thermodynamics

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

Hello

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

PROBLEM C

For test case

999977 17 499998

Why is minimum number of cups 499981 and not 499979? Calculated temperature for both are equally distant from t.

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

even div 3 E's were better than this E

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

Pardon me if I am wrong but problem C was unfair to most of the participants who tried to solve it through Integer Arithmetic.

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

    I don't know why the community here behaves like this. The same issue when posted above by a red coder got upvotes and here all are downvoting my comment. It is demoralizing. It makes someone think twice before posting his views. Instead of downvoting if people could have replied to this thread that would have helped me to learn something. After all, we all are here to help each other. I tried to solve this problem using integer arithmetic but because of very high precision, I wasn't able to solve it. The same code in C++ 14 passed all the test cases. So, it frustrates when you spend your whole time in a problem and later you discover something like this. I would love it if someone corrects me in reply to this thread.

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

      Did you mean double arithmetic? I'm not seeing any integer-based solutions in your submissions.

      There are many other problems that also have issues with double precision, and I think it was just by chance that C++ 14 worked in this problem. You just have to deal with what you're given sometimes. I wrote a working (but ugly) Java solution during the contest by implementing a fraction class, but I'm sure using BigDecimal would work here if you wanted to have more precision than double.

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

D was a good problem, great way to apply so many different techniques.

My first one was (the one I came up with in the contest): go through the prefix, maintain on $$$ [1, r] $$$ suffix maximums for that prefix and prefix sums. Also maintain in the segment tree $$$ \mathrm{PrefixSum}[i] + \mathrm{PrefSufMax}[i] $$$. Then the answer assuming that the end of segment is in $$$ r $$$ is $$$ \mathrm{PrefixSum}[r] $$$ minus minimum query in the segment tree. Now how to update the maximums and segment tree: just do it naively. $$$ C \leq 30 $$$ and it will work fast enough: this could be proved rigorously if you consider potential function $$$ \Phi(S) := rC - \sum_{[1,r]} \mathrm{PrefSufMax}[i] $$$. But this is seriously overcomplicated stuff (although it appears to be slightly fun). Submission: 81806418 in $$$ \mathcal{O}(n C \log n) $$$.

This one is much more interesting imho. Run kadanes (that must take at least one element), subtract 30, relax the answer, set $$$ a_i = 30 $$$ to $$$ a_i := -\infty $$$. Now kadanes again, $$$ a_i = 29 \rightarrow a_i := -\infty $$$, subtract 29, relax the answer and so on. Submission: 81825489 in $$$ \mathcal{O}(n C) $$$.

I saw people coming up with completely different techniques, quite interested to see what is going to be in the editorial.

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

solution for C using binary search + struct for comparing fractions 81827499

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

I know E was mathematical but still, inmho contest would have been better if E and D swapped positions. Many people use m2.codeforces during the contest, hence don't see standings sometimes.

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

Hey guys, I try to solve problem C, but my code keeps failing at TC 3 (on a seemingly corner case). Can you help me spot the bug?

Here is the code: https://codeforces.me/contest/1359/submission/81828965

Thanks!

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

For Div2C, I'm not sure about this Test case #2:

759542 609405 620256

The correct answer is 2, which implies:

64217.5 = abs(t - (h+c)/2)

But if you use just 1, you get:

10851 = min(abs(h-t), abs(c-t))

which is smaller. Shouldn't the correct answer be 1?

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

Why do we have time for hacking when pretests are so strong?

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

Problem D had a DP solution as well:

If we assume arr[i] is the maximum element in the answer subarray, then we just need to find the maximum subarray starting from (i — 1) going towards left and not having any element greater than arr[i] and similarly for right.

Define solve_left(index, max_allowed) as a function which gives the maximum sum starting from (i — 1) and going towards left and not having any number greater than max_allowed, now it simply terminates if arr[index] > max_allowed otherwise we can try including it and going one step left.

Similary we can do for right, so answer will be maximum of solve_left(i — 1, arr[i]) + solve_right(i + 1, arr[i]) for all such i. This ofcourse works only because arr[i] can't be very large.

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

...where $$$x$$$ is the number of jokers in the winner's hand, and $$$y$$$ is the maximum number of jokers among all other players. If there are two or more players with maximum number of jokers...

Was anybody else thrown off by perceiving the last sentence as referring to "the maximum number of jokers among all other players"? :(

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

how do you solve D?

please don't tell the complete solution.

just tell me along what lines should I be thinking?(apart from segment trees which i have not studied yet:( )

thanks in advance. :)

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

Could someone please mention what is the hack for problem D. So many solutions are failing

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

Problem C can be solved without binary search. There are 3 possible cases

Case 1: h=t

Case 2: number of hot water cups=n and number of cold water cups=n

Case 3: number of hot water cups=n+1 and number of cold water cups=n

we can solve each case separately and select the appropriate answer.

(in case 3, we need to consider both ceil and floor value for answer)

My Submission: https://codeforces.me/contest/1359/submission/81845040

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

    Can you explain how to get the optimal answer from a formula? Because I still don't understand. Thanks in advance.

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

      Let the number of hot cups be p and cold cups be q

      So our value closest to given_temp(t) would be in the form ((h.p)+(c.q))/(p+q)

      For case 1, the minimum count of cups to be poured is obviously 1

      For case 2 p=q=n, our equation would just be ((h.n)+(c.n))/(2.n) [for this case the minimum count of cups to be poured will always be 2]

      For case 3 p=n+1 and q=n, put the values in the equation and equate it to given_temp(t) and solve for n. Then consider both floor and ceil value of n.

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

Most simple solution for D is trying out all maximum values: Solution

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

Help me please!

https://codeforces.me/contest/1359/submission/81801071

why my code is tle?Truly thanks!

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

2 hours since hacking phase got over

Why isn't the system test starting?

»
6 лет назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится
  • Problem C : This Problem Can be Solved Mathematically using inequalities.
Idea
Solution

Link to my solution : 81821029

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

Is it taking longer than usual in rating updation :/ ???

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

Weak pretests for D...solutions which used segtree(without kadane) were very much prone to it!!

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

So many different solutions for D work. even my naive O(nlog^2(n)) solution.

https://codeforces.me/contest/1359/submission/81855994

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

Is someone's luck more broken than my increased rating?

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

CF-Predictor shows -2 in my rating but got +2. Became master with minimum required.

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

Whats going on? Tell me my rank is 3568 in this contest without any wrong submission and my friend also get same rank with wrong submission and he attempted same number of ques

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

C: Could someone please tell why this is failing?

https://codeforces.me/contest/1359/submission/81861059

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

Wait for the editorials is too long!!

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

Can we get a diversity of problems? Problems where we need to use data structures like Trees, Graphs, Union Find, Tries? Now half of the problems are math.

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

when will the editorial be out????

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

My code gives correct answer for Problem C test case 2 in Sublime Text and online compilers but incorrect output by codeforces compiler. Please Help.

Code

Test case-(5th subtask of test case 2)

1

763097 140997 594537

Expected Output- 3

My output in cf-2

My output in other compilers-3

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

can anyone tell me about penalty system? i solved two question without incorrect solution and one of my friend also solved two question with -6 penalty but still got same rank as mine ? how ? and also we both submitted the questions on same time.

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

UPD : Fixed

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

How to solve problem E ?

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

    for first case do some pen and paper work, write down all combination (like : 1,2,3 and 1,2,4 and so on). Than you can see that from all the value of array(a1,a2,...ak) the minimum one should be the divisor of all other value, if any array satisfy this than this is a stable array. So, now you can put (i = 1 to n) every value in the first position of the array and you can choose rest k-1 position from the number of divisors of that i in (n-i). you can do this by ncr, here n is the number of divisor of chosen i in (n-i) and r is k-1.
    Now, why it works. you can observe that when in array a1,a2..ak (the array is sorted) at least 1 value is not divisible by a1 than you can choose that value (for example that value is ak), now if your observe that when the permutation is look like this one : ak, ak-1, ... a1, than the total modulo will be 0 and if you take this permutation : a1,a2,..ak, than total modulo will be different cause ak is not divisble by a1 and that is why (ak%a1) will not be 0 and also will be less than all other value in that array and it will remain same till the end.
    I upsolved this problem, it turned out that E was much easier than C and D. I wish i could try to solve E instead C and D in the contest time. Anyway, i tried to share my approach.

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

    What I could think of was... If you consider a case where there is a number A and you make your array in such a way that the first element is A and then all the other elements are multiples of, you can be sure of following the constraint. If you consider any permutation of this array the answer to the modulus after all the elements will be X%A. You can try out some cases using pen and paper and you will see that is only what happens. So now you want to make an array like this. For this, you can just fix the first element A. Now let us say there are M multiples of A which are <=N. So, now you can choose K-1 from these M multiples doing C(M , K-1) % MOD. Find the summation for all the values of A. And this will be your answer. You can find the number of multiples of each value of A in O(NlogN) and you can compute C(M , K-1) for all of them by pre-computing the factorials and using Fermat's Little Theorem. Overall Time complexity will be O(NLogN)

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

wrong answer ll ans = m/(k-1) + (m%(k-1) >0) ? 1:0 ; right answer ll ans = m/(k-1) ; ans += (m%(k-1) >0) ? 1:0 ; why???

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

When do we get the editorial for the contest?

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

Can somebody please explain the solution for problem F? Long time no editorial:(

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

    Well, there's the intended solution and the brute force solution.

    The intended solution: we'll binary search for the answer. So we need to know whether it's possible for two cars to collide in the first T seconds. For a specific car, the possible points it could be after T seconds form a line segment (from the initial point to the point it would reach after driving for T seconds — it can be anywhere along this segment depending on when it starts). If any two of those segments intersect, it can be arranged for the respective cars to collide, otherwise not. There is a standard (although somewhat complicated) $$$O(n \log n)$$$ line sweep algorithm to decide whether a set of line segments contains any intersections.

    The brute force solution is just to check each pair of cars to find the intersection time. As long as you implement it reasonably efficiently (e.g. make sure you do O(n) rather than O(n²) sqrts) and are careful about rounding errors, it'll pass. You need to consider a few cases: - The cars move in non-parallel directions: solve a system of linear equations, and check that both cars reach the intersection after a positive time. - The cars move in parallel directions, along different lines. - The cars move in parallel directions along the same line, either towards either other, away from each other, or one of each.

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

Problem D :- Dp approach [submission] :D(https://codeforces.me/contest/1359/submission/81882431)

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

Problem D :- Easy Dp approach :D 81882431 check it

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

Editorial not published yet? by the way, great contest! Cheers

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

Hello,

I would like you to help me with this problem https://codeforces.me/contest/1359/problem/C

The expected answer for : h = 999977, c = 17, and t = 499998 is 499981

Shouldn't it be 499979 instead ?

I've checked using this snippet (python 3):

h = 999977
c = 17
t = 499998

def f(a):
   x = a // 2
   return (x * (h + c) + h)/(2 * x + 1)

print(abs(t - f(499981)) - abs(t - f(499979)))
  • »
    »
    6 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится 0 Проголосовать: не нравится

    I'm too working on this problem now.

    I'm also getting 499979 as the answer

    in order to debug printed the range of answer close to the target and their absolute difference.

    for the test case

    1 999977 17 499998

    Debug is printed in the format (how many times we pour water, average temperature, difference of average with the target temperature)

    499977 499998.0000060003 0.0000060002785176038740000
    499979 499998.0000020001 0.0000020000734366476536000 499981 499997.9999979999 -0.0000020000734366476536000 499983 499997.9999939998 -0.0000060002203099429610000 499985 499997.9999899997 -0.0000100003089755773540000

    by this precision 499979 and 499981 trials are closest to t=499998 with same differnce as the problem asks for minimum amount of times with which we can pour water that achieves closest distance 499979 should be the answer.

    Still wanted to know whether there are any precision errors here ? Can anyone help we with this case ? or debug the correct precision ?

    EDIT : Got it from other comments regarding the precision difference :(

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

tutorials are still not published :(

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

Alternative solution for problem D using dp https://ideone.com/wPZS3p

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

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