AminAnvari's blog

By AminAnvari, 3 years ago, In English,

Hi :)
These are some segment tree problems on codeforces. Ofcourse it is not complete and I hope we will complete it with your help. And great thank to magar0_o for helping me.

UPD : more Segment Tree

Classic :
339D - Ксюша и битовые операции
356A - Рыцарский турнир
459D - Задача Пашмака и Пармиды
61E - Противник слаб
380C - Сережа и скобочки
474F - Муравьиная колония
292E - Копирование данных
501D - Миша и сложение перестановок
220E - Маленький Слоник, а также инверсии
338E - Оптимизировать!
19D - Точки
351D - Джефф и удаление периодов
515E - Drazil и парк
540E - Бесконечные инверсии
609F - Лягушки и комары
594D - REQ
455E - Функция

Lazy Propagating:
52C - Циклические RMQ
145E - Счастливые запросы
558E - Простое задание
240F - TorCoder
446C - DZY любит числа Фибоначчи
115E - Гонки в Линейном Королевстве
438D - Ребенок и последовательность
121E - Счастливый массив
610E - Перестановки алфавита
580E - Кефа и часы

Segment tree with Vector:
369E - Валера и запросы
610D - Вика и отрезки

Offline Query:
301D - Ярослав и делители
500E - Новогоднее домино

Segment Tree & Dp:
474E - Столбы
597C - Подпоследовательности
56E - Принцип домино

Segment Tree & Bits:
482B - Интересный массив
242E - XOR на отрезке

Segment Tree & Tree:
383C - Дерево подвижных сумм
343D - Водяное дерево
173E - Отдыхаем группами
276E - Девочка и задача про дерево
396C - О меняющемся дереве
516D - Drazil и утренняя зарядка
375D - Дерево и запросы

titles are not tag :))

Discussion of Segment Tree
 
 
 
 
  • Vote: I like it  
  • +174
  • Vote: I do not like it  

»
3 years ago, # |
  Vote: I like it +3 Vote: I do not like it

Thank you MR anvari

»
3 years ago, # |
  Vote: I like it +6 Vote: I do not like it

omG Tnx AA :D

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

This should also help.

»
3 years ago, # |
  Vote: I like it +6 Vote: I do not like it
»
3 years ago, # |
  Vote: I like it +3 Vote: I do not like it

Segment tree on string: Letter Array

»
3 years ago, # |
  Vote: I like it +8 Vote: I do not like it

Hackerrank's advanced level problems on segment trees are nice too. Check them out.

»
3 years ago, # |
  Vote: I like it +16 Vote: I do not like it

I was looking for this everywhere , i think it will be great helpful for me Thank you.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

How come i can only see problem names in russian?

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Umm... right now it can't be seen in english, which I believe most of us need, it would be great to show it like this: [problem code] [english name] / [russian name]

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +3 Vote: I do not like it

      Now you can see problems in English :))

      • »
        »
        »
        »
        2 years ago, # ^ |
        Rev. 2   Vote: I like it +3 Vote: I do not like it

        Again they are in russian; Why ?

        UPD You fixed that again, but in my comment it is russian yet,how to fix it?

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Is 356A — Knight Tournament a segment tree problem?

  • »
    »
    20 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    A little bit late ;-) Yes, it is possible to solve it with a segment tree. But instead of updating a single value and querying for ranges, you have to invert it so that you can modify an interval and get access to each element. Additionally you have to make sure that you insert the fights in the reversed order, otherwise some fights will overwrite others. Here is my implementation: 23198751

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

This should be updated with the problem links in this post. How can it be done ??

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it
»
20 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Wow! This will be so much helpful to many. Thanks for the effort!

»
18 months ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

Titles of the problems appear in Russian in this blog post. Is it possible to change to English? (I remember it was in English previously. Maybe some settings changed for me.)

»
18 months ago, # |
  Vote: I like it 0 Vote: I do not like it

760E is also a segment tree problem

»
17 months ago, # |
  Vote: I like it -13 Vote: I do not like it

This question(570C) can also be solved using segment tree.Here is my solution.

  • »
    »
    14 months ago, # ^ |
      Vote: I like it +20 Vote: I do not like it

    That's overkill. There exists an easier and faster solution for that problem.

»
16 months ago, # |
  Vote: I like it +1 Vote: I do not like it
»
14 months ago, # |
  Vote: I like it +7 Vote: I do not like it

You can also find many Segment Tree problems on A2 Online Judge. They are ranked by their difficulty, and also including many online judges like codeforces, SPOJ, codechef etc.

»
14 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Segment tree + DP problem : D. Babaei and Birthday Cake

»
14 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Can anyone help me with this? I don't know how use a segment tree in order to solve the problem. I solved this using a C++ set. Thanks in advance.

»
14 months ago, # |
  Vote: I like it 0 Vote: I do not like it

How to solve 459D using a segment tree? I solved it using Fenwick tree but I could not think of a solution using segment tree.

»
14 months ago, # |
  Vote: I like it 0 Vote: I do not like it

This blog contains 20 Segment tree Problems (Easy, Medium, hard) along with there solutions. Hope it helps someone.

http://codeforces.com/blog/entry/46602

»
13 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Shouldn't 292E — Copying Data be under the "Lazy Propagation" section?

If not, how to solve this problem using just classic segment tree?

Nice list, by the way.

  • »
    »
    11 months ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    I solved it using Lazy Propagation, I couldn't find a way without it, I join the request for a non-lazy-propagation solution.

»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

How to solve Enemy is Weak Problem using segment tree,I'm not able to understand the editorial.

Links Problem Enemy is Weak

Editorial blogpost

  • »
    »
    12 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    1 Let's use coordinate compression on a[i]. Then we have all the a[i] in the range (0, N].

    2 Let's create new array b[MAXN].

    b[i] — amount of j what a [j] > a [i] and j < i.

    It can be done with Fenwick or Segment tree.

    for (int i = 1; i <= n; i++){
      b [i] = get (a[i] + 1, n);
      upd(a [i], 1); 
    }
    

    3 Answer will be sum of d [i].

    d[i] — sum of all b [j] what j < i and a [j] > a [i].

    for (int i = 1; i <= n; i++){
      d[i] = get (a[i] + 1, n);
      upd(a [i], b [i]);
    }
    

    Sorry For My English

    • »
      »
      »
      12 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Thank you for helping, your comments means a lot to me. :-)

      Here's my well commented code (to help people who are stuck on this problem) 29129951

»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Thanks !! It was very very helpful.

»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Thanks a lot bud. Finally a compilation of segtrees problems in codeforces

»
11 months ago, # |
  Vote: I like it 0 Vote: I do not like it

tysm

»
9 months ago, # |
  Vote: I like it 0 Vote: I do not like it

877E — segment tree on tree

»
8 months ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

Why the code is showing TLE for Xenia and Bit operation. http://codeforces.com/contest/339/submission/33017272

»
8 months ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

377D - Разработка игры

605D - Настольная игра — segment tree and ...

...

540E - Бесконечные инверсии does not really require segment tree, Fenwick tree is enough.

»
8 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Great effort!!

»
6 months ago, # |
  Vote: I like it 0 Vote: I do not like it

920F - SUM и REPLACE

could solve with segment... :))

  • »
    »
    6 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Do you need lazy propagation? That was my idea in-contest but couldn't implement it right.

»
6 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Easy!

»
5 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Can someone explain , how to solve http://codeforces.com/contest/459/problem/D using segment tree . I tried to solve it using merge sort tree but got TLE . Then , i could solve it using BIT and map .

»
4 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Problem link

Can anyone help me out? I m stuck and not able to find any editorial for it.

  • »
    »
    2 months ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    For every query of type 1, calculate the amount of shift needed towards right (this will be x-y). Example: 1 5 12 16. Shift needed towards right is 5-12 = -7. So here our query starts at y-1(index is 0-based) and ends at y+k-1. For a query range shift is same for all the indices. Imagine here indices 11 to 26 are shifted towards right by -7(therefore towards left by 7).

    Our segment tree will contain two variables in every node:

    1. The shift of the segment

    2. -1 or 0 denoting the segment has been overwritten by array 'a', 0 if not.

    Query will be of two types:

    1. Update a range[qs, qe]

    2. Answer what is b[x]

    Lazy propagation works here. At the start of both the queries if the second value of the node is -1 pass the first value to both its children(if they are present) and set both the values of the node equal to 0. Query type 2 returns two variables: the shift; and, the second value of the node(-1 or 0). If it's -1 ans is a[shift+x] else b[shift+x], x should be adjusted to 0-based index. Note: If the second value of a node is 0, first value(the shift of the segment) is always 0.

    Link to the code: http://codeforces.com/contest/292/submission/39273711

»
3 months ago, # |
  Vote: I like it +3 Vote: I do not like it

958C3 - Encryption (hard) ==> dp + segment(bit)

it's a good problem for practice in my opinion :)

»
3 months ago, # |
  Vote: I like it 0 Vote: I do not like it

can someone please tell me how to build segment tree in knight tournament problem??Your text to link here...

»
7 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it
»
4 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

How is https://codeforces.com/contest/438/problem/D a lazy propagation problem?