#1487. TYPING - Luyện gõ phím

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

NGUỒN: ĐỀ THI CHỌN HỌC SINH GIỎI THÀNH PHỐ BẢNG A VÀ CHỌN ĐỘI TUYỂN DỰ THI HỌC SINH GIỎI QUỐC GIA (TỈNH HẢI PHÒNG)
NĂM HỌC 2021 - 2022

Hôm nay trong tiết Tin học, Tài được cô giáo dạy gõ ba ký tự trong tên của mình, chính là T, A, I. Trong Q ngày tới, mỗi ngày cô giáo sẽ đưa cho Tài một xâu chỉ gồm ba ký tự đã nêu trên để cho Tài luyện gõ phím.

Tài chỉ có thể gõ được hai ký tự AT bằng tay trái, hai ký tự TI bằng tay phải. Nghĩa là khi bắt đầu làm bài về nhà của một ngày, Tài có thể chọn dùng một trong hai tay để gõ, sau đó trong quá trình làm bài, Tài phải đổi giữa hai tay nếu cần thiết để gõ được hết các ký tự trong xâu theo thứ tự.

Ví dụ: nếu bài về nhà là xâu ATIA thì Tài có thể gõ như sau:

  • Đầu tiên Tài sẽ gõ ký tự AT bằng tay trái;
  • Đổi sang tay phải để gõ ký tự I;
  • Cuối cùng đổi sang tay trái để gõ nốt ký tự A.

Vậy, Tài phải đổi tay 2 lần để gõ hết xâu ATIA.

Ký hiệu F(S) là số lần ít nhất Tài phải đổi tay để gõ hết xâu S .

Hãy xét hai giá trị S_i X_i lần lượt là xâu ký tự bài về nhà mà cô giáo cho Tài vào ngày thứ i và câu hỏi mà Tài muốn được giải đáp. X_i có thể là một trong hai giá trị sau:

  • Nếu X_i=0 thì Tài muốn biết rằng để hoàn thành bài của ngày thứ i , Tài cần đổi tay ít nhất bao nhiêu lần, hay cụ thể hơn là muốn biết giá trị của F(S_i) ;
  • Nếu X_i=1 thì Tài muốn biết rằng nếu phải gõ riêng biệt tất cả các xâu con liên tiếp của S_i thì Tài sẽ phải đổi tay ít nhất bao nhiêu lần. Cụ thể hơn, gọi G là tập hợp những xâu con liên tiếp của S_i thì Tài muốn tính: \sum\limits_{p \in G} {F\left( p \right)}

Vì đáp án có thể lớn nên Tài chỉ muốn biết phần dư của kết quả trong phép chia cho 10^9+7 .

Dữ liệu:

  • Dòng đầu gồm một số nguyên Q\ (1≤Q≤100) là số ngày Tài phải làm bài tập;
  • Q dòng tiếp theo, mỗi dòng gồm một số nguyên X_i\ (0≤X_i≤1) và một xâu S_i\ (1≤ |S_i| ≤10^5) . Tổng độ dài các xâu S_i trong tất cả Q ngày không vượt quá 4×10^6 .

Kết quả:

  • Ghi ra Q dòng, dòng thứ i\ (1≤i≤Q) là đáp án cho câu hỏi mà Tài muốn được giải đáp vào ngày thứ i .

Ví dụ:

Dữ liệu:

4
0 I
0 ATIA
1 ATIA
1 TAIIII

Kết quả:

0
2
5
8

Giải thích:

Ngày thứ 3 , xâu bài tập về nhà: ATIA X_3=1 :

  • 4 xâu con liên tiếp độ dài 1 : A, T, I, A. Để gõ riêng biệt từng xâu trên, mỗi xâu mất 0 lần đổi tay;
  • 3 xâu con liên tiếp độ dài 2 : AT, TI, IA. Để gõ riêng biệt từng xâu trên, chỉ có xâu IA phải đổi tay 1 lần;
  • 2 xâu con liên tiếp độ dài 3 : ATI, TIA. Để gõ riêng biệt từng xâu trên, mỗi xâu phải đổi tay 1 lần;
  • 1 xâu con liên tiếp độ dài 4 : ATIA, để gõ xâu này phải đổi tay 2 lần.

Vậy để gõ riêng biệt tất cả xâu con liên tiếp của xâu ATIA cần đổi tay ít nhất 5 lần.

Giới hạn:

  • Subtask \#1: ( 40\% số điểm): X_i=0, \forall 1≤i≤Q) ;
  • Subtask \#2: ( 40\% số điểm): Bài tập về nhà của Tài không có ký tự T;
  • Subtask \#3: ( 20\% số điểm): Không có ràng buộc bổ sung.