Trả lời: C11 Contest Round 17 ! 8 năm, 2 tháng trước
(+0)
HelloSirius viết:
QUOTE: vietthaitink21 viết:
QUOTE: HelloSirius viết:
QUOTE: Bài C11LOCK mình làm N^3 không biết bị TLE hay WA nhỉ? PS xem giúp mình với!
bạn làm thế nào ?
Mình tính các tổng dòng 1,2 cho vào 1 mảng, rồi tính các tổng dòng 3,4 cho vào 1 mảng. Sau đó sort 2 mảng này lại.
Còn dòng 5, với mỗi số a[5,i] mình tìm trên 2 mảng trên 2 phần tử sao cho tổng của 3 cái đó = k.
ĐPT: N.N^2
Trả lời: C11 Contest Round 17 ! 8 năm, 2 tháng trước
(+2)
thuyvan viết:
QUOTE: làm sao tìm trong n^2 đuợc nhỉ ? bày em với
Code:
Gọi mảng B là tất cả các tổng của 2 dòng đầu, mảng C là tất cả các tổng của 2 dòng tiếp theo.
=> B,C có N^2 phần tử
Sort 2 mảng này lại, sort tăng dần đi.
Với mỗi a[5,i], cần tìm tất cả các cặp B[j1]+C[j2] sao cho B[j1]+C[j2]=K-a[5,i]=x
Để tìm j1, j2 ta làm như sau:
Vì 2 mảng B,C đã sort nên chỉ mất O(N^2)
- Đầu tiên gán j1:=1; j2:=N^2;
While(j1<=N^2)and(j2>=1)dobeginIf B[j1]+C[j2]=x thenbegin
+ tính số cặp j1,j2
+ inc(j1,...); dec(j2,...)endelseif B[j1]+C[j2]>x then dec(j2)elseif B[j1]+C[j2]<x then inc(j1);
end;