Trang chủ Tin Học Lớp 11 Đề thi tin học trẻ tỉnh Nghệ An -câu 1...

Đề thi tin học trẻ tỉnh Nghệ An -câu 1 Làm = pascal với ạ, ai nhanh và đúng nhất đc 5 sao+ctlhnTrên mặt phẳng tọa độ có n+1 điểm: điểm nguyên A(x,y) và n điểm

Câu hỏi :

Đề thi tin học trẻ tỉnh Nghệ An -câu 1 Làm = pascal với ạ, ai nhanh và đúng nhất đc 5 sao+ctlhn

image

Lời giải 1 :

type int = longint;
type bool = boolean;
type iarray = array[0..200000] of int;

var i, n: int;
var x, y: int;
var a: iarray;
var S: double;
var res: int64;

procedure swap(var a, b: int);
var tmp: int;
begin
    tmp:=a; a:=b; b:=tmp;
end;

procedure sort(var a: iarray; l, r: int);
var i, j, x: int;
begin
    i:=l; j:=r; x:=a[(l + r) shr 1];
    repeat
        while a[i] < x do inc(i);
        while x < a[j] do dec(j);
        if i <= j then begin
            swap(a[i], a[j]);
            inc(i); dec(j);
        end;
    until i > j;
    if i < r then sort(a, i, r);
    if l < j then sort(a, l, j);
end;

function calc(idx: int): int;
var l, r, mid: int;
begin
    l:=idx; r:=n;
    while l <= r do begin
        mid:=(l + r) shr 1;
        if a[mid] - a[idx] > S then r:=mid - 1 else l:=mid + 1;
    end; 
    exit(r + 1);
end;

begin
    readln(n, S);
    readln(x, y);
    for i:=1 to n do read(a[i]);
    sort(a, 1, n);
    S:=S * 2 / y;
    
    res:=0;
    for i:=1 to n do inc(res, n - calc(i) + 1);
    writeln(res);
end.

Thảo luận

-- thế sửa lại câu trả lời đi, tui cho ctlhn cho
-- sửa rồi :))
-- var res: int; đổi int -> int64 là được rồi :))
-- ok 20/20 r giỏi phết :v
-- bạn ơi bạn giải thích cho mình từ hàm calc đc ko ?
-- Giả sử: i, j là 2 điểm thỏa mãn khi chúng tạo với điểm B(x, y) cho trước 1 tam giác có diện tích P > S `=> h = B_y` `=> (a[j] - a[i]) * h/2 > S` `=> a[j] - a[i] > 2S/h` `=> a[i] < a[j] - 2S/h` Mà tại điểm thứ nhất (i), ta có thể chặt nhị phân để tìm đi... xem thêm
-- hàm calc là hàm chặt nhị phân (binary search) thôi :))
-- à cảm ơn bạn nhé tại mình chưa học chặt nhị phân nên ko hiểu :))

Lời giải 2 :

Code

uses crt;
var n,s,x,y,i,j,t: integer;
var a: array[1..200001] of integer;
begin
t:=0;
read(n,s);
read(x,y);
for i:=1 to n do read(a[i]);
for i:=1 to n do
    for j:=i+1 to n do
        if y*(abs(a[i]-a[j]))*0.5 > s then t:= t + 1;
writeln(t);
readln;
end.

(Check lại hộ)

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ự 11

Lớp 11 - Năm thứ hai ở cấp trung học phổ thông, gần đến năm cuối cấp nên học tập là nhiệm vụ quan trọng nhất. Nghe nhiều đến định hướng sau này rồi học đại học. Ôi nhiều lúc thật là sợ, hoang mang nhưng các em hãy tự tin và tìm dần điều mà mình muốn là trong tương lai nhé!

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK