USACO 2012 - Wrong Directions

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Farmer John vừa mua một chiếc máy kéo lập trình được đời mới rất hiện đại. Để điều khiển máy kéo di chuyển, ông nhập một xâu độ dài \(N\) (\(1 \leq N \leq 100\,000\)) chỉ gồm các ký tự F, LR. Mỗi ký tự F ra lệnh cho máy kéo tiến về phía trước một đơn vị, còn các ký tự LR lần lượt khiến máy kéo rẽ trái và rẽ phải \(90\) độ. Ban đầu, máy kéo ở gốc tọa độ \((0,0)\) và quay mặt về phía bắc.

Sau khi lập trình máy kéo bằng cách nhập xâu lệnh dự định, FJ nhớ ra rằng mình đã gõ sai đúng một ký tự trong xâu lệnh, nhưng ông không nhớ đó là ký tự nào! Chẳng hạn, ông có thể đã gõ F hoặc L tại vị trí mà xâu dự định chứa ký tự R. Hãy tính số vị trí khác nhau trên mặt phẳng mà máy kéo có thể dừng lại do lỗi này (hướng mà máy kéo quay mặt khi ở vị trí cuối cùng không quan trọng).

Dữ liệu vào

Dòng đầu tiên chứa xâu lệnh mà Farmer John dự định nhập.

Dữ liệu ra

In ra số vị trí mà máy kéo có thể dừng lại, với điều kiện FJ gõ sai một trong các ký tự của xâu lệnh.

Ví dụ

Ví dụ 1

Input
FF
Output
3
Giải thích

Farmer John muốn máy kéo tiến về phía trước hai lần và trong trường hợp lý tưởng sẽ dừng tại vị trí \((0,2)\).

Có 4 xâu lệnh bị gõ sai có thể xảy ra: FL, FR, LFRF. Chúng lần lượt đưa máy kéo tới \((0,1)\), \((0,1)\), \((-1,0)\)\((1,0)\), tổng cộng là 3 vị trí phân biệt.

Nguồn

USACO 2012 March Contest, Bronze Division — Wrong Directions. Tác giả đề: Brian Dean (2012).

https://usaco.org/index.php?page=viewproblem2&cpid=123

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: