CSES - Forest Queries | Truy vấn Khu rừng
Bạn được cho một lưới \(n \times n\) thể hiện bản đồ của một khu rừng. Mỗi ô vuông có thể trống hoặc chứa một cái cây. Ô phía trên bên trái có tọa độ \((1,1)\), và ô phía dưới bên phải có tọa độ \((n,n)\).
Nhiệm vụ của bạn là xử lí \(q\) truy vấn dưới dạng: có bao nhiêu cây trong một hình chữ nhật đã cho của khu rừng?
Input
Dòng đầu vào đầu tiên có hai số nguyên \(n\) và \(q\): kích thước của khu rừng và số lượng truy vấn.
Kế tiếp, có \(n\) dòng mô tả khu rừng. Mỗi dòng có \(n\) kí tự: .
là một ô trống và *
là một cái cây.
Cuối cùng, có \(q\) mô tả các dòng truy vấn. Mỗi dòng có bốn số nguyên \(y_1, x_1, y_2, x_2\) tương ứng với các góc của một hình chữ nhật.
Output
In ra số lượng cây trong mỗi hình chữ nhật.
Giới hạn
- \(1≤n≤1000\)
- \(1≤q≤2⋅10^5\)
- \(1≤y_1≤y_2≤n\)
- \(1≤x_1≤x_2≤n\)
Ví dụ
Input:
4 3
.*..
*.**
**..
****
2 2 3 4
3 1 3 1
1 1 2 2
Output:
3
1
2
Phục vụ (DHBB CT)
Một công ty cung cấp dịch vụ cho các đối tác của mình đặt tại n vùng khác nhau được đánh số \(1, 2, 3, …, n\). Công ty có \(3\) nhân viên phục vụ lưu động. Nếu xuất hiện một yêu cầu tại một địa điểm mà hiện đang không có nhân viên đang ở đó, một trong ba nhân viên di chuyển từ vị trí hiện tại của anh ta đến trực tiếp địa điểm xuất hiện yêu cầu mà không qua bất kỳ một địa điểm trung gian nào khác. Tại mọi thời điểm, chỉ có một nhân viên di chuyển. Các nhân viên chỉ di chuyển khi có yêu cầu phục vụ và không có hai nhân viên nào ở cùng một vị trí tại bất kỳ thời điểm. Chi phí để di chuyển từ vị trí \(i\) đến vị trí \(j\) là \(C_{ij}\). Chú ý rằng hàm chi phí không nhất thiết phải là đối xứng, tuy nhiên chi phí khi không di chuyển luôn bằng \(0(Cii=0)\). Các yêu cầu phải được thực hiện theo thứ tự xuất hiện (yêu cầu xuất hiện trước phải được phục vụ trước, phục vụ xong một yêu cầu mới phục vụ yêu cầu tiếp theo).
Yêu cầu: Hãy tìm lịch di chuyển các nhân viên phục vụ yêu cầu sao cho tổng chi phí là nhỏ nhất.
Input
- Dòng đầu tiên chứa hai số nguyên dương \(n,m,\) lần lượt là số vùng khác nhau và số yêu cầu cần phục vụ \((3 \leq n \leq 200,1 \leq m \leq 1000)\).
- n dòng tiếp theo, mỗi dòng chứa \(n\) số nguyên không âm có giá trị không vượt quá \(2000\). Số thứ \(j\) của dòng thứ \(i\) là giá trị của \(C_{ij}\) - chi phí để đi từ \(i\) đến \(j\).
- Dòng cuối cùng chứa \(m\) số nguyên là danh sách các yêu cầu phục vụ theo thứ tự đăng ký. Mỗi yêu cầu được mô tả bằng một số nguyên - số hiệu địa điểm, nơi yêu cầu xảy ra. Ban đầu ba nhân viên phục vụ đang ở các địa điểm \(1, 2\) và \(3\).
Output
- Ghi ra một số nguyên \(S\) là tổng chi phí nhỏ nhất tìm được.
Scoring
- Subtask \(1\) (\(24\%\) số điểm): \(3 \leq n , m \leq 8\)
- Subtask \(2\) (\(20\%\) số điểm): \(8 < n , m \leq 50\)
- Subtask \(3\) (\(28\%\) số điểm): \(50 < n \leq 200, 50 < m \leq 1000\)
Example
Test 1
Input
5 9
0 1 1 1 1
1 0 2 3 2
1 1 0 4 1
2 1 5 0 1
4 2 3 4 0
4 2 4 1 5 4 3 2 1
Output
5
Note
Một phương án tối ưu là \((1,2,1,2,2,1,3,1,3)\). Ở đây số thứ \(i\) là số hiệu của nhân viên phục vụ yêu cầu thứ \(i\).
Bán hàng
Chíp quyết định mở một cửa hàng bán kẹo và lập ra kế hoạch bán hàng đặc biệt. Giá hàng của Chip có vô hạn gói kẹo đánh số bằng các số nguyên dương từ \(1\) trở đi. Chíp đã bí mật giấu \(𝑚\) quà tặng vào các gói kẹo mang số hiệu \(𝑏_1,𝑏_2,...,𝑏_𝑚\).
Trong ngày, có \(𝑛\) khách hàng đánh số từ \(1\) tới \(𝑛\) theo thứ tự đến mua hàng. Khi một khách hàng thứ \(𝑖\) vào cửa hàng, Chip hỏi số gói kẹo người đó muốn mua \((𝑎_𝑖)\) sau đó chọn đúng \(𝑎_𝑖\) gói kẹo còn lại trên giá có số hiệu nhỏ nhất chia hết cho \(𝑎_𝑖\) để bán cho người khách đó.
Ví dụ:
- Khách hàng thứ nhất đến mua \(𝑎_1=4\) gói kẹo, Chip sẽ bán cho các gói số hiệu 4, 8, 12 và 16 vì đây là 4 số nguyên dương nhỏ nhất chia hết cho 4.
- Khách hàng thứ hai đến mua \(𝑎_2=2\) gói kẹo, Chip sẽ bán tiếp các gói số hiệu 2 và 6 (số hiệu 4 đã được bán nên đây là 2 số nguyên dương nhỏ nhất còn lại chia hết cho 2).
Cuối ngày, Chip muốn biết có bao nhiêu gói kẹo chứa quà tặng đã được bán.
Input
- Dòng 1 chứa số nguyên dương \(m \ (𝑚\le 10^6)\) là số quà tặng
- Dòng 2 chứa \(𝑚\) số nguyên dương \(𝑏_1,𝑏_2,...,𝑏_𝑚 \ (b_i \leq 10^6)\) hoàn toàn phân biệt là số hiệu những gói kẹo chứa quà tặng.
- Dòng 3 chứa số nguyên dương \(n \ (𝑛\le 10^6)\) là số khách hàng
- Dòng 4 chứa \(𝑛\) số nguyên dương \(𝑎_1,𝑎_2,...,𝑎_𝑛 \ (a_i \leq 10^6)\) là số kẹo muốn mua của các khách hàng.
Output
- Ghi ra một số nguyên duy nhất là số gói kẹo chứa quà tặng đã được bán
Scoring
- Subtask \(1\) (\(30\%\) số điểm): \(m, n \leq 10\) và \(a_i, b_i \leq 50\)
- Subtask \(2\) (\(20\%\) số điểm): \(m, n \leq 5000\) và \(a_i, b_i \leq 5000\)
- Subtask \(3\) (\(50\%\) số điểm): không có điều kiện gì thêm.
Example
Test 1
Input
4
1 6 8 16
3
4 2 4
Output
3
Note
- Khách hàng thứ nhất nhận các gói 4, 8, 12, 16
- Khách hàng thứ hai nhận các gói 2, 6
- Khách hàng thứ ba nhận các gói 20, 24, 28, 32
- Như vậy có 3 gói chứa quà tặng được bán là 6, 8, 16
Đổi hệ cơ số #1
Nhập vào số nguyên dương \(N\) ở hệ thập phân. Hãy đổi \(N\) từ hệ thập phân sang hệ nhị phân.
Input
- Nhập số nguyên dương \(N\) (\(1 \leq N \leq 10^5\)).
Output
- In ra số \(N\) ở hệ nhị phân.
Example
Test 1
Input
10
Output
1010