| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2010 - a + b problem | 100 (p) | 1.0s | 64M |
| 2 | JOI 2010 - DNA Synthesizer | 100 (p) | 1.0s | 64M |
| 3 | JOI 2010 - Regions | 100 (p) | 1.0s | 64M |
Cho hai số nguyên rất lớn được biểu diễn bằng các đoạn chữ số liên tiếp.
Hãy viết chương trình tính và in ra tổng của hai số nguyên.
Đọc từ đầu vào chuẩn. Hai số nguyên cần cộng được cho lần lượt theo định dạng sau:
Giả sử biểu diễn thập phân của tổng hai số nguyên, từ chữ số có hàng cao nhất đến chữ số có hàng thấp nhất, gồm \(L_1\) chữ số \(A_1\), rồi \(L_2\) chữ số \(A_2\), \(\ldots\), rồi \(L_M\) chữ số \(A_M\), trong đó \(0\le A_i\le9\), \(L_i\ge1\), \(A_1\ne0\) và \(A_i\ne A_{i+1}\) với \(1\le i\le M-1\).
In ra đầu ra chuẩn \(M+1\) dòng:
Lưu ý quan trọng: Các giá trị \(L_i\) không nhất thiết nằm trong phạm vi biểu diễn của kiểu số nguyên 32 bit. Cần sử dụng kiểu dữ liệu 64 bit, chẳng hạn long long.
Các điều kiện sau áp dụng cho phần dữ liệu biểu diễn của mỗi số nguyên:
Bài này có tổng cộng \(100\) điểm, gồm \(10\) bộ dữ liệu, mỗi bộ \(10\) điểm.
Ví dụ 1
3
1 3
2 4
3 5
3
9 4
8 3
7 2
4
1 2
2 8
1 1
0 1
Hai số nguyên được cho trong đầu vào là \(111222233333\) và \(999988877\). Tổng của chúng là \(112222222210\), nên đầu ra như trên.
Một phương pháp tổng hợp chuỗi DNA mới từ hai chuỗi DNA chỉ gồm các ký tự A, T, G, C đã được phát triển. Nếu phần đầu của một chuỗi và phần cuối của chuỗi kia có một đoạn chung liên tiếp gồm ít nhất một ký tự, ta có thể nối hai chuỗi bằng cách gộp hai đoạn chung này thành một.
Ví dụ, TTTATGC và ATGCAAA có đoạn chung ATGC ở cuối chuỗi thứ nhất và đầu chuỗi thứ hai, nên có thể nối chúng để tổng hợp chuỗi TTTATGCAAA. Ngoài ra, từ hai chuỗi AAA, ta có thể tổng hợp được cả chuỗi AAAA lẫn chuỗi AAAAA.
Để phát triển một loại thuốc mới, người ta muốn tổng hợp một chuỗi DNA nhất định từ các chuỗi DNA cơ sở có trong phòng thí nghiệm.
Phòng thí nghiệm có \(N\) loại chuỗi DNA cơ sở. Hãy viết chương trình tìm số chuỗi DNA cơ sở ít nhất cần dùng để tổng hợp chuỗi DNA đích bằng phương pháp nối trên. Nguồn dự trữ các chuỗi DNA cơ sở rất dồi dào, nên có thể sử dụng cùng một loại bao nhiêu lần tùy ý. Trong mọi bộ dữ liệu chấm, luôn tồn tại một cách kết hợp các chuỗi DNA cơ sở để thu được chuỗi DNA đích.
Đọc từ đầu vào chuẩn:
A, T, G, C, biểu diễn chuỗi DNA đích.A, T, G, C, biểu diễn một loại chuỗi DNA cơ sở. Không có hai chuỗi DNA cơ sở trùng nhau trong danh sách này.In ra đầu ra chuẩn một số nguyên là số chuỗi DNA cơ sở ít nhất cần dùng.
Trong kỳ thi gốc, kích thước ngăn xếp (stack) chỉ bị giới hạn bởi giới hạn bộ nhớ của bài, không có giới hạn riêng nhỏ hơn.
Số loại chuỗi DNA cơ sở \(N\) không vượt quá \(50\,000\).
Bài này có tổng cộng \(100\) điểm, gồm \(10\) bộ dữ liệu, mỗi bộ \(10\) điểm.
Ví dụ 1
5
ATATATGCCCAT
ATAT
ATG
GCCC
GCCCAT
CAT
4
Lưu ý rằng có thể sử dụng cùng một loại chuỗi DNA cơ sở nhiều lần.
Ví dụ 2
1
AAAAAAAAAA
AAA
5
Từ hai chuỗi AAA, ta có thể tổng hợp được cả chuỗi AAAA lẫn chuỗi AAAAA.
Ví dụ 3
2
ATATATATAT
ATA
TAT
5
Đất nước JOI có \(N\) thành phố, được đánh số từ \(1\) đến \(N\). Các thành phố được nối với nhau bằng những con đường hai chiều tạo thành một cây. Nghĩa là giữa hai thành phố bất kỳ đều có thể đi lại theo các con đường, và đường đi đó là duy nhất. Khi đó, có \(N-1\) con đường.
Người ta quyết định chia các thành phố thành \(M\) vùng. Mỗi vùng phải chứa ít nhất một thành phố, và mỗi thành phố phải thuộc đúng một vùng. Ngoài ra, giữa hai thành phố bất kỳ trong cùng một vùng phải có thể đi lại theo các con đường mà không đi qua thành phố nào ngoài vùng đó.
Người ta muốn chia vùng sao cho giá trị lớn nhất trong các đường kính của các vùng, ký hiệu là \(d_{\max}\), nhỏ nhất có thể. Đường kính của một vùng là khoảng cách lớn nhất giữa hai thành phố thuộc vùng đó. Khoảng cách giữa hai thành phố là tổng độ dài các con đường trên đường đi nối chúng. Nếu một vùng chỉ chứa một thành phố thì đường kính của vùng đó được quy ước bằng \(0\).
Cho thông tin về các con đường và số vùng cần chia, hãy viết chương trình tính giá trị nhỏ nhất có thể của \(d_{\max}\).
Đọc từ đầu vào chuẩn:
In ra đầu ra chuẩn một số nguyên là giá trị nhỏ nhất có thể của \(d_{\max}\).
Trong kỳ thi gốc, kích thước ngăn xếp (stack) chỉ bị giới hạn bởi giới hạn bộ nhớ của bài, không có giới hạn riêng nhỏ hơn.
\(2\le N\le30\,000\): số thành phố.
Bài này có tổng cộng \(100\) điểm, gồm \(10\) bộ dữ liệu, mỗi bộ \(10\) điểm.
Ví dụ 1
5 2
1 4 2
2 3 3
2 4 1
4 5 1
3
Chia thành hai vùng: một vùng gồm các thành phố \(1,4,5\) và một vùng gồm các thành phố \(2,3\). Khi đó \(d_{\max}=3\), và đây là giá trị tối ưu.
Ví dụ 2
5 3
1 4 2
2 3 3
2 4 1
4 5 1
2
Chia thành ba vùng: một vùng chỉ gồm thành phố \(1\), một vùng gồm các thành phố \(2,4,5\), và một vùng chỉ gồm thành phố \(3\). Khi đó \(d_{\max}=2\), và đây là giá trị tối ưu.