Thứ Hai, 28 tháng 3, 2016

GRID GAME

(Đóng góp của Đinh Nguyên Khôi)
Alice và Bob cả hai đều có kẹo nhiều ơi là nhiều ! Nhưng mà tụi nó muốn ăn. Cho nên hai đứa nó quyết định chơi một trò chơi theo lượt như sau:
Tụi nó sẽ điền vào một cái bảng M có kích thước N x N với những số nguyên bất kỳ. Alice sẽ bắt đầu trò chơi bằng cách kẻ ngang những một hàng i mà nó chưa kẻ. Bây giờ tới lượt của Bob, nó phải kẻ dọc cột j mà trước đó nó chưa kẻ. Sau khi lượt của Bob kết thúc, Alice sẽ lấy được số kẹo mà giao ở cột i và hàng j là M(i, j). Nếu như M(i, j) < 0, tức là điều này đồng nghĩa với việc Alice sẽ phải đưa cho Bob M(i, j) viên kẹo. Trò chơi sẽ kết thúc khi toàn bộ các cột và hàng đều được kẻ rồi. (Xem hình để biết thêm chi tiết).

Nhiệm vụ của bạn rất là đơn giản thôi ! Hãy tính xem Alice có thể lấy được nhiều nhất là bao nhiêu viên kẹo, hay nói cách khác, là tính xem Bob lấy được ít nhất bao nhiêu viên. Giả sử hai người này đều chơi tối ưu.
Input: Dòng đầu là số nguyên t (1 <= t <= 20), là số test case trong một test. 
Mỗi test case sẽ bắt đầu bởi một số nguyên N (1≤N≤ 8), là kích thước của cái bảng.
 
N dòng sau, mỗi dòng có N số nguyên. Số nguyên thứ j trên dòng thứ i là M(i , j).
Output: Gồm t dòng, dòng thứ i tương ứng với test case thứ i, chỉ in ra một số nguyên duy nhất là số lượng kẹo nhiều nhất mà Alice có thể ăn được.
Ví dụ:
INPUT
OUTPUT
3
2 10 10
-5 -5
2
10 10
-5 -5
2
10 -5
-5 10
5
5
-10


HỆ THỐNG ĐIỆN


Nhận được sự đầu tư lớn của một tập đoàn nước ngoài, đất nước Omega dự định xây dựng k  nhà máy thủy điện tại k địa điểm khác nhau để cung cấp điện cho n thành phố. Các nhà máy thủy điện được đánh số thứ tự từ 1 đến k, chi phí xây dựng cho nhà máy thủy điện thứ iwi. Tuy nhiên họ cần phải tính toán để chi phí xây dựng và lắp đặt hệ thống điện lưới quốc gia là ít nhất.
Hệ thống điện lưới được mô tả như một bản đồ được chia thành các ô vuông đơn vị mà tọa độ đỉnh của các ô vuông là một cặp số nguyên (x,y) cho biết hoành độ và tung độ của nó. Các nhà máy thủy điện và các thành phố đều nằm trên đỉnh của ô vuông đơn vị. Chi phí lắp đặt đường dây điện giữa hai điểm (u, v)(s, t) được tính bằng giá trị |u-s|+|v-t|
Hãy tính toán chi phí ít nhất để xây dựng hệ thống điện cho đất nước Omega sao cho tất cả các thành phố đều có điện biết rằng thành phố có điện khi có đường dây điện đến ít nhất một thành phố có điện khác hoặc có đường dây điện nối trực tiếp nhà máy thủy điện.
Lưu ý: không cần thiết phải xây dựng hết k  nhà máy thủy điện
Dữ liệu: Vào từ tệp văn bản ELECTRIC.INP
+ Dòng đầu tiên gồm 2 số nguyên dương kn lần lượt là số lượng các nhà máy thủy điện và số lượng thành phố.
+ K dòng tiếp theo dòng thứ i (i=1..k) gồm 3 số nguyên xi , yi, wi cho biết nhà máy thủy điện thứ i nằm ở tọa độ (xi, yi) và chi phí xây dựng là wi
+ N dòng tiếp theo mỗi dòng thứ j (j=1..n) chứa 2 số nguyên uj, vj cho biết hoành độ và tung độ của thành phố thứ j.
Dữ liệu ra: ghi vào tệp văn bản ELECTRIC.OUT một số nguyên cho biết chi phí ít nhất để xây dựng hệ thống điện lưới cho nước Omega.
Giới hạn:
+ 1≤n≤200
+ 1≤k≤n
+ Tọa độ của các thành phố và nhà máy thủy điện có trị tuyệt đối ≤106
+ 1≤wi≤106
Các số trên một dòng của Input cách nhau ít nhất 1 ký tự trắng.
Ví dụ:

ELECTRIC.INP
ELECTRIC.OUT
3 7
1 1 10
4 7 20
9 3 15
1 6
2 3
5 1
5 5
7 3
8 1
8 7
37

Thứ Tư, 23 tháng 3, 2016

MẠNG TRUYỀN THÔNG


Nguồn: Đề thi học sinh giỏi quốc gia 2013

Tổng công ty Z gồm N công ty con, đánh số từ 1-N. Mỗi công ty con có một máy chủ. Để đảm bảo truyền tin giữa các công ty, Z thuê M đường truyền tin để kết nối N máy chủ thành một mạng máy tính của Tổng công ty. Không có 2 đường truyền nối cùng 1 cặp máy chủ. Đường truyền i nối máy chủ của 2 công ty ui, vi có chi phí là wi. Mạng máy tính có tính thông suốt, nghĩa là từ một máy chủ có thể truyền tin đến một máy chủ bất kì khác bằng đường truyền trực tiếp hoặc qua nhiều đường trung gian.
Một đường truyền gọi là không tiềm năng nếu như : một mặt, việc loại bỏ đường truyền này không làm mất tính thông suốt; mặt khác, nó phải có tính không tiềm năng, nghĩa là không thuộc bất cứ mạng con thông suốt gồm N máy chủ và N-1 đường truyền tin với tổng chi phí thuê bao nhỏ nhất nào của mạng máy tính.
Trong thời gian tới, chi phí thuê bao của một số đường truyền tin thay đổi. Tổng công ty muốn xác định với chi phí mới thì đường truyền thứ k có là đường không tiềm năng hay không để xem xét chấm dứt việc thuê đường truyền này.
Yêu cầu: Cho Q giả định, mỗi giả định cho biết danh sách các đường truyền tin với chi phí thuê mới và chỉ số k. Với mỗi giả định về chi phí mới thuê đường truyền tin, hãy xác định đường truyền tin thứ k có là đường truyền tin không tiềm năng trong mạng không.
Dữ liệu vào: từ tệp văn bản COMNET.INP
+ Dòng đầu là T – số testcase. T nhóm dòng, mỗi nhóm cho thông tin về một testcase.
+ Dòng thứ nhất gồm 3 số nguyên dương N, M, Q (Q <= 30).
+ Dòng thứ i trong M dòng tiếp theo chứa 3 số nguyên dương ui, vi, wi (ui ≠ vi, wi < 109).
+ Dòng thứ j trong Q dòng tiếp theo mô tả giả định thứ j:
- Số đầu tiên là chỉ số kj của đường truyền tin cần xem xét
- Tiếp theo là sj ( sj <= 100) cho biết số lượng đường truyền có chi phí thuê mới
- Cuối cùng là sj cặp số nguyên dương tp, cp cho biết đường truyền thứ tp có chi phí thuê mới là cp (cp < 109).
Dữ liệu ra: ghi vào tệp văn bản COMNET.OUT
+ Gồm T nhóm dòng, mỗi nhóm gồm Q dòng. Mỗi dòng là câu trả lời cho giả định tương ứng trong input. Ghi YES nếu câu trả lời là khẳng định và NO trong trường hợp ngược lại.
Ví dụ:
COMNET.INP
COMNET.OUT
1
3 3 2
1 2 1
1 3 2
2 3 3
3 2 2 4 3 4
1 1 1 4
NO
YES
Giới hạn
+ 30% số test đầu có 1 ≤ N ≤ 100;
+ 30% số test tiếp theo có 1 ≤ N ≤ 104 và 1 ≤ M ≤ 105;
+ 40% số test còn lại có 1 ≤ N ≤ 105 và 1 ≤ M ≤ 106.
SOLUTION - TEST - CODE

MẠNG RÚT GỌN

Một hệ thống gồm N máy tính được nối thành một mạng có M kênh nối, mỗi kênh nối hai máy tính trong mạng, giữa hai máy tính có không quá một kênh nối. Các máy tính được đánh số từ 1 đến N, các kênh nối đánh số từ 1 đến M. Việc truyền tin trực tiếp có thể thực hiện được đối với hai máy có kênh nối. Các kênh nối trong mạng được chia thành ba loại 1, 2 và 3. Ta nói giữa hai máy a và b trong mạng  có đường truyền tin loại k (k=1 hoặc k=2) nếu tìm được dãy các máy (a=v1, v2,…,vp=b) thoả mãn điều kiện: giữa hai máy vivi+1 hoặc có kênh nối loại k hoặc có kênh nối loại 3 (i=1, 2,..., p-1).
Yêu cầu: Cần tìm cách loại bỏ khỏi mạng một số nhiều nhất kênh nối nhưng vẫn đảm bảo luôn tìm được cả đường truyền loại 1 lẫn đường truyền tin loại 2 giữa hai máy bất kỳ trong mạng.
Dữ liệu vào: từ tệp văn bản RUTGON.INP như sau:
+ Dòng đầu tiên chứa hai số N, M (N≤500); M≤10000).
+ Dòng thứ i trong M dòng tiếp theo chứa ba số nguyên dương u, v, s cho biết kênh thứ i nối hai máy uv thuộc loại s.
Dữ liệu ra: ghi vào tệp văn bản RUTGON.OUT gồm:
Dòng đầu tiên ghi số r là số kênh cần loại bỏ.
+ Nếu  r=-1 thì có nghĩa là trong mạng đã cho tồn tại hai máy không có đường truyền loại 1 hoặc loại 2.
+ Nếu r=0 có nghĩa là mạng có đường truyền thoả mãn nhưng số kênh loại bỏ bằng 0.
+ Nếu r>0 thì r dòng tiếp theo, mỗi dòng ghi chỉ số của một kênh cần loại bỏ.
Các số trên cùng một dòng của các tệp dữ liệu và tệp kết quả cách nhau ít nhất một dấu cách.
Ví dụ:
RUTGON.INP
RUTGON.OUT
5 7
1 2 3
2 3 3
3 4 2
5 3 2
5 4 1
5 2 2
1 5 1
2
6
7


NỐI DÂY

Cho một lưới ô vuông trên mặt phẳng với hệ tọa độ trực chuẩn có một cạnh nằm trên tia Ox và một cạnh nằm trên tia Oy. Trên lưới người ta đặt n đèn ở các điểm có tọa độ nguyên và điền số 0 vào tất cả các ô của lưới . Hai bóng đèn được nối với nhau bằng dây dẫn, dây dẫn luôn là một đoạn thẳng nối hai đèn và tất cả các ô trong các ô vuông có điểm trong chung với dây dẫn được tăng lên một đơn vị.
Hệ thống đèn chỉ hoạt động nếu hai bóng đèn bất kỳ luôn được nối với nhau (trực tiếp hoặc thông qua một số bóng đèn trung gian)
Yêu cầu: Nối các dây dẫn cho hệ thống hoạt động sao cho khi hoàn thành, tổng các số ghi trên các ô của lưới là nhỏ nhất có thể.
Dữ liệu: Vào từ tệp văn bản WIRES.INP
+ Dòng đầu chứa số nguyên dương n ≤ 1000
+ n dòng tiếp theo, mỗi dòng chứa hoành độ và tung độ một đèn, tọa độ là số tự nhiên có giá rị không quá 109. Các đèn luôn đảm bảo nằm trong lưới.
Kết quả: ghi ra tệp văn bản WIRES.OUT
+ Dòng 1 ghi tổng các số trên các ô vuông của lưới theo phương án tìm được.
+ Các dòng tiếp theo, mỗi dòng ghi 2 chỉ số của 2 đèn được nối với nhau bằng dây dẫn
Ví dụ:
WIRES.INP
WIRES.OUT
5
0 1
1 4
2 2
3 0
4 3
8
1 3
2 3
4 3
5 3

Chủ Nhật, 20 tháng 3, 2016

NỐI DÂY

Cho hai đường thẳng song song nằm ngang ab. Trên mỗi đường thẳng, người ta chọn lấy n điểm phân biệt và gán cho mỗi điểm một số nguyên dương là nhãn của điểm đó:
+ Trên đường thẳng a, điểm thứ i (theo thứ tự từ trái qua phải) được gán nhãn là ai.
+ Trên đường thẳng b, điểm thứ j (Theo thứ tự từ trái qua phải) được gán nhãn là bj.
Ở đây (a1, a2,…,an) và (b1, b2,…,bn) là những hoán vị của dãy số (1, 2,…,n)
Yêu cầu: Hãy chỉ ra một số tối đa các đoạn thẳng thỏa mãn:
+ Mỗi đoạn thẳng phải nối hai điểm có cùng một nhãn: Một điểm trên đường thẳng a và một điểm trên đường thẳng b.
+ Các đoạn thẳng đôi một không có điểm chung

Dữ liệu: Vào từ tệp văn bản LINES.INP
+ Dòng 1: chứa số nguyên dương n ≤ 105
+ Dòng 2: chứa n số theo thứ tự là a1, a2,…,an
+ Dòng 3: Chứa n số theo thứ tự là b1, b2,…,bn
Kết quả: Ghi ra tệp văn bản LINES.OUT
+ Dòng 1: ghi số k là số đoạn thẳng nối được.
+ Dòng 2: Ghi k nhãn của các đoạn thẳng được chọn (nhãn của mỗi đoạn thẳng là nhãn của điểm đầu mút)
Các số trên một dòng trong tệp input/output được/phải ghi cách nhau ít nhất một ký tự trắng.
Ví dụ:
LINES.INP
LINES.OUT
6
2 3 1 5 6 4
3 2 5 6 1 4
4
3 4 5 6
 TEST -  CODE