ko_osaga's blog

By ko_osaga, history, 4 weeks ago, In English,

http://hsin.hr/coci

40 minutes left. Enjoy!

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

»
4 weeks ago, # |
Rev. 2   Vote: I like it +3 Vote: I do not like it

How to solve problem E?

  • »
    »
    4 weeks 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.

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

      It's weird that they put a studied problem in their contest... the problem sounded general enough for it to be well known.

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

        Yeah, the second paper was in my to-do list, and this contest gave me an opportunity to read it. :)

    • »
      »
      »
      4 weeks ago, # ^ |
        Vote: I like it +1 Vote: I do not like it

      Is there a way to view the first paper without paying?

»
4 weeks ago, # |
  Vote: I like it +15 Vote: I do not like it

how to solve problem D for 100% ?

  • »
    »
    4 weeks 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 :)

  • »
    »
    3 weeks 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.

    • »
      »
      »
      3 weeks 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.

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

Where can I submit solutions?