Trang chủ Tin Học Lớp 11 Câu 4. Hình chữ nhật (3 điểm) Cho một hình...

Câu 4. Hình chữ nhật (3 điểm) Cho một hình chữ nhật gồm N dòng và M cột. Các dòng được đánh số từ 1 đến N, từ trên xuống dưới. Các cột được đánh số từ 1 đến

Câu hỏi :

Câu 4. Hình chữ nhật (3 điểm) Cho một hình chữ nhật gồm N dòng và M cột. Các dòng được đánh số từ 1 đến N, từ trên xuống dưới. Các cột được đánh số từ 1 đến M, từ trái sang phải. Ô ở dòng thứ i và cột thứ j được gọi là ô (i, j) và có diện tích là 1 đơn vị. Có một số ô đã được điền sẵn kí tự X' Yêu cầu: tìm hình chữ nhật con có diện tích lớn nhất chỉ chứa duy nhất một kí tự 'X'. Dữ liệu vào từ file văn bản HCN.INP: Dòng đầu tiên gồm ba số nguyên dương N, M, K (N, M <= 10 ^ 4; K <= 10 ^ 3) mô tả kích thước của hình chữ nhật và số lượng kí tự X' có trong hình chữ nhật; K dòng sau, mỗi dòng gồm hai số nguyên dương d và c là chỉ số dòng và cột của ô điền kí tự X'; (d <= N; c <= M) . Kết quả ghi ra file văn bản HCN.OUT: Ghi ra diện tích của hình chữ nhật lớn nhất thoả mãn yêu cầu đề bài. Ràng buộc: Có 50% số test tương ứng với 50% số điểm thoả mãn: N, M <= 50 30% số test khác tương ứng với 30% số điểm thoả mãn: N, M <= 500 20% số test còn lại tương ứng với 20% số điểm không có ràng buộc gì thêm. Ví dụ: HCN.INP HCN.OUT Giải thích 45 4 9 23 25 31 44 X X X X

image

Câu 4. Hình chữ nhật (3 điểm) Cho một hình chữ nhật gồm N dòng và M cột. Các dòng được đánh số từ 1 đến N, từ trên xuống dưới. Các cột được đánh số từ 1 đến

Lời giải 1 :

#include <bits/stdc++.h>
using namespace std;long long n,m,t,l,r,mid,a[10005][10005],f[10005][10005],kq=0;long long ok(long long x,long long y,long long i,long long j){ return f[x][y]-f[x][j-1]-f[i-1][y]+f[i-1][j-1];}bool ok2(long long x){ for(int i=1;i<=n-x;i++) { for(int j=1;j<=m-x;j++) { if(ok(i+x,j+x,i,j)==1) { return true; } } } return false;}int main(){ cin >>n>>m>>t; while(t--) { cin >>l>>r; a[l][r]=1; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(a[i][j]==1) { kq=1; } f[i][j]=a[i][j]+f[i-1][j]+f[i][j-1]-f[i-1][j-1]; } } l=0; r=n; while(l<=r) { mid=(l+r)/2; if(ok2(mid)) { kq=max(kq,(mid+1)*(mid+1)); l=mid+1; } else { r=mid-1; } } cout <<kq; return 0;}

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 11

Lớp 11 - Năm thứ hai ở cấp trung học phổ thông, gần đến năm cuối cấp nên học tập là nhiệm vụ quan trọng nhất. Nghe nhiều đến định hướng tương lai và học đại học có thể gây hoang mang, nhưng hãy tự tin và tìm dần điều mà mình muốn là trong tương lai!

Nguồn :

sưu tập

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK