ko_osaga's blog

By ko_osaga, history, 5 years ago, In English

http://hsin.hr/coci

40 minutes left. Enjoy!

  • Vote: I like it
  • +49
  • Vote: I do not like it

| Write comment?
»
5 years ago, # |
Rev. 2   Vote: I like it +3 Vote: I do not like it

How to solve problem E?

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

    Minimum answer is max degree.

    If max degree  ≤  1, we can just color all edges in one color.

    Else, let's split edges of the graph into two sets, such that max degree will be  ≤  (max degree + 1) / 2 in each of these two sets. You can do it with euler circuit, add some dummy vertex to the left and right part, and connect with them vertices with odd degree (and maybe you need to connect them if they have odd degree). And then color the edges into two colors by order of euler circuit. Then separate all inital edges into two groups by the color. Then let's solve recursively for these two sets, and then just merge the answers.

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

how to solve problem D for 100% ?

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

    All you need to do is summon mkisic (task author) to the rescue :)

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

    As mkisic is occupied by Maja, I will explain the solution.

    Imagine fixating a row. Now make an array where the value of a field is the number of consecutive fields empty in the up direction. So now we have a problem of findning the sum of areas of all rectangles in a histogram. We can solve the problem in two ways, one is in O(N log N) using divide and conquer and the other one is using stack in O(N).

    I will explain the divide and conquer solution. Using segment tree we can fin the minimum in an interval. Now we want to count the sum of areas of all rectangles whose botom side is in our fixated row and whose height is smaller than or equal to the smallest element in that interval. It is not hard to come up with a formula. Now we proceed with the divide and conquer on the two intervals we get by splitting at the minimum. Notice that you have to be careful not to count some rectangles twice, but this can be easily avoided.

    Insted of using the segment tree to find out those intervals, you can do a simmilar thing with a montone stack.

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

      thanks very much ppavic . I understand solution. if it will be possible to solve problem on some judge, i will do it.

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

Where can I submit solutions?

»
5 years ago, # |
Rev. 2   Vote: I like it -29 Vote: I do not like it

deleted