아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Робот

시간 제한2초메모리 제한512 MB

요약
로봇 이동 문자열의 부분 문자열 중, 실행 중 격자를 벗어나지 않고 바위 칸을 밟지 않는 것의 수를 센다.
난이도

보통10점 중 7점

유형
누적 합, 투 포인터, 해시맵, 구현
정답자
아직 제출이 없습니다

문제

Компания <<Филипп индастриз>> разрабатывает программу для нового робота-марсохода. Участок Марса, на котором будет работать робот, представляет собой квадратное поле размером n×nn \times n, разбитое на квадратные участки размером 1×11 \times 1, некоторые из которых могут содержать скалу (1≤n≤5001 \le n \le 500, не более 500 клеток содержат скалу).

Введем на поле систему координат таким образом, что участки имеют координаты (1,1),(1,2),…,(1,n),(2,1),…,(n,n)(1, 1), (1, 2), \ldots, (1, n), (2, 1), \ldots, (n, n). Программа для робота представляет собой последовательность инструкций, каждая из которых кодируется одной латинской буквой:

  • <<U>> --- переместиться с участка (xx, yy) на участок (xx, y+1y+1).
  • <<D>> --- переместиться с участка (xx, yy) на участок (xx, y−1y-1).
  • <<R>> --- переместиться с участка (xx, yy) на участок (x+1x+1, yy).
  • <<L>> --- переместиться с участка (xx, yy) на участок (x−1x-1, yy).

Для экономии инженеры записывают в память последовательность инструкций ss, пронумерованных от 1 до tt. Затем можно заставить робота выполнить подпрограмму --- одну или несколько следующих подряд инструкций. Каждая подпрограмма, таким образом, характеризуется двумя целыми числами (l,r)(l, r) --- номером первой и последней инструкции в подпрограмме.

В процессе лабораторного эксперимента робот был размещен на некотором участке тестового поля. Будем называть подпрограмму (l,r)(l, r) корректной, если при последовательном выполнении инструкций s\[l],s\[l+1],…,s\[r]s\[l], s\[l+1], \ldots, s\[r] робот не покидает поле и не перемещается на участок со скалой.

По описанию поля, программе для робота и его начальному положению определите, сколько у данной программы существует корректных подпрограмм.

입력

В первой строке входного файла находятся два числа nn и tt (1≤n≤5001 \le n \le 500, 1≤t≤1051 \le t \le 10^5) --- размер поля и количество инструкций в программе робота.

Во второй строке входного файла находится строка ss длины tt --- программа робота. Гарантируется, что строка ss состоит только из символов <<U>>, <<D>>, <<R>> и <<L>>.

Следующие nn строк содержат по nn символов в каждой и задают поле. Символ <<.>> означает, что участок пустой и по нему может перемещаться робот. Символ <<#>> означает, что на участке находится скала. Символ <<@>> означает, что в этой клетке находится стартовая позиция робота. Ось XX направлена слева направо, ось YY --- снизу вверх. Гарантируется, что символ <<@>> встречается ровно один раз, а символ <<#>> встречается не более 500 раз.

출력

В единственной строке выходного файла выведите количество корректных подпрограмм.

힌트

В примере следующие подпрограммы являются корректными: (1,1)(1,1)=<<U>>, (1,2)(1,2)=<<UL>>, (1,3)(1,3)=<<ULU>>, (3,3)(3,3)=<<U>>, (3,4)(3,4)=<<UR>>, (4,4)(4,4)=<<R>>.

예제1

  1. 예제 1

    입력
    4 4
    ULUR
    ..#.
    ....
    .#@.
    #.#.
    
    예상 출력
    6