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

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

Hi,

I am stuck at 2001D - Longest Max Min Subsequence. My logic is similar to other accepted solutions. Also, my solution works for all the small test cases I can find from other people's accepted solutions. Some test cases are big and truncated on CF, so I could not test my code with those cases.

Can someone please point out the bug/ provide a test case for which the code does not work?

Thanks in advance.

My submission: 280104081

my solution

Полный текст и комментарии »

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

Автор DhurBaal, история, 2 года назад, По-английски

This is not a programming competition problem. This is a paraphrase of a problem I am trying to solve at my job.


A graph G consists of N nodes where every node has some positive value. Graph G is a connected, dense graph where edges are bi-directional and the number of edges can go up to O(N^2).

To traverse an edge we have to pay a tax equal to the edge's weight. The weight of an edge depends on its two node's values. If the value of two connected nodes is vA and vB, calc_weight(vA, vB) returns the weight of the edge. Please refer to the clarification section to understand why we can not pre-calculate all the weights.

We start with some initial value (let's call it amount). From a predefined source node, our goal is to reach the predefined destination node, with minimum tax paying. Both the source and destination are present in the graph.

Clarification:

At some arbitrary moment, let's assume we are at nodeA and the value of nodeA is valA. And at that moment our amount is amtA. Let's consider nodeB has a bi-directional edge from nodeA. If we want to go nodeA -> nodeB, we first have to calculate the edge's weight.

The catch is when we are at a node, we have to call weightAB = calc_weight(amtA+valA, valB). See how our presence affects the parameters of the function.

we then pay weightAB from amtA and when we reach nodeB our amount becomes amtB = (amtA-weightAB). If we want to go to nodeB -> nodeC, the weight will be calc_weight(amtB+valB, valC).

I can solve this problem using a bitmaskDP. But N can reach up to 2000.

Thanks in advance for any ideas/suggestions. Also if you have seen any problem that closely resembles this, please point me in that direction.

Полный текст и комментарии »

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