Nâng cấp hệ thống giao thông
Lưu ý: hiện tại bài đang lỗi không thể chấm bằng file .inp .out, nên các bạn không cần freopen mà chỉ cần nhập bằng màn hình và in ra màn hình thôi nhé
Khu đô thị mới VINNEXT gồm \(N\) biệt thự được đánh số thứ tự từ 1 đến \(N\), các biệt thự được kết nối với nhau bởi đúng \(N-1\) đoạn đường hai chiều, mỗi đoạn đường nối trực tiếp giữa hai biệt thự. Giữa hai biệt thự bất kỳ luôn tồn tại đường đi thông qua một số đoạn đường.
Công ty xây dựng cầu đường VINTRA trúng thầu nâng cấp hệ thống giao thông của khu đô thị VINNEXT với \(M\) gói thầu khác nhau. Mỗi gói thầu \(M_i\) được xác định bởi bộ ba số \((x_i, y_i, z_i)\) và được hiểu là sẽ nâng cấp các đoạn đường trên đường đi đơn (đường đi đơn là không có đoạn đường nào đi lặp lại) từ biệt thự \(x_i\) đến biệt thự \(y_i\) và được sử dụng biệt thự \(z_i\) làm điểm tập kết vật liệu. Việc thực hiện gói thầu \(M_i\) sẽ gây ảnh hưởng tới những biệt thự nằm trên đường đi đơn từ biệt thự \(x_i\) đến biệt thự \(y_i\) (kể cả chính hai biệt thự \(x_i\) và \(y_i\)), mức độ chịu ảnh hưởng của mỗi biệt thự khi thực hiện gói thầu này chính là khoảng cách từ biệt thự đó tới điểm tập kết vật liệu \(z_i\) (khoảng cách là số đoạn đường trên đường đi đơn từ biệt thự đó đến \(z_i\)).
Yêu cầu
Bạn biết trước \(M\) gói thầu, hãy tính tổng mức độ chịu ảnh hưởng của mỗi biệt thự khi thực hiện \(M\) gói thầu này.
Dữ liệu
Cho trong tệp VINNEXT.INP có cấu trúc:
- Dòng đầu chứa hai số nguyên \(N\) và \(M\) (\(1 \le N, M \le 3 \times 10^5\)) lần lượt là số biệt thự và số gói thầu.
- \(N-1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(x, y\) cho biết có đoạn đường hai chiều nối giữa hai biệt thự \(x\) và \(y\).
- \(M\) dòng tiếp theo, dòng thứ \(i\) chứa ba số nguyên \(x_i, y_i, z_i\) (\(1 \le x_i, y_i, z_i \le N\)) mô tả gói thầu \(M_i\).
Kết quả
Ghi ra tệp VINNEXT.OUT một dòng gồm \(N\) số nguyên cách nhau một dấu cách, số thứ \(i\) là tổng mức độ chịu ảnh hưởng của biệt thự \(i\).
Ví dụ
VINNEXT.INP
6 2
1 2
1 3
3 4
3 5
5 6
2 6 4
4 5 1
VINNEXT.OUT
2 3 2 2 4 3
Giải thích: Tổng mức độ chịu ảnh hưởng của các biệt thự được mô tả như bảng sau:
| Biệt thự thứ | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Mức chịu ảnh hưởng do gói thầu 1 | 2 | 3 | 1 | 0 | 2 | 3 |
| Mức chịu ảnh hưởng do gói thầu 2 | 0 | 0 | 1 | 2 | 2 | 0 |
| Tổng mức độ chịu ảnh hưởng của cả 2 gói thầu | 2 | 3 | 2 | 2 | 4 | 3 |
Ràng buộc
- Subtask 1 (25% số test tương ứng 25% số điểm): \(N, M \le 10^3\).
- Subtask 2 (25% số test tương ứng 25% số điểm): mỗi biệt thự nối trực tiếp với không quá 2 biệt thự khác.
- Subtask 3 (25% số test tương ứng 25% số điểm): mọi gói thầu \(i\) đều có biệt thự \(z_i\) nằm trên đường đi đơn từ \(x_i\) đến \(y_i\).
- Subtask 4 (25% số test tương ứng 25% số điểm): không có ràng buộc gì thêm.
Đếm hình vuông
Trên mặt phẳng tọa độ cho \(N\) hình vuông có các cạnh song song với các trục tọa độ. Các hình vuông được đánh số từ \(1\) đến \(N\), các đỉnh của hình vuông đều có tọa độ nguyên và không có hai hình vuông nào có điểm chung.
Một hình vuông được gọi là nhìn thấy được từ gốc tọa độ \(O=(0,0)\) nếu tồn tại hai điểm \(A\) và \(B\) trên cùng một cạnh của hình vuông sao cho phần trong của tam giác \(OAB\) không có điểm chung với bất kỳ hình vuông nào trong số các hình vuông còn lại.
Yêu cầu
Đếm số hình vuông nhìn thấy được từ gốc tọa độ.
Dữ liệu vào
Nhập từ stdin:
- Dòng đầu tiên chứa số nguyên dương \(N\) \((1 \le N \le 1000)\), là số lượng hình vuông.
- Dòng thứ \(i\) trong \(N\) dòng tiếp theo chứa ba số nguyên \(x_i, y_i, L_i\) \((1 \le x_i, y_i, L_i \le 10000)\), cách nhau bởi dấu cách. Trong đó \((x_i,y_i)\) là tọa độ đỉnh ở góc dưới bên trái và \(L_i\) là độ dài cạnh của hình vuông thứ \(i\), với \(i=1,2,\ldots,N\).
Kết quả
In ra stdout một số nguyên là số lượng hình vuông nhìn thấy được từ gốc tọa độ.
Ví dụ 1
Input
3
2 6 3
1 4 1
3 4 1
Output
3
Ví dụ 2
Input
4
1 2 1
3 1 1
2 4 2
3 7 1
Output
2
Dãy số
Cho dãy số nguyên dương \(a_1, a_2, ..., a_n\). Mỗi thao tác bạn được phép chọn một phần tử bất kỳ trong dãy để tăng lên \(1\) đơn vị.
Yêu cầu: Thực hiện \(m\) thao tác để phần tử nhỏ nhất của dãy (sau khi thực hiện \(m\) thao tác) nhận giá trị lớn nhất.
Dữ liệu vào: :
- Dòng đầu tiên gồm hai số nguyên \(n\) và \(m\) (\(1 \le n \le 2 \cdot 10^5; 0 \le m \le 10^9\)) lần lượt là số lượng phần tử của dãy và số thao tác thực hiện;
- Dòng thứ hai gồm \(n\) số nguyên \(a_1, a_2, ..., a_n\) (\(1 \le a_i \le 10^9\)) là giá trị ban đầu của các phần tử.
Kết quả: Ghi ra một số nguyên duy nhất là giá trị nhỏ nhất của dãy số sau khi thực hiện \(m\) thao tác theo yêu cầu trên.
Ví dụ:
| stdin | stdout |
|---|---|
5 62 8 6 5 9 |
6 |
Ràng buộc:
- Có 20% số điểm có giá trị \(n \le 10^5\) và \(m \le 1\);
- Có 20% số điểm có giá trị \(n = 2\) và \(m \le 10^2\);
- Có 30% số điểm có giá trị \(n \le 10^3\) và \(m \le 10^2\);
- 30% số điểm còn lại không có ràng buộc gì thêm.
Chênh lệch chiều cao
Lớp học nọ có \(n\) bạn nam lần lượt có chiều cao là \(a_1, a_2, \ldots, a_n\) và \(m\) bạn nữ có chiều cao lần lượt là \(b_1, b_2, \ldots, b_m\).
Yêu cầu
Với mỗi bạn nam, hãy cho biết chênh lệch chiều cao nhỏ nhất giữa bạn nam đó với một bạn nữ bất kì trong lớp.
Dữ liệu vào
Nhập từ bàn phím (standard input):
- Dòng đầu chứa hai số nguyên dương \(n, m\).
- Dòng thứ hai chứa \(n\) số nguyên dương lần lượt là chiều cao các bạn nam trong lớp.
- Dòng thứ ba chứa \(m\) số nguyên dương lần lượt là chiều cao các bạn nữ trong lớp.
Kết quả
In ra màn hình (standard output) \(n\) số lần lượt là chênh lệch chiều cao nhỏ nhất giữa bạn nam thứ \(i\) với một bạn nữ bất kì trong lớp.
Ràng buộc
-
\(n, m, a_i, b_i \le 10^5\).
-
Subtask 1 (50% số test tương ứng 50% số điểm): \(n, m \le 10^3\).
- Subtask 2 (20% số test tương ứng 20% số điểm): Các bạn nam trong lớp có chiều cao giống hệt nhau.
- Subtask 3 (30% số test tương ứng 30% số điểm): \(n, m \le 10^5\).
Ví dụ
Input
4 5
130 140 150 160
125 136 169 190 110
Output
5 4 14 9