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 187 2

Đ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 46 KB

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

Nội dung

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 Cho một xâu X có chiều dài N ký tự.. Một xâu Y được gọi là xâ

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

Cho một xâu X có chiều dài N ký tự 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)

+ Có K ký tự ‘A’

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 (0 < N <= 1000000; 0 < L<= M <= 14; 0 < K <= M) Trong đó: N là độ dài của xâu X, M là chiều dài lớn nhất của các xâu con Y, K là số lượng

ký tự ‘A’ Các số ghi cách nhau ít nhất một dấu cách

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

Dữ liệu ra: Ghi 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.

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ụ 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

Trang 2

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ả thời điểm đầu mút

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

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

-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 (0<Mi,Bi,Ti<32767)

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

-Dòng 1: Ghi số P, là tổng số tiền lớn nhất thu được (0<P<= 2 tỷ)

Ví dụ:

THUEMAY.INP

3

50 300 200

30 230 100

270 350 150

THUEMAY.OUT

250

Trang 3

ĐÁP ÁN BÀI 1: XAUCON

const

mm=14;

kk=7;

nn=1000000;

fi='xaucon.inp';

fo='xaucon.out';

type mmc=array[1 14] of longint;

var f:text;

st:string;

n,m,k,d:longint;

dem:mmc;

ti:longint;

function sl(s1:string):longint;

var i:integer;s:longint;

begin

s:=0;

for i:=1 to length(s1) do if s1[i]='A' then s:=s+1; sl:=s;

end;

procedure xl;

var i,j:longint; c:char;

s1:string;

begin

st:='';

for i:=1 to 14 do dem[i]:=0;

assign(f,fi);

reset(f);

readln(f,n,m,k);

for i:=1 to m do

begin

read(f,c);

st:=st+c;

end;

for i:=k to m do

begin

for j:=1 to m-i+1 do

begin

s1:=copy(st,j,i);

if sl(s1)=k then dem[i]:=dem[i]+1;

end;

end;

d:=m;

repeat

read(f,c);

d:=d+1;

st:=copy(st,2,length(st)-1)+c;

Trang 4

for i:=m-k+1 downto 1 do

begin

s1:=copy(st,i,length(st)-i+1);

if sl(s1)=k then dem[length(st)-i+1]:=dem[length(st)-i+1]+1; end;

until d=n;

close(f);

d:=0;

for i:=1 to m do d:=d+dem[i];

assign(f,fo);rewrite(f);

writeln(f,d);

close(f);

end;

begin

ti:=meml[0:$46c];

xl;

writeln('TG=',(meml[0:$46c]-ti)/18.2:8:4);

readln;

end

Bài 2: THUEMAY.PAS

{$R+}

Program Thue_May;

Const

fi='Thuemay.inp';

fo='Thuemay.out';

Type

ii=integer; li=longint; bb=byte; bo=boolean;

mmc=array[0 16000] of li;

Var

a,b,c:^mmc; s:mmc;

n:li;

time:li;

f:text;

Dynamic:Pointer;

Procedure DocF;

var

i:li;

begin

Mark(Dynamic);

new(a); new(b); new(c);

assign(f,fi);

reset(f);

readln(f,n);

a^[0]:=0; b^[0]:=0; c^[0]:=0;

for i:=1 to n do

begin

read(f,a^[i],b^[i],c^[i]);

Trang 5

b^[i]:=a^[i]+b^[i];

end;

close(f);

end;

Procedure Sort(l,r:Integer);

var

i,j,x,y,x1:li;

begin

i:=l;

j:= r;

x :=B^[(l+r)DIV 2];

x1:=A^[(l+r)DIV 2];

repeat

while (b^[i]<x) or ((b^[i]=x) and (a^[i]<x1)) do i:=i+1; while (x<b^[j]) or ((b^[j]=x) and (x1<a^[j])) do j:=j-1;

if i<=j then

begin

y:=a^[i]; a^[i]:=a^[j]; a^[j]:=y;

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

y:=c^[i]; c^[i]:=c^[j]; c^[j]:=y;

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

end;

until i > j;

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

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

end;

Function GetMax(x,y:li):li;

begin

if x>y then GetMax:=x

else GetMax:=y;

end;

Function Timkiem(l,r,x:li):li;

var

kq:li;

Procedure NhiPhan(l,r:li);

var mid:li;

begin

if l<=r then

begin

mid:=(l+r) div 2;

if b^[mid]<=x then

begin

kq:=mid;

NhiPhan(mid+1,r);

end

else NhiPhan(l,mid-1);

end;

end;

Trang 6

Nhiphan(l,r);

Timkiem:=kq;

end;

Procedure XuLy;

var

i,j:li;

begin

fillchar(s,sizeof(s),0);

Sort(1,n);

for i:=1 to n do

begin

j:=TimKiem(0,i,a^[i]);

s[i]:=GetMax(s[i-1],s[j]+c^[i]);

end;

end;

Procedure GhiF;

begin

assign(f,fo);

rewrite(f);

writeln(f,s[n]);

close(f);

Release(Dynamic);

end;

Begin

time:=meml[$0:$046C];

DocF;

XuLy;

GhiF;

Writeln((meml[$0:$046C]-time)/18.21:0:9,' Secs'); End

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

TỪ KHÓA LIÊN QUAN

w