| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | JOI 2014 - Factories | 100 (p) | 6.0s | 512M |
| 2 | JOI 2014 - Fortune Telling 2 | 100 (p) | 2.0s | 256M |
| 3 | JOI 2014 - Space Pirate | 100 (p) | 2.0s | 512M |
Trong Vương quốc IOI có \(N\) thành phố, được đánh số từ \(0\) đến \(N-1\). Các thành phố được nối bởi \(N-1\) con đường hai chiều, và có thể đi từ bất kỳ thành phố nào đến bất kỳ thành phố nào khác.
Vương quốc có nhiều công ty sản xuất linh kiện đặc biệt. Mỗi công ty chỉ sản xuất một loại linh kiện, và không có hai công ty nào sản xuất cùng một loại. Mỗi công ty có ít nhất một nhà máy; mỗi nhà máy nằm tại một thành phố, và một thành phố có thể có nhà máy của nhiều công ty.
Đôi khi một công ty cần linh kiện của một công ty khác. Nếu công ty \(C_A\) cần linh kiện của công ty \(C_B\) với \(C_A \ne C_B\), linh kiện có thể được vận chuyển từ bất kỳ nhà máy nào của \(C_B\) đến bất kỳ nhà máy nào của \(C_A\). Hai nhà máy được chọn sao cho khoảng cách vận chuyển là nhỏ nhất.
Cho cây đường của vương quốc và \(Q\) truy vấn. Trong truy vấn thứ \(j\), công ty \(U_j\) có nhà máy tại các thành phố \(X_{j,0},\ldots,X_{j,S_j-1}\) cần linh kiện của công ty \(V_j\) có nhà máy tại các thành phố \(Y_{j,0},\ldots,Y_{j,T_j-1}\). Với mỗi truy vấn, hãy trả về khoảng cách vận chuyển nhỏ nhất.
Bài nộp phải khai báo:
#include "factories.h"
và cài đặt chính xác hai hàm sau:
void Init(int N, int A[], int B[], int D[]);
long long Query(int S, int X[], int T, int Y[]);
Hàm Init được gọi đúng một lần lúc bắt đầu.
N là số thành phố.A, B, D là các mảng độ dài \(N-1\).D[i] nối A[i] và B[i].Hàm Query được gọi một lần cho mỗi truy vấn.
S và T lần lượt là số thành phố có nhà máy của hai công ty.X là mảng độ dài S chứa các thành phố có nhà máy của công ty cần nhận linh kiện.Y là mảng độ dài T chứa các thành phố có nhà máy của công ty cung cấp linh kiện.X và một thành phố trong Y.Bài nộp không được cài đặt hàm main.
Bộ chấm mẫu đọc:
Bộ chấm mẫu in giá trị trả về bởi từng lời gọi Query, mỗi giá trị trên một dòng.
X và Y nằm trong đoạn \([0,N-1]\).X và Y đôi một khác nhau.Ví dụ 1
7 3
0 1 4
1 2 4
2 3 5
2 4 6
4 5 5
1 6 3
2 2
0 6
3 4
3 2
0 1 3
4 6
1 1
2
5
12
3
11
Giáo sư K dùng \(N\) lá bài để bói kết quả của đoàn Nhật Bản tại IOI. Hai mặt của lá bài thứ \(i\) lần lượt ghi các số nguyên \(A_i\) và \(B_i\); hai số này không nhất thiết bằng nhau.
Ban đầu, tất cả lá bài được đặt sao cho mặt ghi \(A_i\) hướng lên. Sau đó, với mỗi \(j=1,2,\ldots,K\), giáo sư thực hiện thao tác sau: lật mọi lá bài có số đang hiện không lớn hơn \(T_j\).
Kết quả bói toán là tổng các số hiện trên bàn sau khi hoàn thành cả \(K\) thao tác. Hãy tính kết quả đó.
In ra tổng các số hiện trên các lá bài sau khi hoàn thành mọi thao tác.
Ví dụ 1
5 3
4 6
9 1
8 8
4 2
3 7
8
2
9
18
Ban đầu, các số hiện trên bàn là \(4,9,8,4,3\).
Tổng cuối cùng là \(4+1+8+2+3=18\).
Trong một thiên hà xa xôi có \(N\) hành tinh, được đánh số từ \(1\) đến \(N\). Mỗi hành tinh có đúng một máy dịch chuyển với đích đến cố định, và máy dịch chuyển chỉ hoạt động theo một chiều.
Triển lãm hiện tại của Bảo tàng Nghệ thuật Đế quốc Thiên hà được tổ chức tại hành tinh \(1\). Triển lãm tiếp theo sẽ được tổ chức tại hành tinh đạt được sau khi dùng máy dịch chuyển đúng \(K\) lần, bắt đầu từ hành tinh \(1\).
Một tên cướp không gian sẽ xâm nhập hệ thống của đúng một hành tinh \(a\) và ghi đè đích đến của máy dịch chuyển tại đó thành hành tinh \(b\). Cảnh sát không biết cụ thể \(a\) và \(b\).
Với mỗi hành tinh \(i\), hãy tính số cặp có thứ tự \((a,b)\) sao cho sau thay đổi này, triển lãm tiếp theo được tổ chức tại hành tinh \(i\).
In \(N\) dòng. Dòng thứ \(i\) chứa số cặp \((a,b)\) khiến hành tinh đạt được sau đúng \(K\) lần dịch chuyển từ hành tinh \(1\) là \(i\).
Ví dụ 1
5 7
5
1
4
3
2
1
2
3
3
16
Chẳng hạn, với \((a,b)=(1,4)\), đường đi là \(1\to4\to3\to4\to3\to4\to3\to4\), nên triển lãm tiếp theo ở hành tinh \(4\). Có đúng ba cặp dẫn đến hành tinh \(4\): \((1,4)\), \((2,4)\) và \((5,3)\).
Ví dụ 2
40 57
9
24
1
28
29
5
9
1
36
5
35
14
14
29
28
34
28
4
34
36
33
11
22
23
10
18
26
33
36
15
37
31
27
16
25
37
6
31
21
31
4
2
1
12
18
9
1
1
15
0
4
0
0
2
0
11
0
12
0
2
0
0
1
0
5
12
13
13
34
0
5
1
15
10
8
1351
36
1
0
1