Trang chủ Tin Học Lớp 9 Thầy BINHHD có N phần quà cho N thí sinh...

Thầy BINHHD có N phần quà cho N thí sinh dự thi kì thi DHBB năm nay. Trên hộp quà thứ i có ghi số nguyên ai. Sau khi tặng quà cho các thí sinh, thầy BINHHD sẽ

Câu hỏi :

Thầy BINHHD có N phần quà cho N thí sinh dự thi kì thi DHBB năm nay. Trên hộp quà thứ i có ghi số nguyên ai. Sau khi tặng quà cho các thí sinh, thầy BINHHD sẽ có thêm những phần quà may mắn cho mỗi cặp thí sinh có cặp số trên hộp quà là ai, aj (i≠j) nếu với một số K cho trước, |ai + aj| = K. Yêu cầu: Hãy cho biết thầy BINHHD phải chuẩn bị bao nhiêu phần quà may mắn. Dữ liệu: Dòng 1: Gồm 2 số N và K. Dòng 2: Gồm N số là các phần tử trong dãy A. Kết quả: Gồm 1 dòng duy nhất ghi số lượng cặp số may mắn. Ví dụ Input 7 5 4 3 4 1 4 3 4 Output 4 Input 5 11 -4 -1 0 7 -4 Output 0 Giới hạn: Kích thước dữ liệu vào: 0<N<=105,| ai|<=1018,0<= K<= 1018 Có ít nhất 60% số test ứng với N<=2000; Giúp mình có thể chạy được những test với n cao với thời gian dưới 1s nhé mn. Xin cảm ơn tất cả mn

Lời giải 1 :

* Thời gian test ở hình.

uses crt;
var n,k,i,j,d:longint; a:array[1..1018] of longint;
begin
   clrscr;
   readln(n,k);
   for i:=1 to n do 
      begin
         read(a[i]);
         for j:=1 to i do 
            if(abs(a[i]+a[j])=k)and(j<>i)then inc(d);
      end;
   writeln(d);
   readln
end.

image

Thảo luận

-- var a:array[0..100000] of int64; n,i,d:longint; k:int64; procedure qs(d,c:longint); var i,j:longint; k,tg:int64; begin i:=d;j:=c;k:=a[(d+c) div 2]; repeat while a[i]<k do inc(i); while a[j]>k do dec(j); if not(i>j) then ... xem thêm
-- ứng dụng thuật toán tìm kiếm nhị phân và QS
-- đâu cần code dài vậy đâu -.-
-- ko dài thế thì TLE =)))
-- Time Limit Exceed ý
-- n=10^5 thì độ phức tạp là O ((10^5)^2)
-- tìm kiếm tuyến tính bình thường không thể nào chạy nổi
-- để mình vào xem thời gian

Lời giải 2 :

uses crt;
var i,j,d,n,k:longint; a:array[1..10000000]of longint;
begin
clrscr;
      readln(n,k);
      for i:=1 to n do 
         begin
            read(a[i]); 
            for j:=1 to i-1 do 
               if abs(a[i]+a[j])=k then inc(d);
         end;

  writeln(d);   

readln;
end.

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, 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 (ảo). Với cách hiểu hiện nay, 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.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 9

Lớp 9 - Là năm cuối ở cấp trung học cơ sở, sắp phải bước vào một kì thi căng thẳng và sắp chia tay bạn bè, thầy cô và cả kì vọng của phụ huynh ngày càng lớn mang tên "Lên cấp 3". Thật là áp lực nhưng các em hãy cứ tự tin vào bản thân là sẻ vượt qua nhé!

Nguồn : ADMIN :))

Copyright © 2021 HOCTAP247