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

Автор shivn, история, 13 месяцев назад, По-английски

There are n tickets numbered from 1 to n. Each ticket has a price given by the array price[] and the number of points that you will get after purchasing the ticket is given in another array points[]. You have x amount of money. You need to find out the maximum number of points you can get.

Constraints are 1<=n<=36 1<=price[i]<=1e9 for all i from 1 to n 1<=points[i]<=1e9 for all i from 1 to n and x<=1e9

I am not able to come up with the optimised approach to the problem. Can someone help me to solve this!!

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

»
13 месяцев назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

Just Looking at constraints and problem statement gives me feel of Meet in the middle Algorithm.

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

    Yeah it is. Find all subsets for first half and second half. Now for each subset in the first half let's say it has cost c, you need to find the maximum points you can get in the second half under with cost <=x-c. This can be done with stl sets or something

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

      Thanks!

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

      Isn't that knapsack dp?

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

        Check constraints.

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

          Oh yea. Mb, didn't notice it said 10^9. I guess maybe you could use coordinate compression. (Idk if you'll take my suggestion as I'm only a newbie... :/)

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

            Coordinate compression doesn't work. Worst case you'll find 10^9 distinct elements anyway

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

            In coordinate compression you will need to consider all the number of points that can score which are <=x. So it won't work here.

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

              Knapsack doesn't require considering all points though, Don't you just need to do a coord-compression and then do the mitm knapsack dp?