Skip to content
Narrow screen resolution Wide screen resolution Auto adjust screen size Increase font size Decrease font size Default font size default color grey color
         
 | 
VNOI - Olympic tin học Việt Nam

Điểm tin VOJ

Số thành viên:6040
Số bài tập:1001
Số bài nộp:722923
Bài nộp hôm nay:0

Top 10 thành viên xuất sắc

HạngThành viênĐiểm
1mr_invincible587.9
2white_cobra418.6
3hieult403.4
4phaleq384.0
5vodanh9x368.2
6con_nha_ngheo352.0
7flash_mt350.2
8darksabers349.8
9yenthanh132345.3
10rockman9x_94343.1

Danh tiếng các thành viên

HạngThành viênĐiểm
1mr_invincible+213
2conankudo+149
3khuc_tuan+137
4tuananhnb93+129
5khanhptnk+108
6hphong+103
7flash_mt+99
8paulmcvn+71
9technolt+70
10hoangle+63

Topcoder Vietnam

HạngThành viênĐiểm
Diễn đàn
Forum
Trả lời: PBCWRI (1 đang xem) ,(1) Khách
Bài viết dưới cùng Gửi trả lời Được ưa thích: 0
  • Trang:
  • << < 1 2 > >>
CHỦ ĐỀ - Trả lời: PBCWRI
#22250
mrdl (Thành viên)
mrdl+4
Không code nữa rồi
Bài viết: 516
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: PBCWRI 10 năm, 11 tháng trước   (+0)
bài này dùng queue.
 
Đã lưu IP Đã lưu IP  
  Đã khóa chức năng gửi bài.
#69565
tink9 (Thành viên)
tuanrint+1
Đã biết code đệ quy
Bài viết: 14
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: PBCWRI 8 năm trước   (+0)
Code:
CONST fi = '';
VAR  a : array[1..3000]of char;
     ap : array['A'..'z']of boolean;
     b : array[1..3000000]of char;
     queue: array[1..3000000]of char;
     dem, top, bot : longint;
     s, w : qword;
     n, m : longint;
     f : text;
 
Procedure enter;
Var i: integer;
Begin
   assign(f, fi);
   reset(f);
     readln(f, n, m);
     for i:=1 to n do
      begin
        read(f, a[i]);
        ap[a[i]]:= true;
        w:= w+ord(a[i]);
      end;
     for i:=1 to m do read(f, b[i]);
   close(f);
End;
 
Procedure solve;
Var i, j, top, bot : longint;
Begin
   top:= 1; bot:= top; dem:= 0; s:= 0;
   for i:= 1 to m do
    begin
      if ap[b[i]] then
       begin
         inc(top);
         queue[top]:= b[i];
         s:= s+ord(b[i]);
         if (top-bot=n)and(s=w)then inc(dem);
         if (top-bot>n) then
          begin
            s:=s-ord(queue[i-n]);
            if w=s then inc(dem);
            inc(bot);
          end;
       end
      else if top>1 then
           begin
             s:= 0;
             dec(top);
             bot:= top;
           end;
    end;
End;
 
Procedure print;
Begin
   writeln(dem);
End;
 
BEGIN
   enter;
   solve;
   print;
END.
 
Mọi người coi sai chổ nào chỉ em với, em dùng queue kì lạ thế này ạ. Em dùng mảng ap['A'..'z'] để đánh dấu các kí tự có trong dẫy kí tự a; Với các kí tự có trong a ta đổi kí tự đó ra ord(a[i]) sao đó tổng cho s:= s+ord(a[i]); Nếu không phải ta gắn cho s=0 lại; Còn nếu w=s (với w=w+ord(a[i])(i:=1->n)) THEN inc(dem); Cuối cùng write(dem);
 
Đã lưu IP Đã lưu IP  
  Đã khóa chức năng gửi bài.
#69656
cuongtink21 (Thành viên)
cuongtink21
Đã biết code đệ quy
Bài viết: 19
graphgraph
Thành viên gián tuyến Click vào đây để xem thông tin về thành viên này
Trả lời: PBCWRI 8 năm trước   (+0)
Bạn trượt đoạn độ dài = A trên B và kiểm tra là được mà
 
Đã lưu IP Đã lưu IP  
  Đã khóa chức năng gửi bài.
Bài viết trên cùng Gửi trả lời
  • Trang:
  • << < 1 2 > >>
Powered by FireBoardBài viết mới nhất từ diễn đàn cho các chương trình nhận tin RSS