Viết chương trình, với mỗi K cặp thành phố cho trước, tìm độ dài của con đường ngắn nhất và dài nhất trên đường đi giữa 2 thành phố này.. Mỗi dòng trong số N-1 dòng tiếp theo chứa 3 số n
Trang 1SPOJ – Lowest Common Ancestor – LCA
SPOJ – Above the Median – KMEDIAN →
SPOJ – LUBENICA – LUBENICA
Posted on 11/01/2015by connhangheovodanh
SPOJ – LUBENICA – LUBENICA
Mạng lưới giao thông ở 1 nước bao gồm N thành phố (đánh số từ 1 đến N) và N-1 đường nối các thành phố với nhau Có một đường đi duy nhất giữa mỗi cặp thành phố Mỗi con đường có một độ dài xác định.
Viết chương trình, với mỗi K cặp thành phố cho trước, tìm độ dài của con đường ngắn nhất và dài nhất trên đường đi giữa 2 thành phố này.
Dữ liệu
Dòng đầu tiên chứa số nguyên N, 2 ≤ N ≤ 100 000.
Mỗi dòng trong số N-1 dòng tiếp theo chứa 3 số nguyên A, B, C cho biết có một con
đường độ dài C giữa thành phố A và thành phố B Độ dài của mỗi con đường là số nguyên dương không vượt quá 1000000.
Dòng tiếp theo chứa số nguyên K, 1 ≤ K ≤ 100 000.
Mỗi dòng trong số K dòng tiếp theo chứa 2 số nguyên D và E – chỉ số của 2 thành phố cần truy vấn.
Kết qủa
Mỗi dòng trong số K dòng chứa 2 số nguyên – độ dài của con đường ngắn nhất và dài nhất trên đường nối giữa 2 thành phố tương ứng.
Ví dụ
D li u: ữ ệ
5
2 3 100
4 3 200
1 5 150
1 3 50
Trang 22 4
3 5
1 2
K t q a ế ủ
100 200
50 150
50 100
SPOJ – STONE1 – R ả i s ỏ i
Xét trò chơi rải sỏi với một người chơi như sau:
Cho cây T và một đống sỏi gồm K viên Ở mỗi bước người ta lấy 1 viên sỏi từ đống sỏi
và đặt vào một nút lá tuỳ ý Nếu nút p có r nút lá và tất cả các nút lá đều đã có sỏi thì người ta gom tất cả các viên sỏi ở các nút lá lại, đặt 1 viên ở nút p, xoá các nút lá và trả
r – 1 viên sỏi còn lại vào đống sỏi.
Trò chơi kết thúc khi đã đặt được 1 viên sỏi vào nút gốc
Yêu cầu: cho cây T, xác định số viên sỏi tối thiểu cần có để trò chơi có thể kết thúc Cây có n nút (N <= 400), nút gốc được đánh số 1.
Input
Dòng đầu: số n.
Một số dòng tiếp theo, mỗi dòng có dạng: i m i1 i2 … im Trong đó m là số nút con của nút i; i1, i2, …, im: các nút con của nút i.
Output
Số lượng viên sỏi ít nhất cần có.
Example
Input:
7
1 2 2 3
2 2 5 4
3 2 6 7
Output:
3
Posted on 23/07/2014by connhangheovodanh
Trang 3ĐỀ BÀI :
Lucky Numbers – LUCKYNUM – SPOJ
Trong một số nước châu Á, 8 và 6 được coi là những chữ số may mắn Bất cứ số
nguyên nào chỉ chứa chữ số 8 và 6 được coi là số may mắn, ví dụ 6, 8, 66,
668, 88, 886 … Nguyên là một học sinh rất thích toán Nguyên thích các
số may mắn nhưng chỉ thích các số có dạng
S = 8…86…6
trong đó S có ít nhất một chữ số và chữ số 6 và 8 không nhất thiết phải đồng
thời xuất hiện Ví dụ, 8, 88, 6, 66, 86, 886, 8866 … là các số có dạng S Cho trước một số nguyên dương X (1 < X < 10 000), Nguyên muốn tìm số may
mắn nhỏ nhất dạng S, có không quá 200 chữ số và chia hết cho X
Nhiệm vụ của bạn là viết một chương trình tìm số đó cho Nguyên
Dữ liệu vào
Dữ liệu vào gồm nhiều bộ dữ liệu tương ứng với nhiều test Dòng đầu tiên chứa
một số nguyên dương không lớn hơn 20 là số lượng các bộ dữ liệu Các dòng tiếp theo chứa các bộ dữ liệu
Trên mỗi dòng tiếp theo chứa một số nguyên X tương ứng với mỗi bộ dữ liệu
Dữ liệu ra
Với mỗi bộ dữ liệu, ghi ra trên một dòng số may mắn dạng S nhỏ nhất chia hết
cho X Trường hợp không tồn tại số S có không quá 200 chữ số như vậy, ghi -1
Ví dụ
D li u vào ữ ệ
4
6
8
43
5
D li u ra ữ ệ
6
8
86
-1
VOI05 Bộ sưu tập – COLLECT – SPOJ
Trang 4Posted on 23/07/2014by connhangheovodanh
ĐỀ BÀI :
VOI05 B ộ s ư u t ậ p – COLLECT – SPOJ
Một bộ sưu tập tiền xu cổ được coi là có giá trị phải gồm không ít hơn Z 0 đồng
đầu của Alibaba có một số lượng nhất định các đồng tiền vàng, bạc và đồng nhưng chưa phải là một bộ sưu tập có giá trị
Tại Trụ sở của Hiệp hội những người sưu tầm tiền cổ có đặt một máy đổi tiền để
giúp hội viên đổi được các bộ sưu tập có giá trị
Tuy nhiên, máy đổi chỉ hỗ trợ việc đổi tiền trọn gói theo quy tắc đổi gói (Z1, S1,
M1) lấy gói (Z2, S2, M2) đồng tiền Các quy tắc đổi tiền khác nhau từng đôi một, được gán số hiệu tuần tự 1,2,3, và được công bố trước Hội viên
có thể tạo gói tiền thích hợp từ bộ sưu tập của mình để thực hiện việc đổi tiền Các đồng tiền nhận được sau mỗi lần đổi được gộp lại với các đồng tiền mà hội viên đang có để thành một bộ sưu tập mới và có thể được sử dụng để đổi trong những lần sau nếu cần Số lần đổi không hạn chế, tuy nhiên, là người thực dụng, Alibaba luôn cố gắng giảm tới mức tối đa số lần đổi tiền Mặt khác, để ngăn chặn việc đầu cơ, Hiệp hội quy định, trong
mọi thời điểm, mỗi hội viên không được giữ quá 4 đồng tiền mỗi
loại và không được phép đổi tiếp khi đã đổi được một bộ sưu tập
có giá trị.
Yêu cầu: Cho biết số lượng các đồng tiền vàng, bạc, đồng mà Alibaba có ban đầu
và các quy tắc đổi tiền Hãy chỉ ra tất cả các bộ sưu tập tiền cổ có giá trị
mà Alibaba có thể có được sau một số lần đổi không vượt quá k cho trước
Input
Dòng đầu ghi số nguyên dương K ( K <= 1000 )
Dòng thứ 2 ghi 6 số nguyên không âm Z, S, M, Z 0 , S 0 , M 0 ( 0 <= Z, S, M, Z 0 ,
Các dòng tiếp theo mỗi dòng ghi 6 số nguyên không âm Z 1 , S 1 , M 1 , Z 2 , S 2 ,
M 2 xác định một quy tắc đổi tiền (0 <= Z1, S1, M1, Z2, S2, M2 <= 4 )
Output
Nếu không tồn tại cách đổi để có được bộ sưu tập có giá trị, file kết quả chỉ gồm
một số -1
Trang 5Trong trường hợp ngược lại, dòng đầu ghi số v là số các bộ tiền cổ có giá trị mà
Alibaba có thể đổi được
Dòng thứ i trong v dòng tiếp theo ghi 4 số nguyên Z i , S i , M i , k i mô tả bộ sưu tập
có giá trị thứ i và số lần đổi ki ít nhất không vượt quá k cần thực hiện để có
được bộ sưu tập ấy ( Các bộ Z i , S i , M i phải đưa ra theo thứ tự từ
điển )
Posted on 13/06/2014by connhangheovodanh
ĐỀ BÀI :
D
Ạ O CH Ơ I Đ Ồ NG C Ỏ – PWALK – SPOJ
Có N con bò (1 <= N <= 1,000), để thuận tiện ta đánh số từ 1->N, đang ăn cỏ
trên N đồng cỏ, để thuận tiện ta cũng đánh số các đồng cỏ từ 1->N Biết rằng con bò i đang ăn cỏ trên đồng cỏ i
Một vài cặp đồng cỏ được nối với nhau bởi 1 trong N-1 con đường 2 chiều mà
các con bò có thể đi qua Con đường i nối 2 đồng cỏ A_i và B_i (1 <= A_i
<= N; 1 <= B_i <= N) và có độ dài là L_i (1 <= L_i <= 10,000)
Các con đường được thiết kế sao cho với 2 đồng cỏ bất kỳ đều có duy nhất 1
đường đi giữa chúng Như vậy các con đường này đã hình thành 1 cấu trúc cây
Các chú bò rất có tinh thần tập thể và muốn được thăm thường xuyên Vì vậy lũ
bò muốn bạn giúp chúng tính toán độ dài đường đi giữa Q (1 <= Q <= 1,000) cặp đồng cỏ (mỗi cặp được mô tả là 2 số nguyên p1,p2 (1 <= p1 <= N; 1 <= p2 <= N)
DỮ LIỆU
Dòng 1: 2 số nguyên cách nhau bởi dấu cách: N và Q
Dòng 2 N: Dòng i+1 chứa 3 số nguyên cách nhau bởi dấu cách: A_i, B_i,
và L_i
Dòng N+1 N+Q: Mỗi dòng chứa 2 số nguyên khác nhau cách nhau bởi dấu cách mô tả 1 yêu cầu tính toán độ dài 2 đồng cỏ mà lũ bò muốn đi thăm qua lại p1 và p2
KẾT QUẢ
Dòng 1 Q: Dòng i chứa độ dài đường đi giữa 2 đồng cỏ ở yêu cầu thứ i
VÍ DỤ
D li u ữ ệ
Trang 64 2
2 1 2
4 3 2
1 4 3
1 2
3 2
K t qu ế ả
2
7
GIẢI THÍCH
Yêu cầu 1: Con đường giữa đồng cỏ 1 và 2 có độ dài là 2 Yêu cầu 2: Đi qua con
đường nối đồng cỏ 3 và 4, rồi tiếp tục đi qua con đường nối 4 và 1, và cuối cùng là con đướng nối 1 và 2, độ dài tổng cộng là 7
BIẾN ĐỔI SỐ – NUMBER – SPOJ
Posted on 12/06/2014by connhangheovodanh
ĐỀ BÀI :
BI
Ế N Đ Ổ I S Ố – NUMBER – SPOJ
Cho M máy biến đổi số được đánh số từ 1 đến M và 1 số nguyên dương N Hoạt
động của máy i được xác định bởi cặp số nguyên dương (ai,bi)
(1<=ai,bi<=N) Máy nhận đầu vào là số nguyên dương ai và trả lại ở đầu
ra số nguyên dương bi
Ta nói một số nguyên dương X có thể biến đổi thành số nguyên dương Y nếu
hoặc X=Y hoặc tồn tại dãy hữu hạn các số nguyên dương X= P1,P2,…,Pk
=Y sao cho đối với 2 phần tử liên tiếp Pi và Pi+1 bất kỳ trong dãy, luôn tìm được 1 trong số các máy đã cho để biến đổi Pi thành Pi+1
Cho trước 1 số nguyên dương T (T<=N) Hãy bổ sung thêm 1 số ít nhất các máy
biến đổi số để bất kì số nguyên dương nào từ 1 đến N đều có thể biến đổi thành T
Input
– Dòng 1: 3 số nguyên dương N, M, T (1<=N,M,T<=10^4)
Trang 7– M dòng tiếp theo mỗi dòng chứa 1 cặp số tương ứng với một máy biến đổi số
Các số trên một dòng cách nhau bởi 1 dấu cách
Output
Ghi ra 1 dòng duy nhất chứa 1 số nguyên dương là số lượng máy biến đổi số cần
thêm
Example
Input:
6 4 5
1 3
2 3
4 5
6 5
Output:
1
QUẢNG CÁO – ADS – SPOJ
Posted on 05/06/2014by connhangheovodanh
ĐỀ BÀI : QU Ả NG CÁO – ADS – SPOJ
Nhân dịp Tết sắp đến công ty Jelly-for-Kids quyết định tăng cường việc quảng
bá sản phẩm đến người tiêu dùng Vì thế giám đốc marketing, ông Fruit-Jelly muốn gửi đi số lượng nhân viên tối đa có thể, làm nhiệm vụ tiếp thị tại đại lý trong thành phố
Trong thành phố có m con đường, n đại lý bán kẹo (đánh số từ 1 đến n) Mỗi
con đường chỉ nối trực tiếp giữa 2 đại lý, và được ký hiệu bằng chỉ số của 2 đại lý mà nó nối Đồng thời, giữa 2 đại lý bất kỳ có không quá 1 con đường nối chúng
Ông Fruit-Jelly nghĩ rằng, ông ta sẽ quản lý nhân viên dễ hơn nếu xếp mỗi
người tiếp thị trên những hành trình có tính chất thứ tự Tức là những đại
lý bán kẹo trên hành trình đó thỏa các điều kiện sau
Có đường nối trực tiếp giữa 2 đại lý liên tiếp nhau trên hành trình
Từ một đại lý bất kỳ trong hành trình có thể đi qua tất cả các đoạn đường trong
hành trình đó rồi trở về nơi xuất phát mà không đi qua đoạn đường nào quá một lần
Hành trình phân công cho mỗi nhân viên phải có ít nhất một đoạn đường chưa
có nhân viên nào khác đi tiếp thị
Trang 8Mỗi nhân viên chỉ di chuyển trên hành trình mà anh ta được phân công Hãy
tính số lượng nhân viên tối đa mà ông Fruit-Jelly có thể xếp việc, và hành trình cụ thể mà mỗi người được xếp
Input
Dòng đầu là 2 số tự nhiên N và M (N<=2000) (M<=5000)
Trong M dòng tiếp theo, mỗi dòng ghi 2 số nguyên mô tả một đoạn đường, mỗi
đoạn đường được mô tả bởi chỉ số của 2 đại lý mà nó nối
Output
Dòng đầu tiên ghi Q là số lượng nhân viên tối đa tìm được
Example
Input:
5 6
1 2
2 4
4 5
3 5
1 3
2 3
Output:
2
THUẬT TOÁN :
Bài này chỉ cần xuất ra m-n+T với T là số thành phần liên thông trong đồ thị Dùng DFS tìm thành phần liên thông cơ bản
Posted on 31/05/2014by connhangheovodanh
ĐỀ BÀI :
G
Ặ M C Ỏ – VMUNCH – SPOJ
Bessie rất yêu bãi cỏ của mình và thích thú chạy về chuồng bò vào giờ vắt sữa
buổi tối
Trang 9Bessie đã chia đồng cỏ của mình là 1 vùng hình chữ nhật thành các ô vuông nhỏ
với R (1 <= R <= 100) hàng và C (1 <= C <= 100) cột, đồng thời đánh dấu chỗ nào là cỏ và chỗ nào là đá Bessie đứng ở vị trí R_b,C_b và muốn ăn
cỏ theo cách của mình, từng ô vuông một và trở về chuồng ở ô 1,1 ; bên cạnh đó đường đi này phải là ngắn nhất
Bessie có thể đi từ 1 ô vuông sang 4 ô vuông khác kề cạnh
Cho bản đồ, hãy tính xem có bao nhiêu ô cỏ mà Bessie sẽ ăn được trên con
đường ngắn nhất trở về chuồng (tất nhiên trong chuồng không có cỏ đâu nên đừng có tính nhé)
Dữ liệu
Dòng 1: 2 số nguyên cách nhau bởi dấu cách: R và C
Dòng 2 R+1: Dòng i+1 mô tả dòng i với C ký tự (và không có dấu cách) như đã nói ở trên
Kết quả
Dòng 1: Một số nguyên là số ô cỏ mà Bessie ăn được trên hành trình ngắn nhất trở về chuồng
Ví dụ
D li u ữ ệ
5 6
B *.
*
.**.*.
***.
* *.C
K t qu ế ả
9