hosyvietcuong viết:
QUOTE:
blazedragon
Bạn xem bài của tớ thế nào cái, tớ chỉ được có 75đ, thanks bạn nhiều :D File gửi kèm: Tên file:
PBCWRI.rarĐộ lớn file: 423
Bài của bạn bị TLE.
- Bạn khai báo mảng a2 mất O(n) trong khi chỉ cần mất O(1).
- Phép so sánh của bạn mất O(58) chứ không phải là O(52) do từ 'A' đến 'z' còn có 6 kí tự khác (nhưng có lẽ điều này không ảnh hưởng nhiều lắm).
Điều quan trọng là bạn phải khởi tạo mảng a2 trong O(1).
Và bạn nhớ là khai báo s1, s2 là
ansistring nhé. Làm mình debug cả buổi.
Mình sửa đoạn xử lý của bạn như thế này.
Code: |
procedure xuly;
var i,j,dem:longint;
tf:boolean;
ch:char;
begin
if n>m then
begin
writeln(0);
exit;
end;
fillchar(a2,sizeof(a2),0);
for i:=1 to n-1 do inc(a2[s2[i]]);
dem:=0;
for i:=1 to m-n+1 do
begin
Inc(a2[s2[i+n-1]]);
tf:=true;
for ch:='A' to 'z' do
if a2[ch]<> a1[ch] then
begin
tf:=false;
break;
end;
if tf then inc(dem);
Dec(a2[s2[i]]);
end;
writeln(dem);
end;
|