Để đạt được kết quả cao trong kì thi sắp diễn ra, các em học sinh khối lớp 5 có thể tải về tài liệu Đề thi chọn đội tuyển Quốc gia môn Tin học năm 2022-2023 có đáp án (Vòng 2) - Sở GD&ĐT Quảng Bình được chia sẻ dưới đây để ôn tập, hệ thống kiến thức môn học, nâng cao tư duy giải đề thi để tự tin hơn khi bước vào kì thi chính thức. Mời các em cùng tham khảo đề thi.
Trang 1S GD&ĐT QU NG BÌNHỞ Ả
Đ CHÍNH TH CỀ Ứ
K THI CH N Ỳ Ọ Đ I TUY N Ộ Ể
D THI Ự CH N H C SINH GI I QU C GIA Ọ Ọ Ỏ Ố
NĂM H C 20222023Ọ
Khóa ngày 20 tháng 9 năm 2022
Môn thi: TIN H CỌ
BÀI THI TH HAIỨ
Th i gian: 1ờ 80 phút (không k th i gian giao đ ) ể ờ ề
Đ g m có ề ồ 03 trang và 03 câu
S d ng ngôn ng l p trình đ gi i quy t các bài toán sau: ử ụ ữ ậ ể ả ế
(* Ph n m r ng, có th là PAS ho c CPP) ầ ở ộ ể ặ
Câu Tên file bài làm Tên file d li u vàoữ ệ Tên file d li u raữ ệ
Câu 1. Hình ch nh t b n màu (6 đi m).ữ ậ ố ể
Trên m t ph ng t a đ Đ các vuông góc Oxy cho n đi m phân bi t Aặ ẳ ọ ộ ề ể ệ i(xi, yi) v i ớ i =
1, 2, 3, …, N. M i đi m Aỗ ể i được tô b i màu Cở i thu c {1, 2, 3, 4}. Ta g i hình ch nh tộ ọ ữ ậ
b n màu là hình ch nh t th a mãn hai đi u ki n sau:ố ữ ậ ỏ ề ệ
B n đ nh c a hình chố ỉ ủ ữ nh t là b n đi m trong ậ ố ể N đi m đã cho và để ược tô b i b nở ố màu khác nhau
Các c nh c a hình chạ ủ ữ nh t song song v i m t trong hai tr c t a đ ậ ớ ộ ụ ọ ộ
Yêu c u:ầ Cho bi t t a đ và màu c a ế ọ ộ ủ N đi m, hãy đ m s lể ế ố ượng hình ch nh t b nữ ậ ố màu
D li u ữ ệ vào: Cho trong file văn b n có tên ả COLOREC.INP có c u trúc: ấ
Dòng 1: Ch a ứ s nguyên d ng ố ươ N là s l ng đi m trên m t ph ngố ượ ể ặ ẳ (4 ≤ N ≤ 105) Dòng th i trong n dòng ti p theo ch a ba s nguyên xứ ế ứ ố i, yi, ci là thông tin v t a đề ọ ộ
và màu c a đi m th i (i = 1, 2, 3, , ủ ể ứ N), (|xi|, |yi| ≤ 200)
(Hai s liên ti p ố ế trên cùng m t dòng độ ược ghi cách nhau ít nh t m t d u cáchấ ộ ấ )
D li u ra: ữ ệ Ghi vào file văn b n có tên ả COLOREC.OUT v i c u trúc: ớ ấ
Dòng 1: Ghi m t s nguyên là ộ ố s lố ượng hình ch nh t đ m đữ ậ ế ược
Ví d :ụ
7
0 0 1
0 1 4
2 1 2
2 -1 3
0 -1 1
-1 -1 4
2
Trang 2-1 1 1
* Gi i h n: ớ ạ 50% s test ng v i 50% s đi m c a bài có 4 ố ứ ớ ố ể ủ ≤ n ≤ 100
Câu 2. Đường đ n trế ường (7 đi m).ể
Ngày 20/9/2022 S GD&ĐT Qu ng Bình t ch c k thi ch n đ i tuy n chính th cở ả ổ ứ ỳ ọ ộ ể ứ
d thi h c sinh gi i Qu c gia t i đi m thi trự ọ ỏ ố ạ ể ường THPT Chuyên Võ Nguyên Giáp. T tấ
c các b n đã chu n b khá k càng. Ch có đi u, các thí sinh d thi r t lo l ng cho Namả ạ ẩ ị ỹ ỉ ề ự ấ ắ
vì nhà Nam cách đi m thi khá xa và b n y không xác đ nh để ạ ấ ị ược đi đường nào đ nế
đi m thi là nhanh nh t. Thể ấ ường ngày m i ngọ ười không quan tâm đ n đi u này, nh ngế ề ư hôm nay là k thi r t quan tr ng nên không mu n b n Nam đ n tr ỳ ấ ọ ố ạ ế ễ
B n đ thành ph ả ồ ố Đ ng H i ồ ớ g m có N nút giao thông và M con đ ng n i các nútồ ườ ố giao thông này. Có 2 lo i con đạ ường là đ ng 1 chi u và đ ng 2 chi u. Đ dài c a m iườ ề ườ ề ộ ủ ỗ con đ ng là m t s nguyên dườ ộ ố ương. Nhà Nam nút giao thông 1ở , đi m thi ể Tr ng THPTườ Chuyên Võ Nguyên Giáp nút giao thông N. Vì m t l trình đ ng đi t nhà Nam t iở ộ ộ ườ ừ ớ
đi m thi có th g p nhi u y u t khác nh là g p nhi u đèn đ , đi qua công trể ể ặ ề ế ố ư ặ ề ỏ ường xây
d ng, ph i gi m t c đ cho nên Nam mu n bi t là có t t c bao nhiêu ự ả ả ố ộ ố ế ấ ả đ ng điườ ng nắ
nh t đi t nhà t i đi m thi. ấ ừ ớ ể Các b n ạ thí sinh hãy l p trình giúp Nam gi i quy t bài toánậ ả ế này
D li u ữ ệ vào: Cho trong file văn b n có tên ả SCHOOL.INP có c u trúc: ấ
Dòng 1: Ch aứ hai s nguyên N và Mố (1 ≤ N ≤ 5000; 1 ≤ M ≤ 20000).
M dòng ti p theo, m i dòng ghi 4 s nguyên dế ỗ ố ương K, U, V, L. Trong đó:
+ K = 1 có nghĩa là có đường đi m t chi u t U đ n V v i đ dài L.ộ ề ừ ế ớ ộ
+ K = 2 có nghĩa là có đường đi hai chi u gi a U và V v i đ dài L.ề ữ ớ ộ
(1 ≤ U,V ≤ N; L ≤ 32000)
(Hai s liên ti p trên cùng m t dòng đố ế ộ ược ghi cách nhau b i ít nh t m t d u cách)ở ấ ộ ấ
D li u ra: ữ ệ Ghi vào file văn b n có tên ả SCHOOL.OUT v i c u trúc: ớ ấ
Dòng 1: Ghi 1 s là ố đ dài độ ường đi ng n nhắ ất
Dòng 2: Ghi 1 s là ố s lố ượng đường đi ng n nh t. ắ ấ
Bi t r ng s lế ằ ố ượng đường đi ng n nh t không vắ ấ ượt quá ph m vi ạ int64 trong pascal
hay long long trong C++.
Ví d : ụ
Trang 3SCHOOL.INP SCHOOL.OUT
3 2
1 1 2 3
2 2 3 1
4 1
Câu 3. X p hàng (7 đi m).ế ể
Đ trình di n m t ti t m c trong màn khai m c Đ i h i th thao qu c t , đ oể ễ ộ ế ụ ạ ạ ộ ể ố ế ạ
di n Hùng đã m i ễ ờ n v n đ ng viên có chi u cao khác nhau t ng đôi ậ ộ ề ừ m t ộ tham gia. Theo
k ch b n, n v n đ ng viên s đị ả ậ ộ ẽ ược x p thành m t hàng d c, đ u hàng phía khán đàiế ộ ọ ầ ở
A (khán đài ch a các khách m i qu c t ), cu i hàng phía khán đài B (khán đài cóứ ờ ố ế ố ở nhi u du khách và các quan ch c đ a phề ứ ị ương). Đ o di n mu n r ng t phía khán đài A,ạ ễ ố ằ ừ khán gi có th nhìn th y P v n đ ng viên, còn t phía khán đài B khán gi có th nhìnả ể ấ ậ ộ ừ ả ể
th y Q v n đ ng viên. M t v n đ ng viên đấ ậ ộ ộ ậ ộ ược nhìn th y t phía khán đài A n u nhấ ừ ế ư
t t c các v n đ ng viên đ ng trấ ả ậ ộ ứ ước (theo chi u t đ u hàng đ n cu i hàng) đ u cóề ừ ầ ế ố ề chi u cao th p h n v n đ ng viên này. M t v n đ ng viên đề ấ ơ ậ ộ ộ ậ ộ ược nhìn th y t phía khánấ ừ đài B n u nh t t c các v n đ ng viên đ ng sau (theo chi u t đ u hàng đ n cu iế ư ấ ả ậ ộ ứ ề ừ ầ ế ố hàng) đ u có chi u cao th p h n v n đ ng viên nàyề ề ấ ơ ậ ộ
Ví d : ụ Có 9 v n đ ng viên đậ ộ ược x p theo th t v i dãy chi u cao tế ứ ự ớ ề ương ng là ứ
3, 2, 4, 1, 9, 8, 7, 5, 6 thì t ừ khán đài A ( phía bên trái) có th nhìn th y 3 ng i (v i chi u cao là 3, 4, 9), còn tở ể ấ ườ ớ ề ừ khán đài B ( phía bên ph i) có th nhìn th y 4 ng i (v i chi u cao là 6, 7, 8, 9). ở ả ể ấ ườ ớ ề
Yêu c u:ầ Hãy giúp đ o di n xác đ nh xem có bao nhiêu cách x p n v n đ ng viênạ ễ ị ế ậ ộ thành hàng d c tho mãn đi u ki n đ t ra. ọ ả ề ệ ặ
D li u ữ ệ vào: Cho trong file văn b n có tên ả QUEUE.INP có c u trúc: ấ
Dòng đ u tiên ghi ba s nguyên dầ ố ương n, P, Q (n 2000; P, Q n)
Dòng th hai g m n s nguyên dứ ồ ố ương là các đ cao c a n v n đ ng viên độ ủ ậ ộ ược m iờ tham gia th c hi n ti t m c trình di n. ự ệ ế ụ ễ
(Hai s liên ti p trên cùng m t dòng đố ế ộ ược ghi cách nhau b i ít nh t m t d uở ấ ộ ấ cách)
D li u ữ ệ ra: Ghi vào file văn b n có tên ả QUEUE.OUT v i c u trúc: ớ ấ
Dòng 1: G m m t s nguyên là ph n d trong phép chia s lồ ộ ố ầ ư ố ượng cách x p tìmế
được cho 109+7
Ví d : ụ
3 2 1
1 2 3
1
Gi i thích: ả Trong s 6 cách x p 3 v n đ ng viên thành m t hàng d c, có m t ố ế ậ ộ ộ ọ ộ cách duy nh t các v n đ ng viên đấ ậ ộ ược x p theo th t chi u cao là 2, 1, 3 tho mãn yêu c uế ứ ự ề ả ầ
Trang 4đ t raặ : Nhìn t khán đài A th y đừ ấ ược 2 v n đ ng viên 2,3; nhìn t khán đài B th y đậ ộ ừ ấ ượ c
1 v n đ ng viên 3ậ ộ
* Gi i h n ớ ạ
? ≤ 10: 30% s đi m ố ể
? ≤ 500; ? = 1: 30% s đi m ố ể
? ≤ 500: 20% s đi m ố ể
? ≤ 2000: 20% s đi m ố ể
YÊU C U CHUNGẦ
I. PHƯƠNG PHÁP
Bài thi c a thí sinh đủ ược ch m b ng chấ ằ ương trình ch m t đ ng Themis.ấ ự ộ
Test c a các bài đủ ược đ t c u hình nh sau:ặ ấ ư
+ Câu 1: GK t o ít nh t ạ ấ 12 test, m i test tỗ ương ng v i s đi m ứ ớ ố ể 6đ/s testố Th i gianờ cho m i test c a câu 1 là 1 giây.ỗ ủ
+ Câu 2: GK t o ít nh t 14 testạ ấ , m i test tỗ ương ng v i s đi m ứ ớ ố ể 7đ/s testố , th i gianờ cho m i test c a câu 2 là 1 giây.ỗ ủ
+ Câu 3: GK t o ít nh t 14 testạ ấ , m i test tỗ ương ng v i s đi m ứ ớ ố ể 7đ/s testố , th i gianờ cho m i test c a câu 2 là 1 giây.ỗ ủ
T ng đi m đổ ể ược làm tròn đ n m t ch s hàng th p phân.ế ộ ữ ố ở ậ
II. CHƯƠNG TRÌNH G I ÝỢ
Program COLOREC;
Uses Math;
Const
minXY =200;
maxXY =200;
fi='COLOREC.INP';
fo='COLOREC.OUT';
Var
res :LongInt;
A :Array[minXY maxXY,minXY maxXY] of Byte;
C :Array[1 4,1 4] of integer;
f:Text;
maxx,may,mix,miy:integer;
procedure Enter;
var
i,n :LongInt;
Trang 5begin
assign(f,fi);
reset(f);
Read(f,n);
maxx:=201;
mix:=201;
may:=201;
miy:=201;
FillChar(A,SizeOf(A),0);
for i:=1 to n do
begin
Read(f,x,y,A[x,y]);
if x>maxx then maxx:=x
else if x<mix then mix:=x;
if y>may then may:=y
else if y<miy then miy:=y;
end;
close(f);
end;
procedure Solve;
var
x1,x2,y :SmallInt;
begin
res:=0;
for x1:=miX to maxx1 do
for x2:=x1+1 to maxx do
begin
FillChar(C,SizeOf(C),0);
for y:=miY to maY do
if (A[x1,y]*A[x2,y]>0) then
Inc(C[Min(A[x1,y],A[x2,y]),Max(A[x1,y],A[x2,y])]); Inc(res,C[1,2]*C[3,4]+C[1,3]*C[2,4]+C[1,4]*C[2,3]); end;
end;
Begin
Enter;
Solve;
Assign(f,fo); Rewrite(f);
Write(f,res);
Close(f);
End.
Trang 6Câu 2. Đường đ n trế ường (7 đi m). ể
SHOOL.*
const
tfi='school.inp';
tfo='school.out';
maxn=5001;
type
PtrNode=^Node;
Node = record id: integer; Ts: integer; next: PtrNode; end; arr1=array[1 maxn] of PtrNode;
arr2=array[1 maxn] of integer;
arr3=array[1 maxn] of longint;
arr4=array[1 maxn] of byte;
arr5=array[1 maxn] of int64;
var
fi, fo: text;
N,M: integer;
a: arr1;
q: arr2;
qn: integer;
kc: arr3;
color: arr4;
sl: arr5;
cs: arr2;
procedure initq;
begin
qn:=0;
end;
procedure put(u: integer);
begin
inc(qn);
q[qn]:=u;
end;
function get: integer;
var u,i: integer;
begin
u:=1;
for i:=2 to qn do
if kc[q[i]]<kc[q[u]] then u:=i;
get:=q[u];
q[u]:=q[qn];
dec(qn);
end;
function qempty: boolean;
Trang 7qempty:=(qn=0);
end;
procedure ThemCanh(u,v,L: integer);
var t: PtrNode;
begin
new(t);
t^.id:=v; t^.Ts:=L;
t^.next:=a[u];
a[u]:=t;
end;
procedure dijstra;
var u,v: integer;
t: PtrNode;
begin
initq;
fillchar(color,sizeof(color),0);
put(1); color[1]:=1; kc[1]:=0;
repeat
u:=get; color[u]:=2;
t:=a[u];
while t<>nil do
begin
v:=t^.id;
if (color[v]=1) and (kc[v]>kc[u]+t^.Ts) then kc[v]:=kc[u]+t^.Ts;
if color[v]=0 then
begin
put(v);
kc[v]:=kc[u]+t^.Ts;
color[v]:=1;
end;
t:=t^.next;
end;
until qempty;
end;
procedure sort(k,l: integer);
var r: longint;
i,j, tg: integer;
begin
r:=kc[cs[(k+l) div 2]];
i:=k; j:=l;
repeat
Trang 8while kc[cs[j]]>r do dec(j);
if i<=j then
begin
tg:=cs[i]; cs[i]:=cs[j]; cs[j]:=tg; inc(i);
dec(j);
end;
until i>j;
if k<j then sort(k,j);
if i<l then sort(i,l);
end;
procedure Tim;
var i,u,v: integer;
t: PtrNode;
begin
dijstra;
fillchar(sl,sizeof(sl),0);
sl[1]:=1;
for i:=1 to n do cs[i]:=i;
sort(1,N);
i:=1;
while (i<=n) and (cs[i]<>n) do
begin
u:=cs[i];
if sl[u]>0 then
begin
t:=a[u];
while t<>nil do
begin
v:=t^.id;
if kc[v]=kc[u]+t^.Ts then
sl[v]:=sl[v]+sl[u];
t:=t^.next;
end;
end;
inc(i);
end;
end;
procedure doc;
var i,k,u,v,L: integer;
begin
read(fi,n,m);
for i:=1 to n do a[i]:=nil;
for i:=1 to m do
Trang 9read(fi,k,u,v,L);
ThemCanh(u,v,L);
if k=2 then ThemCanh(v,u,L);
end;
end;
procedure main;
begin
assign(fi,tfi); reset(fi);
assign(fo,tfo); rewrite(fo);
doc;
tim;
writeln(fo,kc[n]);
writeln(fo,sl[n]);
close(fi); close(fo);
end;
BEGIN
main;
END.
Câu 3. X p hàngế (7 đi m). ể
QUEUE.*
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
#include <math.h>
using namespace std;
#define LL long long
#define uLL unsigned long long
#define FOR(i,l,r) for(int i = l; i <= r; ++i)
#define REP(i,l,r) for(int i = l; i < r; ++i)
#define FORD(i,r,l) for(int i = r; i >= l; i)
#define REPD(i,r,l) for(int i = r; i > l; i)
#define pi pair<int,int>
#define pii pair<int,pi>
#define mp make_pair
#define fi first
Trang 10const int maxN = 2001;
const LL MOD = 1e9 + 7;
int tcases = 1;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
int N,P,Q;
LL F[maxN][maxN],C[maxN][maxN],H[maxN];
LL cal(int len,int p){
if(F[len][p] >= 0) return F[len][p];
return 0;
}
void testcase(){
cin >> N >> P >> Q;
//
F[1][1] = 1;
FOR(i,0,N) FOR(j,0,N){
if(j > i){
F[i][j] = 0;
}else if(i == j){
F[i][j] = 1;
}else if(j == 0){
F[i][j] = 0;
}else if(j == 1){
F[i][j] = H[i 1];
}else F[i][j] = (F[i 1][j 1] + 1LL * (i 1) * F[i 1][j]) % MOD;
}
LL res = 0;
FOR(i,1,N){
res += ((cal(i 1,P 1) * cal(N i,Q 1)) % MOD * C[i 1][N 1]) % MOD; res %= MOD;
}
cout << res;
}
void init(){
H[0] = 1;
REP(i,1,maxN) H[i] = (H[i 1] * i) % MOD;
REP(i,0,maxN) REP(j,0,maxN){
if(i > j) C[i][j] = 0;
else if(i == 0 || i == j) C[i][j] = 1;
else if(i == 1) C[i][j] = j;
else C[i][j] = (C[i 1][j 1] + C[i][j 1]) % MOD;
}
}
int main(){
ios_base::sync_with_stdio(false);
Trang 11cout.tie();
//
freopen("QUEUE.INP","r",stdin);
freopen("QUEUE.OUT","w",stdout);
//cin >> tcases;
init();
FOR(i,1,tcases) testcase();
return 0;
}