trang chủ / bài tập / santarobot

Robot trên lưới

Đề bài

Mô tả

Một robot di chuyển trên lưới nguyên vô hạn, chỉ đi dọc theo các đường lưới.

Người ta đưa cho robot một dãy m điểm nguyên p1,p2,,pm. Gọi p0 là vị trí xuất phát của robot. Robot lần lượt đi từ p0 đến p1, rồi từ p1 đến p2, ..., cho đến pm. Ở mỗi chặng, robot chọn một đường đi ngắn nhất bất kỳ giữa hai điểm liên tiếp (vì chỉ đi theo đường lưới nên có thể có nhiều đường đi ngắn nhất cùng độ dài). Các điểm trong dãy có thể trùng nhau, khi đó robot ghé qua điểm đó đúng số lần nó xuất hiện.

Dãy điểm nay đã bị mất, nhưng robot còn lưu lại nhật ký các bước đi đơn vị của mình: một xâu gồm n ký tự trong {L,R,U,D}, ký tự thứ k cho biết hướng của bước đi đơn vị thứ k (L: sang trái, R: sang phải, U: lên trên, D: xuống dưới).

Hãy tìm độ dài m nhỏ nhất có thể của dãy điểm.

Dữ liệu vào

  • Dòng đầu chứa số nguyên dương n là số bước đi đơn vị mà robot đã thực hiện.
  • Dòng thứ hai chứa nhật ký di chuyển: xâu gồm n ký tự, mỗi ký tự thuộc {L,R,U,D}.

Dữ liệu ra

Một số nguyên duy nhất: độ dài nhỏ nhất có thể của dãy điểm.

Ràng buộc

  • 1n2·105

Ví dụ

Input Output Giải thích
4
RURD
2 Ba bước RUR là một đường đi ngắn nhất tới điểm p1; bước D còn lại tạo thành chặng thứ hai. Không thể gộp cả bốn bước vào một chặng vì chúng chứa cả U lẫn D.
6
RRULDD
2 RRU là một đường đi ngắn nhất, LDD là đường đi ngắn nhất của chặng sau.
4
LRLR
4 Hai bước liên tiếp bất kỳ đều gồm một cặp hướng ngược nhau, nên mỗi bước phải là một chặng riêng. Mỗi điểm được đếm đúng số lần xuất hiện trong dãy.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 csc 6.12.0.200 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 kotlinc 2.4.10 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0