USACO 2013 - What's Up With Gravity

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

Thuyền trưởng Bovidian đang phiêu lưu để giải cứu thành viên trong thủy thủ đoàn của mình, Tiến sĩ Beefalo. Giống như mọi cuộc phiêu lưu vĩ đại, câu chuyện này diễn ra trên một lưới hai chiều \(N \times M\) (\(1 \le N, M \le 500\)), biểu diễn góc nhìn từ bên hông thế giới của thuyền trưởng. Một số ô lưới trống, còn những ô khác bị chặn và không thể đi qua.

Không may, Thuyền trưởng Bovidian không thể nhảy. Cô phải tuân theo các quy luật vật lý sau khi di chuyển trong thế giới của mình:

  1. Nếu không có ô nào ngay bên dưới Thuyền trưởng Bovidian (nghĩa là nếu cô đang ở mép lưới), cô sẽ bay ra ngoài không gian và thất bại trong nhiệm vụ.
  2. Nếu ô ngay bên dưới Thuyền trưởng Bovidian trống, cô sẽ rơi vào ô đó.
  3. Nếu không:
    • a) Thuyền trưởng Bovidian có thể di chuyển sang trái hoặc sang phải nếu ô tương ứng tồn tại và trống.
    • b) Hoặc Thuyền trưởng Bovidian có thể đảo chiều trọng lực.

Khi Thuyền trưởng Bovidian đổi chiều trọng lực, ô “bên dưới” cô (như được nhắc đến trong quy tắc 1 và 2) chuyển đổi qua lại giữa ô có chỉ số hàng lớn hơn một và ô có chỉ số hàng nhỏ hơn một (hàng đầu tiên trong dữ liệu vào có chỉ số 1 và hàng cuối cùng có chỉ số \(N\)). Ban đầu, các ô có chỉ số hàng lớn hơn một nằm bên dưới Thuyền trưởng Bovidian.

Tiến sĩ Beefalo bị lạc đâu đó trong thế giới này. Hãy giúp Thuyền trưởng Bovidian đến ô của cô ấy với số lần đảo chiều trọng lực ít nhất có thể. Nếu không thể đến được chỗ Tiến sĩ Beefalo, hãy in ra -1.

Dữ liệu vào

  • Dòng 1 chứa hai số nguyên \(N\)\(M\), cách nhau bởi một dấu cách.
  • Các dòng từ 2 đến \(1+N\): dòng \(i+1\) mô tả hàng thứ \(i\) trong thế giới của Thuyền trưởng Bovidian; . biểu thị một ô trống, # biểu thị một ô bị chặn, C biểu thị vị trí ban đầu của Thuyền trưởng Bovidian và D biểu thị vị trí ban đầu của Tiến sĩ Beefalo.

Dữ liệu ra

  • Dòng 1 chứa một số nguyên duy nhất là số lần ít nhất Thuyền trưởng Bovidian phải đảo chiều trọng lực để đến chỗ Tiến sĩ Beefalo, hoặc -1 nếu không thể đến chỗ Tiến sĩ Beefalo.

Ví dụ

Ví dụ 1

Input
5 5
#####
#...#
#...D
#C...
##.##
Output
3
Giải thích

Thuyền trưởng bắt đầu ở vị trí \((4, 2)\). Cô đảo chiều trọng lực và rơi tới vị trí \((2, 2)\), sau đó di chuyển sang phải hai lần để đến \((2, 4)\). Cô lại đảo chiều trọng lực và rơi tới vị trí \((4, 4)\), rồi di chuyển sang phải một lần đến vị trí \((4, 5)\). Cuối cùng, cô đảo chiều trọng lực một lần nữa để rơi tới vị trí của Tiến sĩ Beefalo tại \((3, 5)\).

Nguồn

USACO 2013 US Open, Silver — Problem 1: What's Up With Gravity

Tác giả đề: Mark Gordon, 2013.

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: