1. Trang chủ
  2. » Giáo án - Bài giảng

De HSG Tin Yên Bái 2010-2011

6 398 1
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đề thi chính thức môn Tin học lớp 12
Trường học Sở Giáo Dục Và Đào Tạo Tỉnh Yên Bái
Chuyên ngành Tin học
Thể loại Đề thi chính thức
Năm xuất bản 2010-2011
Thành phố Yên Bái
Định dạng
Số trang 6
Dung lượng 62 KB

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

Nội dung

đường, Chính phủ ra quyết định cần phải phá huỷ các tuyến đường cắt nhau giữa 2 thành phố.. Mỗi tuyến đường được hiển thị bởi 2 số ai và bi 1.

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI

TỈNH YÊN BÁI LỚP 12 THPT NĂM HỌC 2010- 2011

Môn thi: Tin học Thời gian: 180 phút (không kể thời gian giao đề) Ngày thi: 10-10-2010

Bài 1(6 điểm): Cho một số tự nhiên N (1<=N<=120), người ta phân tích số N

thành các số tự nhiên si (1<= si<= N) có tổng bằng N Ví dụ N=4 ta có 5 cách phân tích:

Cách 1: 4 = 1+1 +1+1

Cách 2: 4 = 2 +1+1

Cách 3: 4= 2+2

Cách 4: 4= 3+1

Cách 5: 4= 4

Yêu cầu: Từ một số N cho trước, tìm số cách để phân tích như trên.

Dữ liệu vào: Từ file PT.INP có chứa giá trị N (1<=N<=120)

Kết quả ra: Ghi ra file PT.OUT chứa tổng số cách phân tích được.

Ví dụ:

Bài 2 (7 điểm): Để xây dựng một trường Đại học mới tại tỉnh A, UBND tỉnh

đã đưa ra n địa điểm và đánh số từ 1 đến n, sau đó chọn ra 1 địa điểm X để xây dựng trường Để tạo điều kiện cho sinh viên đến trường, người ta tiến hành làm mới 1 số tuyến đường sao cho đảm bảo các sinh viên đến trường đều đi qua đường mới xây dựng và tổng độ dài các quãng đường phải xây dựng mới là nhỏ nhất.

Yêu cầu: Hãy tính ra m là tổng số độ dài các quãng đường phải xây mới.

Dữ liệu vào: - Từ file XT.INP có dòng đầu là n, X, (0<n<=500, 0<X<=n),

các dòng kế tiếp mỗi dòng ghi 3 số A, B, C (mỗi số cách nhau một kí tự trắng) cho biết khoảng cách từ điểm A đến điểm B là C, (0<C<32000)

- Dữ liệu đảm bảo luôn có đường đi từ các điểm khác về điểm X

đã chọn

Kết quả ra: Ghi ra file XT.OUT gồm 1 số m.

Ví dụ:

4 2

2 1 15

2 3 8

2 4 20

3 4 6

29

Bài 3 (7 điểm): Tại quốc gia T đã có n (n<100) tuyến đường được xây dựng

giữa 2 thành phố A và B Để quy hoạch và xây dựng mới lại các tuyến

ĐỀ CHÍNH THỨC

(Đề thi có 02 trang)

Trang 2

đường, Chính phủ ra quyết định cần phải phá huỷ các tuyến đường cắt nhau giữa 2 thành phố Mỗi tuyến đường được hiển thị bởi 2 số ai và bi (1<= ai;bi

<=10000, i=1 n);

Trong đó: - ai , bi tương ứng là 2 điểm nằm trên 2 thành phố.

- Hai tuyến đường p và q được gọi là cắt nhau khi ap<aq, bp>bq hoặc

ap>aq, bp<bq (1<=p,q<=n).

Yêu cầu: - Không còn 2 tuyến đường nào cắt nhau giữa 2 thành phố.

- Số tuyến đường cần phá bỏ là ít nhất.

Dữ liệu vào: File văn bản tên là PD.INP có cấu trúc như sau:

- Dòng đầu tiên là số nguyên dương n.

- n dòng tiếp theo mỗi dòng chứa 2 số ai ,bi là toạ độ tương ứng của n tuyến đường.

Kết quả ra: Xuất ra file văn bản PD.OUT với 1 số duy nhất là số lượng

tuyến đường cần phá.

Ví dụ:

4

4 3

6 8

7 8

7 1

2

HẾT

Họ và tên thí sinh: SBD Chữ ký của giám thị 1: Chữ ký của giám thị 2

(Giám thị không giải thích gì thêm)

ĐÁP ÁN: Đề thi chính thức Môn: Tin học lớp 12

Trang 3

Bài 1: (6 điểm)

program bt1;

const fi='d:\bt1.txt';

fo='d:\bt1.out';

var a:array[1 120,0 120] of longint;

n:byte;

procedure input;

var f:text;

begin

assign(f,fi);

reset(f);

readln(f,n);

close(f);

end;

procedure pt;

var i,j,t:byte;

begin

for i:=1 to n do

for j:=1 to n do a[i,j]:=0;

for i:=1 to n do a[i,0]:=1;

for i:=1 to n do

for j:=1 to n do

if j<i then a[i,j]:=a[i-1,j]

else for t:=1 to i do a[i,j]:=a[i,j]+a[t,j-t]; end;

procedure output;

var f:text;

begin

assign (f,fo);

rewrite(f);

writeln(f,a[n,n]);

close(f);

end;

begin

input;

pt;

output;

end.

Bài 2: (7 điểm)

program bt2;

const fi='D:\bt2.txt';

fo='D:\bt2.out';

nmax=100;

vc=100;

var a:array[1 nmax,1 nmax] of 0 100;

d:array[1 nmax] of longint;

t,dd:array[1 nmax] of word;

f:text;

i,j,n,x,y,m,s,dmin:word;

tg,min:longint;

procedure nhap;

Trang 4

begin

assign(f,fi); reset(f);

readln(f,n,s);

for i:=1 to n do

for j:=1 to n do a[i,j]:=vc;

for i:=1 to n do a[i,i]:=0;

while not(seekeof(f)) do

begin

readln(f,x,y,m); a[x,y]:=m; a[y,x]:=m;

end;

close(f);

end;

procedure dijstra;

begin

fillchar(dd,sizeof(dd),0);dd[s]:=1;t[s]:=s;d[s]:=0; for i:=1 to n do if i<>s then

begin

d[i]:=a[s,i];t[i]:=s;

end;

repeat

min:=VC;

for i:=1 to n do

if (dd[i]=0) and (d[i]<min) then

begin

min:=d[i];dmin:=i;

end;

if min<>VC then

begin

dd[dmin]:=1;

for i:=1 to n do

if (dd[i]=0) then

if d[i]>d[dmin]+a[dmin,i] then

begin

d[i]:=d[dmin]+a[dmin,i];t[i]:=dmin;

end;

end;

until min=vc;

end;

procedure vietkq;

begin

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

tg:=0;

for i:=1 to n do

if i<>s then tg:=tg+a[i,t[i]];

writeln(f,tg);

close(f);

end;

begin

nhap;

dijstra;

vietkq;

end

Bài 3: (7 điểm)

Trang 5

program bt3;

const fi='d:\pd.txt';

fo='d:\pd.out';

type diem=record

x,y:integer;

end;

mdiem=array[1 100] of diem;

var a,b:mdiem;

c:array[0 100,0 100] of integer; n:byte;

procedure docfile;

var f:text;

i:integer;

t1,t2:integer;

begin

assign(f,fi);

reset (f);

readln(f,n);

for i:=1 to n do

begin

readln(f,t1,t2);

a[i].x:=t1;

b[i].x:=t2;

a[i].y:=i;

b[i].y:=i;

end;

close(f);

end;

procedure sapxep(var d:mdiem);

var tam:diem;

i,j:byte;

begin

for i:=1 to n-1 do

for j:=i+1 to n do

if d[i].x>d[j].x then

begin

tam:=d[i];

d[i]:=d[j];

d[j]:=tam;

end;

end;

function max(a,b:integer):integer; begin

if a>b then max:=a

else max:=b;

end;

procedure xuli;

var i,j:byte;

begin

sapxep(a);

sapxep(b);

for i:=0 to n do

begin

Trang 6

c[i,0]:=0;

c[0,i]:=0;

end;

for i:=1 to n do

for j:=1 to n do

if a[i].y=b[j].y then

c[i,j]:=max(c[i-1,j],c[i,j-1])+1 else c[i,j]:=max(c[i-1,j],c[i,j-1]); end;

procedure ghifile;

var f:text;

begin

assign(f,fo);

rewrite(f);

write(f,n-c[n,n]);

close(f);

end;

begin

docfile;

xuli;

ghifile;

end

Ngày đăng: 18/10/2013, 17:11

TỪ KHÓA LIÊN QUAN

w