JOI 2015 Final Camp - Ngày 1

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 JOI 2015 - Copy and Paste 2 100 (p) 1.0s 256M
2 JOI 2015 - En-JOI-able Logo Design 100 (p) 1.0s 256M
3 JOI 2015 - Growing Vegetables is Fun 2 100 (p) 1.0s 256M
4 JOI 2015 - IOIOI Cards 100 (p) 1.0s 256M

1. JOI 2015 - Copy and Paste 2

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Ban đầu nội dung tệp là xâu \(S\). Có \(N\) thao tác. Thao tác \(i\) sao chép đoạn từ vị trí \(A_i\) đến ngay trước vị trí \(B_i\), rồi chèn bản sao tại vị trí \(C_i\). Vị trí \(x\) là khe ngay sau \(x\) ký tự đầu tiên, nên vị trí 0 ở đầu xâu và vị trí bằng độ dài ở cuối xâu. Các chỉ số trong thao tác đều được hiểu trên xâu trước thao tác.

Nếu sau khi chèn, độ dài vượt quá \(M\), các ký tự bên phải bị xóa cho đến khi còn đúng \(M\) ký tự. Hãy tìm \(K\) ký tự đầu sau tất cả thao tác.

Dữ liệu vào

  • Dòng 1: \(K,M\).
  • Dòng 2: xâu ban đầu \(S\).
  • Dòng 3: \(N\).
  • \(N\) dòng tiếp: \(A_i,B_i,C_i\).

Dữ liệu ra

In \(K\) ký tự đầu của xâu cuối cùng.

Ràng buộc

  • \(1\le K\le200,\quad1\le M\le10^9,\quad1\le N\le200\,000\).

\(S\) chỉ gồm chữ thường a đến z, và

  • \(K\le |S|\le\min(M,200\,000)\).

Nếu \(L_i\) là độ dài ngay trước thao tác \(i\) thì

  • \(0\le A_i<B_i\le L_i,\qquad0\le C_i\le L_i\).

Phân nhóm

  • Nhóm 1 (10 điểm): \(M,N\le2000\).
  • Nhóm 2 (90 điểm): không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
2 18
copypaste
4
3 6 8
1 5 2
4 12 1
17 18 0
Output
ac
Giải thích

Trong ví dụ 1, các xâu lần lượt là copypastypae, coopyppypastypae, cyppypastoopyppypa, rồi acyppypastoopyppyp; vì vậy hai ký tự đầu là ac.

Ví dụ 2

Input
6 100
jjooii
3
5 6 2
4 6 1
1 2 3
Output
joioji

2. JOI 2015 - En-JOI-able Logo Design

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Với số nguyên \(k\ge0\), một dãy JOI cấp \(k\) được định nghĩa như sau:

  • Cấp 0 là một ký tự J, O hoặc I.
  • Dãy cấp \(k+1\) dài \(4^{k+1}\): \(4^k\) ký tự đầu đều là J, \(4^k\) ký tự tiếp đều là O, \(4^k\) ký tự tiếp đều là I, và \(4^k\) ký tự cuối tạo thành một dãy JOI cấp \(k\).

\(4^K\) ký tự J, O, I viết trên một vòng tròn. Được phép thay đổi một số ký tự. Hãy tìm số thay đổi ít nhất để khi chọn một điểm bắt đầu thích hợp và đọc một vòng theo chiều kim đồng hồ, ta được một dãy JOI cấp \(K\).

Dữ liệu vào

Dòng đầu chứa \(K\). Dòng sau là xâu dài \(4^K\), thu được khi đọc vòng tròn từ một điểm cố định theo chiều kim đồng hồ.

Dữ liệu ra

In số ký tự ít nhất phải thay đổi.

Ràng buộc

\[ 1\le K\le10. \]

Phân nhóm

  • Nhóm 1 (30 điểm): \(K\le5\).
  • Nhóm 2 (70 điểm): không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
1
IJOI
Output
0
Giải thích

Ở ví dụ 1, bắt đầu từ ký tự J cho chuỗi JOII, là dãy cấp 1.

Ví dụ 2

Input
2
JJOIJJOJOIOJOOOI
Output
7
Giải thích

Ở ví dụ 2, sau bảy thay đổi có thể đọc được JJJJOOOOIIIIJOIJ, là dãy cấp 2.

3. JOI 2015 - Growing Vegetables is Fun 2

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Khu vườn có \(N\) ô từ tây sang đông; cây IOI \(i\) cao \(H_i\), bán được \(P_i\) yên nếu ra quả. Vào mùa xuân, JOI có thể nhổ cây \(i\) với chi phí \(C_i\); cây bị nhổ sẽ chết.

Một cây còn lại ra quả khi và chỉ khi không có cây còn lại cao hơn nó ở phía tây, hoặc không có cây còn lại cao hơn nó ở phía đông. Lợi nhuận bằng tổng giá bán cây ra quả trừ tổng chi phí nhổ. Hãy tối đa hóa lợi nhuận.

Dữ liệu vào

Dòng đầu chứa \(N\). Mỗi trong \(N\) dòng sau chứa \(H_i,P_i,C_i\).

Dữ liệu ra

In lợi nhuận lớn nhất.

Ràng buộc

\[ 3\le N\le100\,000, \]
\[ 1\le H_i,P_i,C_i\le10^9. \]

Phân nhóm

  • Nhóm 1 (10 điểm): \(N\le20\).
  • Nhóm 2 (10 điểm): \(N\le300\).
  • Nhóm 3 (10 điểm): \(N\le5000\).
  • Nhóm 4 (50 điểm): mọi \(H_i\) đôi một khác nhau.
  • Nhóm 5 (20 điểm): không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
7
22 60 30
46 40 30
36 100 50
11 140 120
38 120 20
24 90 60
53 50 20
Output
320
Giải thích

Trong ví dụ 1, nhổ cây 2 và 7. Các cây còn lại là 1, 3, 4, 5, 6; cây 4 không ra quả, bốn cây kia ra quả. Lợi nhuận là \(60+100+120+90-30-20=320\).

Ví dụ 2

Input
5
18 150 180
18 380 250
18 140 170
17 180 900
14 150 520
Output
1000
Giải thích

Trong ví dụ 2, không cần nhổ cây nào và mọi cây đều ra quả.

Ví dụ 3

Input
8
52 156 59
15 166 185
16 122 115
24 161 154
44 252 678
32 225 557
44 155 254
59 57 253
Output
854

4. JOI 2015 - IOIOI Cards

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Có các thẻ ghi I ở mặt trước và O ở mặt sau. Ban đầu xếp lần lượt \(A\) thẻ ngửa, \(B\) thẻ úp, \(C\) thẻ ngửa, \(D\) thẻ úp, rồi \(E\) thẻ ngửa.

\(N\) loại thao tác. Loại \(i\) lật mọi thẻ từ vị trí \(L_i\) đến \(R_i\), tốn \(R_i-L_i+1\) giây. Phải thực hiện ít nhất một thao tác; được chọn thứ tự tùy ý và dùng một loại nhiều lần. Hãy tìm thời gian nhỏ nhất để mọi thẻ đều ngửa, hoặc xác định rằng không thể.

Dữ liệu vào

  • Dòng 1: \(A,B,C,D,E\).
  • Dòng 2: \(N\).
  • \(N\) dòng tiếp: \(L_i,R_i\).

Dữ liệu ra

In thời gian nhỏ nhất, hoặc -1 nếu không thể thành công.

Ràng buộc

\[ 1\le A,B,C,D,E,N\le100\,000, \]
\[ 1\le L_i\le R_i\le A+B+C+D+E. \]

Phân nhóm

  • Nhóm 1 (15 điểm): \(N\le10\).
  • Nhóm 2 (50 điểm): \(A,B,C,D,E\le50\).
  • Nhóm 3 (35 điểm): không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
1 2 3 4 5
3
2 3
2 6
4 10
Output
12
Giải thích

Ở ví dụ 1, ban đầu là IOOIIIOOOOIIIII. Dùng thao tác 2 rồi 3 tạo ra toàn ký tự I, tốn \(5+7=12\) giây.

Ví dụ 2

Input
1 1 1 1 1
1
1 1
Output
-1