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

Автор Sereja, 12 лет назад, По-русски

Всем привет!

Совсем скоро, 27 апреля в 19:30 MSK состоится Codeforces Round #243, автором которого являюсь я. Это мой одиннадцатый раунд на Codeforces и я надеюсь, что не последний.

Спасибо Геральду Агапову (Gerald) и Ярославу Твердохлебу (KADR) за помощь в подготовке раунда и Марии Беловой (Delinur) за перевод условий на английский.

Настоятельно рекомендую прочитать условия ВСЕХ задач.

Разбалловка в первом дивизионе 500-1000-1500-2000-2000. Во втором стандарт.

Gl & hf ! :)

Разбор.
Статистика.

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

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

Thanks for the recommendation. :)

This information might be handy during the competition.

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

Ого, даже оповещение по почте вовремя пришло Оо

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

Ура!!! Наконец-то раунд от Sereja!

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

nice to have the regular rounds back :)

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

Another Sereja round to enjoy. Thanks and good luck to everyone :D

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

И снова раунд от любимого автора, будет интересно)

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

Русский делает тебя успешным:)

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

ًWhat's meant by Gl & hf ?

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

hey sereja ! u r my best consest writer. I think u prepare too smart problems :)

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

Time for some Sereja and [?] problems ... :-)

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

Lets hope for math/ad-hoc problems!

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

yeeeeeeeeeeeeeeeees , another Sereja round

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

yes , another Sereja round :D

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

3^5-ый раунд, однако.

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

I strongly recommend you to read ALL the problems.

Not usually written by other authors... :)

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

Эх, обидно пропускать раунд от любимого автора.

P.s. у меня предложение добавить авторов в список контестов в том числе и в те к которым обратный отсчет.

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

Thanks for your efforts for preparing problems:)

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

*standard — not standart ;)

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

А я уже надеялся что будут взломы...

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

Problem D : I think that you wanted to say : two cells are connected if they are adjacent in sAme row or sAme column of the table NOT : two cells are connected if they are adjacent in sOme row or sOme column of the table

Am I right ? ;)

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

DELETED

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

Задачки класса "давай домой во второй див". Чтоб хоть немного самооценку вернуть

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

What is the approach to solve Div2 C / Div1 A?

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

Its a pity that, Div1 D is same as this ONTAK problem

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

Div1 D was same as this ONTAK problem

EDIT : Also it exist at stackoverflow

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

    Yes, it seems that it is a very well-known problem.

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

    Is there any detailed analysis of the complexity?

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

    The one on StackOverflow does not requires sides parallel to axis.

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

    Btw, I like how the answer on StackOverflow which is clearly the most valuable has -1 votes :)

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

      Because it just contains a link. Link-only answers are only valuable as long as the link is valid, so they are very susceptible to link-rot. One is expected to at least summarize the contents of the linked resource so that the answer does not lose its value if the link goes dead. Note that this particular answer does not even mention the title of the paper, which could be used to locate the resource later.

      Also I feel that pointing to a 23-page paper does not cut it for this problem. At the very least I would expect the poster to point to the page where the actual problem of finding squares is addressed. But I would really prefer to see a paraphrased overview over the algorithm, so that I can quickly examine whether it actually addresses the problem without reading through pages of scientific notation. Remember that Stack Overflow is for regular users not necessarily with a background in Computer Science.

      Stack Overflow still has the vision to create an archive of programming knowledge for the future, not just to make a single question asker happy for the moment.

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

what is the idea behind the problem D(div 1) ?

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

    I had an solution. A square is uniquely defined by its 2 top (or 2 bottom etc.) points. Split the horizontal lines into large (at least points on the line) and small (otherwise); then, there are just squares whose 2 top points lie on a small line, same for those whose 2 bottom points lie on a small line and 2 top ones on a large one.

    There are at most large lines. For each point on one of these lines and each line below it, you can also check if there's a square for which these are 2 right points. There are also these questions.

    How to check the existence of many pairs of points (out of which all lie on 1 horizontal line)? Just make a vector saying if there's a point with some x-coordinate. You can do this for many lines with 1 vector, taking just O(1) time per query + O(N) time amortized for filling and cleaning the vector.

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

    Or you could use the fact that unordered_set is extremely fast and write something very short like this: click ^_^

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

У Вас было, что в задаче С (див 2) на семплы программа дает верные ответы, а система пишет "Неверний ответ на претест 1" или это было только у меня?

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

Paper for problem D and harder versions of it!!!

Link

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

    Uhm, this paper is about checking if set of points contains desired figure, not about counting them.

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

      But the algorithm can be easily used to count number of figures.

      It's proved in the article that there's at most O(N1.5) squares in the plane and existence of the square is checked using brute force over all possible candidates.

      I used this article to solve this problem. Is there faster approach than O(N1.5log(N))? log(N) is for checking if the point is in set and I think we can avoid that logarithm but what about better estimation than O(N1.5)?

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

How to solve B ? It was awsome. :)) But I did not get the idea.

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

И, как обычно..

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

very strong pretests
low chance for hacks

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

Такое чувство, что С была просто на "заметь, что 103 ≤ e".

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

when will the ratings be updated?

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

на Д по-видимому слабые тесты. Моя решение прошло, хотя не должно было. Локально у меня на некоторые тесты рабоатет 10 сек

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

Div.1 B What about this case, what's the answer please? 3 4 10 1 0 1 1 0 0 1 1 1 1 1 1

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

I could not understand the problem C correctly until someone explained to me after the contest. a quote from the problem statement "the element of sequence a with the maximum index among the chosen ones must be equal to the element of sequence b with the maximum index among the chosen ones; remove the chosen elements from the sequences."

If the maximum indices of two chosen values are equal, it means you take same number of elements from the sequence, isn't it? Shouldn't the wording be "the index of sequence a with the maximum value" instead of "the element of sequence a with the maximum index"?

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

why is rating update delayed?

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

What exactly is the special point of test 22 of Problem B(Div 2)? Many got WA.

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

Good round, thanks.

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

Мое решение на div1 A слетело на тесте 1 1 -1 . На самом глупом тесте....

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

WTF? В RCC Warmup я ничего не решил, при этом сильно опустившись в рейтинге. Сегодня решил две задачи, сопоставимые по сложности с Warmup'ом, и опустился еще ниже. Капитан объективность тихо плачет в подушку.

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

The problems in div1 are pretty good except problem D. Problem D in div1 is so classic that so many people have solved it before (at least I knew several well-known OJs have problems almost the same). And its time limit is so tight I thought. I first used std::set but got TLE at pretest 13 several times. But I changed my code to use lower_bound in a sorted std::vector, I got accepted. That's why I thought its time limit is too tight somehow. Does anyone agree with me?

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

    No, I don't agree with you. Using operations like lower_bound take log N complexity, so you got complexity O(n^3/2 log n) instead of O(n^3/2) so you shouldn't be surprised that you got TLE. Even more — tests weren't in fact maxtests. They could have been more time-demanding.

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

    Besides, set<> has a large constant factor. Sorting is generally much faster than set<> operations, and this could serve as a lesson for you to prefer sorting in the future.

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

    I got my solution passed after changing from finding a point in O(log (n^2)) (i.e. 2 log n) to O(log n). Simply store a set for each possible x instead for all. However, I think the time limit is fine after all.

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

    Look at my solution 6490475

    Although I aware of N^1.5 solution, my solution, which base on two pointer method is O(N^2)

    If the test case is strong enough to contains test which is two far away parallel line ( <0,0>, <100000,0>, <0,1>, <100000,1>, ... ) my program would be easily TLE

    I realize it after the contest already end. So I'm lucky one to pass the problem D

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

At least to me, C/Div.2 was much easier to implement than B/Div.2. Any one thinks the same?

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

Ам, а где разбор или я чего-то не вижу дайте ссылку если есть заранее спасибо;

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

По поводу качества тестов к задаче D. Зачем сильно себя напрягать, если можно написать решение, работающее за квадрат:6505142? Оно на тесте из двух прямых q=i/2;w=i%2; работает 5 секунд, но это не важно. Авторские проходит.

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

My solution for D problem got AC luckily. I have thought that the complexity of my solution is O(n^1.5) but it is really O(n^2). For each point, my solution calculate right points, below points, and right-below points, then use three pointer to count how many square. The complexity become O(n^2) in this kind of input:

20
0 1
0 2
0 3
0 4
0 5
0 6
6 1
6 2
6 3
6 4
6 5
6 6
6 7
6 8
6 9
6 10
6 11
6 12
6 13
6 14

Execute the solution with larger input (with the same type of above input), I have the following statistic: - In my computer, Intel Pentium 2.2GHz, n=100000, the time is 22.312s - In my computer, compile with -O2, n=100000, the time is 3.444s I can not try to run the solution in Codeforces because my input is larger than 256KB (my input is 1020KB)