pstopia Notes for Problem Solving Contest

[Medium] TurtleSpy

Topcoder SRM 538 Div1

Problem

우리는 우리가 원하는 rotate 명령만 수행하도록 할 수 있다. 원하지 않는 rotate 명령을 맨 마지막에 몰아서 하면 결과가 바뀌지 않기 때문이다. backward 명령이 하나도 없다면 먼저 forward 명령을 모두 수행해서 최대한 진행한 후 남은 rotate 명령을 수행하면 된다. backward 명령이 존재하면 어떻게 해야할까? 먼저 forward 명령으로 최대한 진행한 뒤에 backward 명령을 수행할 때 원점과 최대한 멀리 떨어질 수 있도록 rotate 명령을 적절히 선택하여 180도에 최대한 가깝게 회전한 후 남은 backward 명령을 한번에 수행하면 될 것이다. 결국 주어진 rotate 명령들 중에 일부를 적절하게 골라 180도에 최대한 가깝게 회전하는 것이 문제의 목표이고 이것은 DP로 쉽게 계산할 수 있다.