Vous êtes sur la page 1sur 17
MUC LUC Trang 1 1 1 2 2 3 3 3 5 1. MO DAU 1. Ly do chon dé tai 2. Muc dich nghién ecru. 3. Pham vi dé tai 4. Phuong phap nghién cru Il. NOLDUNG 1. Cor sé ly un a.Thuat toan tim kiém nhi phan co ban b. Cai dat c. Danh gia d9 phic tap thoi gian ciia thudt toan 2. Cac bién thé ciia thudt toan tim kiém nhi phan (Thuat toan 6 tim mét phan tir c6 gia tri gan bang X) a. Day con tang — Tim phan tir lon nhat nho hon x (chis6lon 6 nhat) b. Day con ting — Tim sé bé nhat lon hon hodc bang x (chisé bé 6 nhat) c. Day con ting —Tim s6 bé nhat ln hon hoae bing x (chi sé lon 7 nhat) e. Day con giam — Tim phan tir dau tién nho hon x 7 d. Day con giam — Tim phan tir cuéi cing 1én hon x 8 ap dung 8 a. Bai ton 1: Bude nhay xa nhat (Dé thi lop 11 trai he Hing vuong = 8 nam 2014) b. Bai toan 2: (Dé thi gio vién gidi cap tinh Thanh Héa nimboe 2013-2014) c. Bai toan 3: CAKES 10 d. Bai toan 4: Bi HIEM n IL KET LUAN VA DE XUAT 16 Tai liéu tham khao SangKienKinhNehiem.net 1.MO DAU 1. Ly do chon dé tai Thuat todn va tw duy thudt tosn Li m6t ndi dung quan trong hinh thinh vin héa tin hoc phé théng xuyén suét toan cp trung hoe phé théng. Day 1a van dé kho va da duge dua vao tir lép 10 dé hoc sinh co diéu kién tiép thu nhanh hon kién thite 6 Iép 11. Tuy nhién trong bdi duéng hoe sinh gidi thuat toan 1a van dé trong tam va cét li. Hoe sinh cn phai higu rat ky vé thuat toan va hoe cdc thuat toan dién hinh. Trong chong trinh sich giéo khoa Tin hoe lép 10 d3 lua chon cae bai toan dién hinh & dang don gian nhat la sip xép va tim kiém. Cac thuat toan giai cde bai toan da duoc trinh bay kha ky lung tir don gian dén phite tap. Trong dé thuat toan tim kiém nhi phn duge danh gid 14 khé déi véi hoe sinh trang hoc phé thong n6i chung. Vi vay thuat todn nay d3 duge giim tai trong chuong trinh hoc dai tra. Tuy nhién trong boi dudng hoc sinh gidi mén tin cdc cap thi thuat todn tim kiém nhi phan lai die biét quan trong. Thuat toan tim kiém nhi phan ding dé tim kiém phan tir trong mét danh sich da duge sp xép, vi du nhu trong mét danh ba dién thoai sp xép theo tén, cé thé tim kiém sé dién thoai ctia mét ngwdi theo tén ngwai dé. Day 14 thudt toan rat quan trong trong Tin hoc, duge ap dung rat nhiéu trong giai todn, né Lim gidm duoc nhiéu théi gian tim kiém, gitp chuong trinh chay nhanh hon. ‘Voi nhing Ii do trén ti chon dé tai “*Thuat todn tim kiém nhi phan trong bdi duwéng hoe sinh gidi mén Tin hoc* 2. Muc dich nghién tru Trong pham vi dé tai ciia minh tdi muén nghién ctu céc bién thé ciia thuat todn tim kiém nhi phan va mét sO bai tap khi ap dung thudt toan tim kiém nhi phan va cde bién thé cia né. Théng qua dé cung cp thém mét phwong phap tw duy, tiép cén dé giai cdc bai toan trong bdi duéng HSG cap tinh, gitp hoc sinh hinh thinh ky nang giai bai toan tin hoc va rén luyén tw duy thugt toan, tir dé ren luyén tu duy lap trinh. Cling qua dé tai, toi muén cing dong nghigp trao déi, trau déi chuyén mén nhdm gép phan nang cao trinh dé chuyén mén nghiép vu va kha ning mé rong kien thie. Véi ban than nghién cuu de tai sang kien kinh nghiém 1 co héi tét dé nghién ctu khoa hoc lim quen véi phuong phap lim khoa hoe tuy chi trong pham vi hep nhung tdi hy vong cing véi né lve cua ban than va su gitip dd cua dong nghiép sé cé nhiing dé tai khoa hoc tot, ly tha va higu qua. SangKienKinhNehiem.net 3. Pham vi dé tai Dé tai nay duge ap dung déi véi hoe sinh kha va gidi v6i nhiém vu chi yeu 1a 6n thi hoe sinh gidi va tin. di duéng kién thie cho hoc sinh yéu thich mén 4. Phong php nghién cru Dé hoan thanh dé tai nay, toi da tién hanh Ap dung mét sé phuong phap nghién cttu sau: Phuong phap dat vin dé - giai quyét van dé, Phuong phdp phan tich tong hop. Phuong phap so sanh déi chiéu, Phuong phap thuc nghiém. nu SangKienKinhNehiem.net Il. NOL DUNG 1. Cor sé ly un a.Thuat ton fim kiém nhi phan co ban Bai toan: Cho day A gom N phan tir nguyén tir Ay, A>,...Ay dutge sip xép thanh day khéng gidm va mot sé nguyén ‘Yéu cau: Tim kiém nhi phan li mét gidi thudt tim kiém nhanh. Giai thudt nay lam viée dua trén nguyén tac chia dé tri (Divide and Conquer). Dé giai thudt nay cé thé im viée mét céch chinh xc thi tap dit ligu nén 6 trong dang da duge sap xép. Tw twéng thuat toan: Tim kiém nhi phan tim kiém mét phan tir cu thé bang cach so sdnh phan tr tai vi tri gitta nhat cia tap dit ligu. Néu tim thay két néi thi chi mue ctia nit duge tra vé. Néu phan nr can tim 14 1én hon gid tri phan tt gitta thi phan tt can tim duge tim trong mang con nam 6 bén phai phan tir gitta: néu khéng thi sé tim 6 trong mang con nim & bén trai phan tir gitta. Tién tinh sé tiép tuc nhw vay trén mang con cho téi khi tim hét moi phan tir trén mang con nay. Gia sir ching ta can tim vi tri cua gid tri 31 trong m6t mang bao gém cic gia tri nh hinh dudi day bai sit dung Binary Seare Dau tién, chung ta chia mang thanh hai nita theo phép todn sau: AESSES 2 |[ 9s 2 |[ « 0 «+ @ @ «# 6 6 7 @ 8 chi-myc-gitta=ban-dau + (cudi+ban-dau)/2 Voi vi du trén 14 0 + (9 — 0)/ 2 = 4 (gid tri 14 4.5). Do dé 4 1a chi muc gitta cia mang. Cee GEeeee- Bay gid cling ta so sénh gia tri phan ni gitta véi phan nr can tim. Gid tri phan tir gitta 1a 27 va phan tir can tim la 31, do d6 la khong két néi. Boi vi gid trj can tim 1a Ion hon nén phan ti can tim sé nim 6 mang con bén phai phan tir gia. SangKienKinhNehiem.net o 4 2 3 4 Chimg ta thay déi gid tri ban-ddu thanh chi-muc-giita + 1 va lai tiép tuc tim kiém gi trj chi-muc-gitta. ban-dau = chi-muc-giita + 1 chi-muc-gitta=ban-déu + (cudi+ban-dau)/2 Bay gid chi muc gitta cla chting ta 1A 7. Ching ta so sinh gia tri tai chi myc nay Véi gid tri cin tim. t [== Bill Gia ti tai chi muc 7 14 khong két n6i, va ngoai ra gid tri cdn tim 1a nho hon gid tri tai chi mue 7 do dé ching ta cén tim trong mang con bén trai eita chi muec gitta nay. a=) 4 5 6 - 7 Tigp tue tim chi-muc-giita lan nita. Lan nay no cé gid tri la 5. + rete) So sanh gid tri tai chi muc 5 véi gid tri can tim va thay ring né két ndi. o. 4 2 3 a 8 o 7 2 4 ' 8 o 4 2 @ 4 6 6 7 8 s Do dé ching ta két ludn rang gid tri can tim 31 duge luv git tai vi tri chi mue 5. Tim kiém nhi phan chia déi Ivong phan tir can tim va do dé giam sé luong phép so snh can thyre hién nén gidi thudt tim kiém nay duoe thue hign khd nhanh. SangKienKinhNehiem.net b. Cai dat Function Tknpeb(X:longint):longint;: Var d, ¢, g: Longint; Begin a c=N; While d<=c Do Begin g:=(d + c) Div 2; if Alg]=X then exit(g); if Algl Ta c6 : Tat (n) = O(1) Truong hop x4u nhdt: Dd phite tap 14 O(log n) That vay, néu goi T(n) 1 dd phite tap ctia thuat toan, thi sau khi kiém tra diéu kign ( x = a{gitta]) va sai thi goi dé qui thuat ton nay véi dit ligu gidm nita, nén thoa man céng thie truy hoi: T(n) = 1 + Ta/2) voi n>=2 va T(1) =0 Voi phuong phap truy héi, c6 thé viet SangKienKinhNehiem.net T(n)=1+1+T(n/2 =14141+T(W/2") Nhu vay T(n) 6 dang T(n)=k+T(w/24) Cuéi cing ta c6 thé chtmg minh duge T(n)=[logon]+1 hay T(n)=O(ogon) R6 rang so v6i thuat todn tim kiém tuan ty, chi phi tim kiém nhi phan it Day cing li phuong phap tim kiém dya trén gid tri so sinh duge anh gia 1a tét nhat. Tuy nhién néu day khéa lu6n bién dong (durge bé sung them hodc loai bét di) thi hic dé chi phi cho sip xép lai ndi lén rat r5 va chinh diéu nay béc 16 nhuoce diém cia phuong phap tim kiém nhi phan. Cf bién thé cia thuat toan tim kiém nhi phan (Thuat toan tim mét phan an bang X) __Trén thyc té khong Iie ndo nguéi ta cling yéu cau tim kiém mot phan tr bing X ma cé thé yéu cau tim phan tr gin bang X nhat. Vi vay véi cae bai khae nhau véi cde yéu cdu tim kiém khde nhau cé thé dé dang sira d6i cho pha hop néu str dung cach tim kiém abi phan minh vita trinh bay. a. Day con tang — Tim phan tir 16n nhat nho hon x (chi sé 1én nhat) tir c6 gid function tim2(r,x : longint) : longint; var d.c,g : longint; begin g:=(d+c) div 2; while (g<>d) and (g<>c) do sort(a); function tim2(r,x : longint) : longint; var d,¢,g : longint; d: car gizd+0/2; while (d= 9) and (g = ) do SangKienKinhNehiem.net begin if alg]> =x then c:: else d'= g; end; gs (d+0/2; forg:=dtocdo if alg]> =x then exit(g); end; ¢. Day con ting —Tim sé bé nhat lén hon hoa bang x (chi sé lon nhat) sort(a); function tim2(r,x : longint) : longint; var d,c,g ; longint; d=1,c=r gz (d+) /2 while (d=) and (g=c) do begin if alg]>x then c:= g; else d:= 9; g= (d+0)/2 end; for g:=ctod do if a[g]<=x then exit(g); end; d. Day con giam — Tim phan ti cudi cing lon hon x function tim 1(r,x : longint) : longint; var d,¢,g : longint; begin g:=(d+0) div 2; while (g<>d) and (<>) do begin if big] >x then d:=g else :=9; g:=(d+¢) div 2; end; for g:=c downto d do if blg]>x then exit(g); end; SangKienKinhNehiem.net e. Day con giam — Tim phan tir dau tién nhé hon x function tim 1(r,x : longint) : longint; var d,cg : longint; begin a=O;c=r; g'=(d+0) div 2; while (g<>d) and (g<>c) do begin if big]>x then d:=g else c:=9; g'=(d+0) div 2; end; for g:=d toc do if b{g]>x then exit(g); end; 3. Bai tip ap dung a. Bai toin 1: Bude nhiy xa nhat (Dé thi lop 11 trai he Hing vuong nam 2014) Cho diy A gém N phan ttr nguyén khéng am Aj, Ao,...A,. Mét bude nhay tir phan ti A; dén phan tt Aj duoc goi 1a bude nhay xa nhat ciia day néu théa min cdc diéu kién sau: +1Sii va a; + a; én n eta day da sip bing tim kiém ni phn, ta tim tiép chi s6 j2 nho nhat thoa min j2> iva a, + ay =x trén doan tirjl dén n cia day da sp bing tim kiém nhi phan (day 1a cdc bai toan co ban), tit nhién néu jl khong tén tai thi khéng tim j2 x trén doan tir i +1 a nia. Néu khéng tén tai jl va j2 thi xét sang sé hang tiép theo, nguge lai ta cong thém vao téng s mot long la SangKienKinhNehiem.net c. Bai ton 3: CAKES Nghé nhan ndu an Tu Map cé thé st dung hé théng gdm n bép dién dé thy hin nu mén an khién éng duge vinh danh, d6 1 mén “gaté bai san”. Thoi gian dé thuc hién ndu mét suat dn nhu vay trén cde bép dién tuong img 1a ty, b, t, gidy. Yéu cau: Cho biét s li sé lwong thuc khach can phue vy, hay xde dinh théi gian t6i thiéu can thiét dé Nghé nhan Tu Map co thé nau xong s suat An trén hé théng bép dién cita khdch san. Dé ndu m4i sudt an chi duge str dung mot bép. Dir ligu: Vao ti file vin ban CAKES.INP: ~ Dong dau tién chita sé long suat ain s (0 < s < 10) va sé Itong bép dignn(0= 5 thi OK(t) :=true, nguge lai thi OK/T) := false SangKienKinhNehiem.net Chwong trinh const ‘fiz'cakes.inp’; ‘fo='cakes.out": var Sitext; s.n.kq:longint; acarray{1..21] of longint; procedure doc; var i:longint; begin assign (ffi) reset); readin(f;s,n); for i:=1 to n do read(f.a[i]); close(F); end; Jfinetion ok(d:longint):boolean; var sl i:longint; tondo +(d div afi); then exit(true) else exit(false); procedure xuli; var Lrgiclongint; begin begin gi:=(+R) shr 1; if ok(gi) then I SangKienKinhNehiem.net procedure ghi; begin assign(f,fo); rewrite); write(F,kq); close(F); end; begin doc; auli; ghi; end. d. Bai toan 4: Bi HIEM BA cia Ellenora thuréng ra cho chau gai minh nhiing bai toan dé mi Elly coi la bi hiém. Budi tdi vita rdi ba dé Elly bai ton sau: “O ctta hang canh nha ta cé k mat hang voi gid khée nhau tir 1 dén k. Ba 6 n dong tién ménh gid ay. dz... dy. Ba dinh sang bén ddy mua mét mat hang ndo d6, tra ding gid ctia né ma khong phdi nhdn lai tién thita, Nhung ba da gid qué réi. Ba khong mudn mang tat ca tién cia minh di, c6 thé ln hoc roi mat, vi vay ba chi mang theoit nhat cé thé dwoc mot sé dong diu tién, Vay ba phai mang theo bao nhiéu déng tién aé mua direc mét hang bat ky?” Chi mat vai giay Elly da dua ra duc cau tra loi va nghi tham trong bung: “Oi, ba oi, Iai nhitng bai todn gidi thudt qud chudn!”. Ban cé thé dua tai véi Elly bang cach viét chuong trinh giai bai toan nay duge khong? Dit ligu: Vio tit file van bin RIDDLE.INP: ¢ Dong dau tién chtra sé nguyén T— sé luong tests trong file, © Moi test cho trén 2 dong: ~ Dong thit nhat chita 2 sé nguyén a va k (1 s +/ thi OK := false ( nghia la voi u déng tién dau tién Khéng théa dé bai vi khéng thé mua duge mat hing c6 gia las +/ vi -1 déng tién dau khong mua duoc mat hang nay, cdc déng tién tir ding thir? dén déng thir u cé ménh gid lén hon s + / nén cing khéng gitip gi hon) va Khong xét cac dong tién thir i +7 dén dong thit w nita. Néu a; <= s +/ thi + a; (nghia la voi 7 dong tién dau tién nay ta 6 thé mua bat ky mat hang nao cé gia tit J cho dén s (s da cé gid t Gi, tai sao nhu thé? van dé nay dé ban doe ty giai dap). Khi xét xong dong tién thir w néu s>= é thi Ss SangKienKinhNehiem.net Chuong trinh Const (fiz‘riddle.inp’: ‘fo='riddle.out': nmax=100010; var Sflitext; a,al:array[1..nmax] of longint; n.kelongint; scint64: Junction ok(u:longint) -boolean; var ilongint; begin s=0; for i:=1 to u do ifal[i]<=s+1 then s:=s+al [iJ else exit(false); if s> =k then exit(true); exit(false); end; procedure quicksort(I,r:longint); var ij.¢,gi:longint; begin RL per; gis=al[l+random(r-I+ 1]; repeat while al[i]gi do dec(j); if <= then ine(i);dee(j); end; until i>j; if

Vous aimerez peut-être aussi