1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề thi và đáp án HSG cấp tỉnh môn Tin học tỉnh Thanh Hóa năm 2022

11 917 4
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 1,41 MB
File đính kèm Test_VA_Code_VA_Huongdancachlam.rar (6 MB)

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

Nội dung

Đề thi, Bộ test, chương trình viết bằng NNLT C++ kèm theo file hướng dẫn chi tiết cách làm các bài có trong đề thi. Các bạn chỉ cần tải về làm thử hoặc cho HS làm thử, sau đó dùng chương trình chấm tự động Themis để chấm. Bài nào chưa được full điểm các bạn có thể xem hướng dẫn cách làm và code mẫu. Xin cảm ơn

Trang 4

HƯỚNG DẪN GIẢI ĐỀ THI

File này mình chỉ share hướng dẫn làm Bài 1 thôi nhé Bạn nào muốn có tất cả các bài thì tải file hướng dẫn về xem

Bài 1: Ta tóm tắt lại đề một chút nhé

Cả khu phố có N người

Có a người biết thực hiện tốt việc cách ly (Lưu ý biết thực hiện tốt việc cách ly nhưng chưa chắc đã thực hiện cách ly tốt, cũng như biết mà không làm ấy)

Cán bộ y tế chỉ ghi được b người thực hiện việc cách ly không tốt (như vậy b này có thể là tất cả những người trong khu phố thực hiện việc cách ly không tốt hoặc chỉ là một phần trong số những người thực hiện việc cách ly không tốt)

Ta có hình vẽ sau:

Dựa vào 2 hình vẽ trên ta có cách tìm số người tối thiểu và số người tối đa thực hiện tốt việc cách ly như sau:

- Số người tối thiểu thực hiện tốt việc cách ly khi số người biết cách thực hiện cách ly nhưng không thực hiện tốt việc cách ly nhiều nhất Tức là số lượng người

mà cán bộ y tế ghi được thuộc nhóm a nhiều nhất Do đó ta có cách tính tối thiểu như sau:

Nếu b>a thì

toithieu=0 (cả a người biết thực hiện tốt cách ly nhưng không người nào trong

số a người này thực hiện tốt việc cách ly)

ngược lại

toithieu=a-b (cả b người không thực hiện tốt cách ly mà cán bộ y tế ghi được đều nằm trong nhóm a người, tức đều là những người biết thực hiện cách ly)

- Số người tối đa thực hiện tốt việc cách ly khi số người biết cách thực hiện cách ly

và thực hiện tốt việc cách ly nhiều nhất Tức là số người mà cán bộ y tế ghi được

Trang 5

thuộc nhóm a ít nhất

Nếu b>N-a thì

toida=N-b (có một số người biết thực hiện cách ly nhưng thực hiện không tốt) ngược lại

toida=a (cả a người biết thực hiện cách ly đều thực thực hiện tốt)

CODE Bài 1

#include<bits/stdc++.h>

#define ll long long

using namespace std;

ifstream fi;

ofstream fo;

ll n,a,b,toithieu,toida;

int main()

{

fi.open("BAI1.INP");

fi>>n>>a>>b;

fi.close();

fo.open("BAI1.OUT");

if (a>b)

toithieu=a-b;

else

toithieu=0;

if (b>n-a)

toida=a-(b-(n-a));

else

toida=a;

fo<<toithieu<<" "<<toida;

return 0;

}

Trang 6

CODE Bài 2:

#include<bits/stdc++.h>

using namespace std;

#define ll long long

ifstream fi;

ofstream fo;

string s;

ll n,na,nb,x,i,j,kq;

char a[1000001],b[1000001];

ll c[1000001],d[1000001]; int main()

{

fi.open("BAI2.INP"); getline(fi,s);

n=s.size();

s=s+" ";

na=0;

x=1;

for (i=0;i<=n;i++)

if (s[i]!=s[i+1]) {

na++;

a[na]=s[i]; c[na]=x; x=1;

} else

x++;

/////

getline(fi,s);

n=s.size();

s=s+" ";

nb=0;

x=1;

for (i=0;i<=n;i++)

if (s[i]!=s[i+1]) {

nb++;

b[nb]=s[i]; d[nb]=x; x=1;

} else

x++;

/////

i=1;

Trang 7

j=1;

kq=0;

while (i<=na && j<=nb)

if (a[i]==b[j] && c[i]>=d[j]) {

if (a[i]==' ')

kq++;

i++;

j++;

} else {

while (a[i]!=' ')

i++;

while (b[j]!=' ')

j++;

i++;

j++;

} fo.open("BAI2.OUT");

fo<<kq;

fo.close();

return 0;

}

Trang 8

CODE Bài 3:

#include<bits/stdc++.h>

using namespace std;

ifstream fi;

ofstream fo;

long long n,i,j,k,d,c,g,vt,kq,a[100001],b[100001],x[100001]; int main()

{

fi.open("BAI3.INP");

fi>>n>>k;

for(i=1;i<=n;i++)

fi>>a[i];

fi.close();

fo.open("BAI3.OUT");

sort(a+1,a+1+n,greater<long long>());

j=1;

kq=0;

for(i=1;i<=n;i++)

{

if (b[i]==0)

kq=kq+a[i];

while (j<=n && (a[i]-a[j]<k || b[j]==1))

j++;

if (j>n) {

for (j=i+1;j<=n;j++)

if (b[j]==0)

kq=kq+a[j];

break;

} else

b[j]=1;

}

fo<<kq;

return 0;

}

Trang 9

CODE Bài 4:

#include<bits/stdc++.h>

using namespace std;

#define ll long long

ifstream fi;

ofstream fo;

ll l,r,i,j,x,n,m,kq;

ll d[1000001],a[1000001];

int main()

{

n=1000000;

m=sqrt(n);

d[1]=1;

for (i=2;i<=m;i++)

if (d[i]==0)

for (j=2*i;j<=n;j=j+i)

d[j]=1;

m=0;

for (i=1;i<=n;i++)

if (d[i]==0) {

m++;

a[m]=i;

} fi.open("BAI4.INP");

fi>>l>>r;

fi.close();

for (i=1;i<=m;i++)

{

x=a[i]*a[i];

j=2;

while (x<r) {

if (x>l && d[j+1]==0) {

kq++;

cout<<x<<' '; }

j++;

x=x*a[i];

} }

fo.open("BAI4.OUT");

fo<<kq;

fo.close();

return 0;

}

Trang 10

CODE Bài 5:

#include<bits/stdc.h>

using namespace std;

#define ll long long

ifstream fi;

ofstream fo;

ll n,i,j,a[1000001],b[1000001],s,nn;

int main()

{

fi.open("BAI5.INP");

fi>>n;

for(i=1;i<=n;i)

fi>>a[i];

fi.close();

for (i=1;i<=9;i)

b[i]=b[i-1][i];

for (i=10;i<=n;i)

{

b[i]=b[i-1][i];

s=a[i];

nn=a[i];

for (j=i-9;j<i;j) {

s=s[j];

if (nn>a[j])

nn=a[j];

} b[i]=min(b[i],b[i-10]nn);

}

fo.open("BAI5.OUT");

fo<<b[n];

fo.close();

return 0;

}

Trong file đính kèm mình có để 2 bộ code Một bộ code do mình hướng dẫn HS làm theo thuật toán trên (C++) và một bộ code của học sinh được 20/20 điểm cho các bạn tham khảo

Trang 11

Dưới đây là hình ảnh chấm điểm bằng Themis

Các bạn có thể xem thêm nhiều đề khác tại

https://sites.google.com/view/dethi-hsgtin/trang-ch%E1%BB%A7/%C4%91%E1%BB%81-thi-hsg-thpt

Rất mong nhận được sự góp ý và ủng hộ Cảm ơn

Ngày đăng: 13/03/2022, 06:42

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w