|
Trả lời: LQDFARM 9 năm, 7 tháng trước
|
(+0)
|
mấy anh chỉ em ngắt trước time limit được không.
em sử dung uses windows; mà sao ko được au.
em tks trước.
cho em hỏi lun. các thuật toán sắp xếp thì Quicksort là tốt nhất phải không?
|
|
|
Đã lưu IP
|
|
LiF.Typn
|
|
Đã khóa chức năng gửi bài. |
thaoing (Thành viên)
Nhắm mắt code không bug
Bài viết: 151
|
Trả lời: LQDFARM 9 năm, 7 tháng trước
|
(+0)
|
Câu hỏi 1: Máy chấm SPOJ chạy HĐH Linux vậy nên ko dùng được thư viện Windows
Câu hỏi 2: Nói đến thuật toán sắp xếp thì phải kèm theo cấu trúc dữ liệu mà nó làm việc. Đối với dạng mảng số như bài LQDFARM thì IntroSort là nhanh nhất (ý kiến chủ quan của mình) 
|
|
|
Đã lưu IP
|
|
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: LQDFARM 9 năm, 7 tháng trước
|
(+0)
|
Quicksort chưa là tốt nhất đâu bạn. Không gì là tuyệt đối mà. Và đã có thuật toán sắp xếp tốt hơn Qsort, hình như là thuật toán sắp xếp Flash Sort với độ phức tạp là O(n)! 
|
|
|
Đã lưu IP
|
|
'+' cho em đi nào!
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: LQDFARM 9 năm, 7 tháng trước
|
(+0)
|
chỉ em cách ngắt trước time limit với được không mấy anh.
con cái 2 cái thuật toán sắp xếp đó em ko bik phải lam sao.
hình như là không có trong sách của Thầy Hoàng đúng không ạ.
em chỉ biết quicksort bình thường thôi a2h 
|
|
|
Đã lưu IP
|
|
LiF.Typn
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: LQDFARM 9 năm, 7 tháng trước
|
(+0)
|
Bạn VirtusPro94 đã có thuật toán AC tất cả testcase .
Time cực shock và thuật toán cũng cực shock . Nhưng việc post code lên diễn đàn là không thể 
|
|
|
Đã lưu IP
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: LQDFARM 9 năm, 7 tháng trước
|
(+0)
|
Em biết là j rồi  , cơ mà vẫn thuật toán như vậy mà anh, chỉ dùng kĩ thuật khác thôi
Mà mấy bạn bên trên bàn về sắp xếp làm j nhỉ, bạn có sắp xếp O(1) đi mà qhđ ko tốt thì cũng TLE thôi
|
|
|
Đã lưu IP
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: LQDFARM 9 năm, 7 tháng trước
|
(+0)
|
chan' qua chan' qua...lam hoài mà cg chỉ được 39 điểm.
Code: |
const fi='';
fo='';
min=5000;
var f1,f2:array[0..min]of longint;
a,b:array[1..10000]of longint;
n,m,k,q,s,max_:longint;
procedure nhap;
var f:text; i:longint;
begin
assign(f,fi);
reset(f);
readln(f,q,m,k);
for i:=1 to m do
begin
read(f,a[i]);
b[i]:=a[i];
end;
n:=m+k;
readln(f);;
for i:=m+1 to n do
begin
read(f,a[i]);
b[i]:=a[i]-1;
end;
close(f);
end;
procedure hoanvi(var a,b:longint);
var c:longint;
begin
c:=a;
a:=b;
b:=c;
end;
procedure sort(l,r:longint);
var i,j,x:longint;
begin
x:=a[(l+r) div 2];
i:=l;
j:=r;
repeat
while a[i]<x do inc(i);
while a[j]>x do dec(j);
if i<=j then
begin
hoanvi(a[i],a[j]);
hoanvi(b[i],b[j]);
inc(i);dec(j);
end;
until i>j;
if i<r then sort(i,r);
if j>l then sort(l,j);
end;
procedure tham;
var i,j,l,s:longint;
begin
sort(1,n);
l:=1;
while a[l]<q do
begin
l:=l+1;
if l=n then break;
end;
s:=q;
repeat
max_:=max_+b[l];
q:=q-a[l];
while a[l]>=q do
begin
l:=l-1;
if l=0 then exit;
end;
until q<=min;
n:=l;
end;
procedure xuli;
var i,j:longint;
begin
for i:=1 to n+1 do
begin
for j:=1 to q do
begin
f2[j]:=f1[j];
if (j>=a[i]) and (f1[j-a[i]]+b[i]>f2[j] ) then
begin
f2[j]:= f1[j-a[i]]+b[i];
end;
end;
f1:=f2;
end;
end;
procedure xuat;
var g:text;
begin
assign(g,fo);
rewrite(g);
writeln(g,max_+f2[q]);
close(g);
end;
begin
nhap;
max_:=0;
if q<min then xuli
else
begin
tham;
xuli;
end;
xuat;
end.
|
không biết là bi lỗi phần nào nửa Tham hay la QHD.giúp em với nha
|
|
|
Đã lưu IP
|
|
LiF.Typn
|
|
Đã khóa chức năng gửi bài. |
|
Trả lời: LQDFARM 9 năm, 7 tháng trước
|
(+0)
|
bạn tle nặng rồi , chưa biết cài thế kia có lỗi gì hay ko nữa, cái mảng f1 f2 thì đưa về 1 mảng f kiểu boolean thôi
|
|
|
Đã lưu IP
|
|
Đã khóa chức năng gửi bài. |
|