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

Автор vatsal, 7 лет назад, По-английски

How do I solve this DP problem? Notice the word "tunnel" in the problem statement which confused me. https://www.e-olymp.com/en/problems/5852

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

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

How the word ``tunnel'' can confuse???

DP subproblems should be: "What minimal distance magus should walk to get from start vertex to vertex #i, using not more than j bridges?".

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

    I think tunnel means that no 2 bridges can intersect. Yes, i figured out that dp. It will be kn^2 right.

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

      I implemented the DP you told but I got WA.

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

        A typical mistake solving this problem is to consider (incorrectly!) that no returns can be useful. Sometimes they may be. For example, look picture at the top of page 195 of http://ws.kh.ua/media/sbornik/Sbornik2010.pdf, assuming that K = 2 (only two bridges are allowed), neither AE nor FJ bridges are allowed because they intersect surface near C and near H respectively, and neither AJ nor AH nor CJ bridges are allowed because each of these segments' length is greater than R (maximal length of bridge).

        (That book is in Russian, but you may at least look at the picture and at equations.)

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

          Which bridges are not allowed? 1) Those whose distance are more than R 2) Those which intersect the line formed by joining the points

          Am I correct?

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

            Yes, except that some points or segments of the bridge can touch the surface of the earth.

            In other words, bridge cannot go under earth surface (polygonal chain), but some vertice or some segments of polygonal chain may belong to some bridges. For example, if we have polygonal chain

            0 10
            1 0
            2 10
            3 0
            4 10
            

            and R ≥ 4, we may build a single bridge from 0 10 to 4 10, although the bridge comes through 2 10

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
  1. This question was duplicated in http://codeforces.me/blog/entry/59717

  2. This looks like this problem is used in some current contest, so let's wait for some days before further answering.

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

    Hey! I am still unable to solve the problem can you please help!!

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

    Now?

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

      Well, AFAIK it's much more efficient not to check does given bridge intersect surface, but to build graph of all possible bridges in a special algorithm stage before (main) DP stage. In this way, it's quite easy to build all O(N2) bridges totally in Θ(N2) time and O(N2) space.

      For example, to build all possible bridges from vertex v1 (1-based), one can maintain "current maximal slope" (let's name it maxSlope). It's initialized as v1v2 vector (vector(v[1],v[2]) in notation of pseudocode below); then,

      for each further i, 
        if vector(v[1],v[i]) is counterclockwise or co-directed with maxSlope 
        {
          if dist(v[1],v[i])<=R
          {
            bridges between v[1] and v[i] is allowed
          }
          maxSlope is re-assigned as vector(v[1],v[i])
        }
      
»
6 лет назад, # |
Rev. 2   Проголосовать: нравится +10 Проголосовать: не нравится

H-m, it looks like checking of this problem at e-olymp.com is incorrect. Try at ejudge.ckipo.edu.ua, contest #16 "Upsolving of Ilya Porublyov's and DrPepper's day of ISSPS'13 // Дорешивание дня Ильи Порублёва и команды DrPepper ISSPS'13", problems F and G respectively (F for smaller constraints, G for full). (There are no English-language statements at that site, but one can switch its interface to English.)

I've already sent bug report to e-olymp.com admin, but still have no reply for it.