1. Trang chủ
  2. » Trung học cơ sở - phổ thông

Đề thi học sinh giỏi môn tin lớp 11

6 243 3

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 62,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

thể mà yêu cầu khách hàng tự đăng ký vào một phiếu thuê máy.. Mỗi phiếu thuê gồm có các thông tin sau: + Thời điểm bắt đầu thuê Bi + Thời gian thuê Ti + Số tiền phải trả 0... assignf,fo;

Trang 1

Sở giáo dục và đào tạo tỉnh quảng bình

tr ờng thpt chuyên quảng bình

Kỳ thi olimpic tin học 30/04/2006

Đề thi đề xuất

lớp 11

Bài 1: Đếm số xâu con:

XAUCON.PAS

Cho một xâu X có chiều dài N ký tự (0 < N <= 1000000) Xâu chỉ gồm hai loại ký tự ‘A’ và ‘B’ Một xâu Y đợc gọi là xâu con của

X nếu thoả mãn các tính chất sau:

+ Y là một đoạn ký tự liên tiếp của xâu X

+ Có chiều dài L<= M (M cho trớc, 0 < L<= M <= 14)

+ Có K ký tự ‘A’ (0 < K <= M)

Ví dụ: X là: BABABAABBB

Với M=5 và K=3 thì xâu: ABAA là một xâu con.

Yêu cầu: Hãy tìm số lợng xâu con của xâu X.

Dữ liệu vào: Cho trong file văn bản XAUCON.INP có cấu trúc:

Dòng 1: Chứa 3 số N M K Trong đó: N-độ dài xâu X, M-chiều dài lớn nhất của các xâu con Y, K-số lợng ký tự ‘A’ Các số cách nhau một dấu cách

Dòng 2: N ký tự của xâu X Các ký tự viết liền nhau

Dữ liệu ra: Xuất ra file văn bản có tên XAUCON.OUT theo cấu

trúc:

Dòng 1: Ghi số S, là số lợng xâu con tìm đợc

Giới hạn thời gian thực hiện chơng trình không quá 3 giây

Ví dụ:

XAUCON.INP

30 14 4

BBABBBAAAAAABBAABBBABBABABABAB

XAUCON.OUT

41

Một trung tâm vi tính có một siêu máy tính có cài đầy đủ các phần mềm Rất nhiều khách hàng muốn thuê máy để làm việc Tuy nhiên ông chủ trung tâm không đa ra một mức giá cho thuê cụ

Trang 2

thể mà yêu cầu khách hàng tự đăng ký vào một phiếu thuê máy Mỗi phiếu thuê gồm có các thông tin sau:

+ Thời điểm bắt đầu thuê Bi

+ Thời gian thuê Ti

+ Số tiền phải trả 0<Mi<32767

(Bi, Ti nguyên dơng)

Hiện nay, ông chủ trung tâm đã nhận đợc N phiếu đăng ký thuê Ông không nhận thêm phiếu đăng ký nào nữa mà chỉ xem xét và chọn khách hàng để cho thuê

Yêu cầu: Hãy giúp ông chủ trung tâm xác định cần làm hợp đồng

với những khách hàng nào sao cho số tiền thu đợc là lớn nhất Với

điều kiện là khoảng thời gian thuê của hai ngời khách bất kỳ không đợc giao nhau kể cả điểm mút

Dữ liệu vào: Đợc cho trong file văn bản THUEMAY.INP có cấu trúc

nh sau:

-Dòng 1: Ghi số N (0<N<=1000) là số phiếu đăng ký thuê máy

-N dòng tiếp theo: Mỗi dòng ghi 3 số Bi Ti Mi là thông tin của phiếu đăng ký của khách hàng thứ i Các số ghi cách nhau một dấu cách

Dữ liệu ra: Ghi và file văn bản THUEMAY.OUT theo cấu trúc nh

sau:

-Dòng 1: Ghi 2 số P Q cách nhau một dấu cách Trong đó: P là số lợng phiếu đăng ký thuê Q là tổng số tiền thu đợc trong P hợp

đồng đã chọn ở trên

-Dòng 2: Ghi chỉ số khách hàng mà ông chủ trung tâm sẽ đồng ý cho thuê máy

Ví dụ:

THUEMAY.INP

3

50 300 200

30 230 100

270 350 150

THUEMAY.OUT

2 250

3 2

Trang 3

§¸P ¸N

Bµi 1: Xaucon

{$R+,Q+}

Const Fi = 'Xaucon.inp';

Fo = 'Xaucon.out';

Var F : Text;

Mang : Array[0 10000] Of Char; N,m,k : Longint;

ProcedureInit;

Var I,KQ : Longint;

Sla,slb,sl,d,c,l:integer;

Ch:Char;

Begin

Kq:=0;

Assign(f,fi);

Reset(f);

Readln(f,n,m,k);

Sla:=0;

Slb:=0;

Kq:=0;

D:=0;

C:=-1;

Sl:=0;

For i:=1 to n do

Begin

Trang 4

Read(f,ch);

C:=(c+1) mod (m+1);

Mang[c]:=ch;

Inc(sl);

If ch='A' then Inc(sla);

If sl>m then

Begin

If mang[d]='A' then

Begin

Slb:=0 ;

Dec(sla);

End

Else

If slb>0 then Dec(slb); D:=(d+1) mod (m+1); Dec(sl);

End;

While sla>k do

Begin

If Mang[d]='A' then

Begin

Slb:=0;

Dec(sla);

End

Else

If slb=0 then Dec(slb); D:=(d+1) mod (m+1); Dec(sl);

End;

If (slb=0) and (sla=k) then

Begin

L:=d;

While Mang[l]='B' do Begin

Inc(slb);

L:=(l+1) mod (m+1); End;

End;

If sla=k then

Inc(kq,slb+1);

End;

Trang 5

assign(f,fo);

Rewrite(f);

Writeln(kq);

Close(f);

End;

Begin

Init;

End

Bµi 2: THUEMAY.PAS

{$R+,Q+}

Const Fi='thuemay.inp';

Fo='thuemay.out';

Var B,t,m,vt:array[0 1000] Of Longint;

N:Longint; F:Text;

Procedure Init;

Var I:Longint;

Begin

Assign(f,fi); Reset(f);

Readln(f,n);

For i:=1 to n do

Readln(f,b[i],t[i],m[i]);

Close(f);

For i:=1 to n do Vt[i]:=i;

End;

procedure Sort(l, r: Longint);

var i, j, x, y,xx: Longint;

begin

i := l; j := r; x := B[(l+r) DIV 2]; XX:=t[(l+r) DIV 2];

repeat

while (B[i] < x) Or ((b[i]=x) and (T[i]<xx)) do i := i + 1; while (x < B[j]) Or ((b[j]=x) and (T[j]>xx)) do j := j - 1;

if i <= j then

begin

y := b[i]; b[i] := b[j]; b[j] := y;

y := t[i]; t[i] := t[j]; t[j] := y;

y := m[i]; m[i] := m[j]; m[j] := y;

y := vt[i]; vt[i] := vt[j]; vt[j] := y;

i := i + 1; j := j - 1;

end;

Trang 6

until i > j;

if l < j then Sort(l, j);

if i < r then Sort(i, r);

end;

Procedure QHD;

Var I,j,Max,v,v1,dem:Longint;

A,tr:Array[0 1000] Of Longint;

Begin

For i:=1 to n do a[i]:=Longint(M[i]);

Fillchar(tr,sizeof(tr),0);

For i:=1 to n do

For j:=1 to i-1 do

If A[i]<Longint(a[j])+Longint(m[i]) then

If B[i]>=b[j]+t[j] then

Begin

Tr[i]:=j; A[i]:=Longint(a[j])+Longint(m[i]); End;

Max:=a[1]; V:=1;

For i:=1 to n do If max<a[i] then

Begin

Max:=a[i]; V:=i;

End;

Assign(f,fo); ReWrite(f);

V1:=v; Dem:=0;

Repeat

Inc(dem); V1:=tr[v1];

Until V1=0;

Writeln(F,dem,' ',max);

Repeat

Write(f,vt[v],' '); V:=tr[v];

Until V=0;

Close(f);

End;

Begin

Init; Sort(1,n); QHD;

End

Ngày đăng: 17/08/2017, 14:18

TỪ KHÓA LIÊN QUAN

w