Ki jan mwen te genyen 3 meday dò sou 4 nan olenpyad enfòmatik la

Ki jan mwen te genyen 3 meday dò sou 4 nan olenpyad enfòmatik la

Mwen t ap prepare pou Google HashCode World Championship Finals 2017. Sa a se pi gwo konpetisyon ak pwoblèm algoritmik Google òganize.

Mwen te kòmanse aprann C++ nan grafouyen nan nevyèm ane. Mwen pa t 'konnen anyen sou pwogramasyon, algoritm oswa estrikti done. Nan kèk pwen mwen te ekri premye liy kòd mwen an. Sèt mwa apre, konpetisyon pwogramasyon an parèt sou orizon an. Mwen te vle wè ki jan style mwen an nan pwogram aprantisaj te travay. Se te opòtinite pafè a.

Apre de jou konpetisyon, rezilta yo te vini: mwen te genyen meday an lò.

Mwen te choke. Mwen te devan konpetitè ak 5 ane eksperyans nan. Mwen te konnen mwen te travay di, men siksè sa a depase tout atant mwen. Mwen reyalize ke pwogram espò yo te sijè mwen ak pijon nan li tèt devan.

Mwen konnen sa ki te mennen m 'nan siksè e mwen vle pataje li avèk ou.

Ki jan mwen te genyen 3 meday dò sou 4 nan olenpyad enfòmatik la

Atik la te tradui ak sipò EDISON Software, ki pran swen sante pwogramè yo ak manje maten yoAk devlope lojisyèl koutim.

Ki lang pwogramasyon pou chwazi

  • C++ - Rekòmande anpil! Li trè vit. Aplikasyon algoritm yo pran yon ti tan akòz STL. C++ yo aksepte nan tout konpetisyon. Mwen te ekri premye liy kòd mwen an nan C++.
  • C - Aprann C++ akòz STL la. Si w konnen C, ou ka pwograme tou nan C++.
  • Java se yon langaj pwogramasyon dousman. Li gen yon klas Big Integer, men li pa pral ede w anpil. Si yon konpetisyon gen yon limit tan, ak Java ou pral siman depase li. Java pa aksepte nan tout konpetisyon.

Ki kote ou ka pratike

Mwen rekòmande Sphere Online Jij (SPOJ). Li se yon resous efikas an tèm de kantite ak bon jan kalite. Editè ak solisyon yo disponib sou entènèt si ou bloke nan pwosesis pou rezoud pwoblèm. Anplis sit sa a mwen rekòmande SPOJ Toolkit и klasifikasyon pwoblèm pou SPOJ.pl.

Premyèman, ou bezwen amelyore konesans ou nan Basics yo

Yon fwa ou abitye ak sentaks lang nan, gen kèk pwoblèm simonte. Kòmanse ak pwoblèm senp ki mande pratik. Nan etap sa a, bagay prensipal la se detèmine style pwogramasyon ou. Petèt ou renmen ekri kòd ak anpil espas blan, petèt ou pa fè sa. Ou ka mete parantèz yo sou menm liy ak "si a", oswa ou ka mete yo sou liy separe.

Ou gen pou jwenn stil programmation ou paske se stil OU.

Lè w ap chèche li, sonje de prensip debaz yo:

  • Kòd ou a ta dwe fasil pou aplike. Ou ta dwe santi w alèz pou w aplike solisyon w ap vini an. Poukisa? Paske pandan yon konpetisyon, dènye bagay ou vle se pèdi nan kòd ou. Li toujou pi bon pase 5 minit anplis pou reflechi sou fason pou senplifye aplikasyon kòd la pase 10 minit ap eseye kalkile li.
  • Kòd ou a ta dwe fasil pou li. Lè kòd fasil pou li, li fasil pou debogaj. Ann fè fas a li—pinèz rive tout tan. Ou konnen santiman sa a lè ou gen 10 minit kite epi ou pa ka jwenn erè a modi? Natirèlman ou fè. Pou evite sitiyasyon sa a, ekri kòd lizib. Yon fwa ou kòmanse debogaj li, kòd la pral sanble natirèl ak fasil pou konprann.

Men yon egzanp mwen stil pwogramasyon.

Ki jan yo amelyore konpetans devlopman ou

Pratike, pratik ak plis pratik. Mwen rekòmande pou w travay nan premye 250 pwoblèm ki pi rezoud SPOJ. Rezoud yo nan lòd. Pase omwen yon èdtan reflechi sou solisyon an nan chak nan yo.

Pa di: "Pwoblèm sa a twò difisil pou mwen, mwen pral eseye rezoud pwochen an." Men ki jan pèdan yo panse.

Pran yon moso papye ak yon kreyon. Reflechi sou li. Petèt ou ka jwenn yon solisyon, petèt pa. Nan yon minimòm, ou pral devlope panse algoritmik. Si ou pa ka vini ak yon solisyon nan yon èdtan, chèche yon solisyon pare sou fowòm nan oswa nan atik.

Kisa ou pral reyalize ak apwòch sa a? Aprann byen vit aplike lide ou lè l sèvi avèk kòd. Epi etidye pwoblèm klasik ak algoritm.

Dezyèmman, ou dwe metrize algoritm ak estrikti done

Swiv yon apwòch yerarchize. Èske w te kòmanse kouri san w pa konn mache? Non. Èske ou ka bati yon gratsyèl san yon fondasyon solid? Pa ankò.

Ou pa ka inyore etap yo sou chemen aprantisaj la. Si ou inyore yo, ou pral rete ak konesans twou vid ki genyen. Apre yon tan, yo pral sèlman vin pi mal.

Kòmanse ak algoritm fondamantal ak estrikti done

Li difisil pou kòmanse. Petèt paske ou pa konnen ki sa pou w etidye an premye. Se poutèt sa Mwen te kreye yon kou videyo "Algoritm ak Estrikti Done". Lè m ap kreye kou sa a, mwen baze sou fason mwen ta renmen yo anseye. Reyaksyon an te enkwayab! Plis pase 3000 elèv ki soti nan plis pase 100 peyi te enskri pou kou a nan premye mwa a.

Si w ap travay pou rezoud pwoblèm fasil, ou p'ap janm amelyore.

Fason ki pi efikas pou w konprann sa w pa konnen se fè eksperyans li an pratik. Se konsa mwen te aprann. Mwen te aprann anpil nouvo teknik ke mwen pa t janm tande pale de anvan lè mwen chwazi yon travay ki difisil.

Chak twazyèm pwoblèm ou travay sou yo ta dwe anseye ou yon bagay nouvo. Fè plis atansyon lè w ap chwazi pwoblèm. Chwazi pwoblèm ki pi difisil!

Yon fwa w fin ranpli 250 pwoblèm sa yo nan SPOJ, w ap gen yon konpreyansyon debaz sou sijè prensipal yo nan pwogram espò. Avèk yon konpreyansyon pwofon nan lojik ki dèyè algoritm debaz yo, algoritm wo nivo pral sanble mwens konplèks. Nan fason sa a ou ka pwofite plis nan konesans ou.

Fouye pi fon nan chak nan tèm prensipal yo

Isit la se yon resous valab ak anpil enfòmasyon. La w ap jwenn 10 pi gwo algoritm ak estrikti done pou chak sijè. Apre 250 pwoblèm nan SPOJ, ou pral konnen anpil nan lis sa a. Men, ou pral bite tou sou anpil bagay ou pa t janm tande pale de anvan. Se konsa, kòmanse etidye sijè sa yo nan lòd monte.

Si ou pa ranfòse konesans ou apre ou fin aprann yon bagay nouvo, ou pral byen vit bliye tout bagay.
Mwen rekòmande ke apre ou fin aprann yon nouvo algorithm, sèvi ak li nan pratik. Travay li nan 2-3 travay. Chèche tag algorithm nan SPOJ. La w ap jwenn pwoblèm ki bezwen algorithm sa a pou rezoud. Abòde pwoblèm sa yo an premye.

Mèt Programmation Dinamik Paske Li Pral Mennen Ou Nan Viktwa
Soti nan eksperyans mwen, chak konpetisyon gen omwen yon pwoblèm pwogramasyon dinamik. Anpil moun pran tèt fè mal lè yo tande fraz "dinamik pwogramasyon" paske yo pa konprann li ditou.

E sa bon. Paske si ou konprann pwogramasyon dinamik, Lè sa a, ou pral genyen.

Mwen renmen pwogramasyon dinamik, se sijè mwen pi renmen. Sekrè pwogramasyon dinamik se fè chwa globalman optimal, pa sèlman chwa lokal yo. Ou dwe kraze pwoblèm nan nan sub-pwoblèm ki pi senp. Rezoud chak nan pwoblèm sa yo yon sèl fwa. Lè sa a, kreye yon solisyon ki konbine sous-pwoblèm yo rezoud. Algorithm visye - opoze a nan pwogramasyon dinamik. Li mande pou fè chwa lokalman pi bon nan chak etap. Ak yon chwa lokalman optimal ka mennen nan yon move solisyon mondyal.

Pandan w ap aprann nouvo konsèp, tcheke deyò Tutorial TopCoder. Yo trè detaye ak konprann. Gras a yo mwen te kapab konprann pye bwa binè endis.

Travay di

Èske w te janm tande pale de atlèt ki genyen olenpik yo san yo pa ane pratik? Mwen pa.

Chak ane, preparasyon pou Olympiad Odinatè a te kòmanse nan mwa septanm nan e li te fini nan mwa avril.

Chak jou pou 8 mwa sa yo mwen pratike pou 5 èdtan.

Epi wi, mwen te pase 5 èdtan sa yo sèlman rezoud pwoblèm algoritmik. Mwen sonje jou yo lè mwen te pratike pou 8 e menm 10 èdtan. Poukisa? Paske mwen te renmen li. Chak jou lè mwen te retounen lakay mwen sot lekòl, mwen te ale tou dwat nan chanm lan, mwen te chita nan òdinatè a epi yo te kòmanse analize yon nouvo pwoblèm. Oswa mwen t ap aprann yon nouvo algorithm ke mwen te bezwen konnen pou rezoud pwoblèm sa a.

Si ou vle genyen, ou dwe fè menm bagay la. Chwazi yon pwoblèm epi rete sou li. Reflechi sou li pandan w ap mache nan makèt la oswa pandan w ap kondwi.

Ki jan mwen te genyen 3 meday dò sou 4 nan olenpyad enfòmatik la

Èske w te konnen lè ou dòmi, sèvo ou defragmente enfòmasyon yo kolekte jou sa a? Li sanble ap anpile liv yo nan lòd alfabetik sou yon etajè liv. Esansyèlman, sèvo ou panse sou divès pwoblèm w ap fè fas.

Sa a ka itilize abilman. Anvan ou ale nan kabann, li yon pwoblèm difisil epi sonje sa li pran pou rezoud li. Nan etap sa a, ou pa bezwen chèche solisyon an tèt li. Ale nan kabann. Sèvo ou ap kòmanse trete pwoblèm sa a. Lè w reveye, w ap sezi pou w reyalize ke w te jwenn solisyon an pandan w t ap dòmi.

Eseye li tèt ou. Se tankou maji.

Mwen te kreye yon blog videyo

Ki jan mwen te genyen 3 meday dò sou 4 nan olenpyad enfòmatik la

Paragraf kout sa a pa gen rapò ak pwogram espò. Si ou nan ven ou epi mande ki jan mwen wè mond lan, ou ta ka vle tcheke deyò blog videyo mwen an sou Youtube. Mwen pale sou mond lan, lavi ak syans enfòmatik ladan l.

Travay entelijan

Sa a se sekrè a nan siksè. Ou bezwen objektif.

Nou se moun e nou renmen li procrastinate. Nou toujou vle ranvwaye sa ki dwe fèt kounye a. Gade Netflix se toujou pi agreyab pase fè fas ak pwoblèm pwogramasyon dinamik. Ou konnen sa epi ou bezwen ranje li.

Ki jan yo bat procrastination

Mete tèt ou objektif. W ap toujou jwenn pwoblèm enteresan kote ou ka aprann yon bagay nouvo (tcheke resous mwen mansyone pi wo a). Men, pwoblèm sa yo bezwen rezoud, pa sèlman li sou.

Se konsa, men ki jan mwen simonte procrastination. Mwen te kòmanse yon kalandriye papye epi mwen te ranpli chak jou ak pwoblèm mwen te vle rezoud. Mwen toujou ranpli pwoblèm de jou davans. Se konsa, mwen te konnen ki jan yo jere tan mwen an nan jou ki vin apre yo.

Ki jan mwen te genyen 3 meday dò sou 4 nan olenpyad enfòmatik la

Se konsa, mwen te toujou motive. Mwen te bezwen rezoud kèk pwoblèm epi jwenn lòt nouvo pou ranpli pwochen jou yo nan kalandriye a. Travèse pwoblèm rezoud yo santi l gwo. Mwen konnen ou renmen li tou.

Jwenn pwòp kalandriye papye ou. Pa kreye yon lòt lis pou fè sou telefòn ou ke w ap bliye demen.

Ki jan yo debogaj efektivman

Ou vle vin yon pwofesyonèl? Si wi, Lè sa a, ou bezwen "debug li nan tèt ou."
Sa a se byen lwen teknik debogaj ki pi efikas mwen konnen paske li pa mande pou yon debogaj ditou. Sèvo ou egzamine plizyè branch kòd alafwa epi li ba ou yon apèsi pi laj sou kòd la konpare ak debogaj klasik.

Ou ka konpare tèt ou ak yon granmèt ki jwe echèk epi ki panse 3 mouvman pi devan.

Mwen sèvi ak teknik sa a sèlman kòm premye liy defans mwen. Lè sa a, mwen sèvi ak yon deboge reyèl.

Pou aprann kijan pou debogaj nan tèt ou, ou bezwen pratike. Lè ou valide yon solisyon a yon pwoblèm epi jwenn yon "move repons", pa ale tou dwat nan bouton an debugger. Reli kòd la epi reflechi: "Kisa k ap pase nan liy sa a?", "Kijan "si" isit la afekte pwogram nan?", "Lè nou sòti bouk la, ki valè iteratè a?"

Nan fason sa a ou panse pou tèt ou. Apre yon tan, ou pral aprann ekri kòd ak debogaj li sou vole.

Sou otè a

Ki jan mwen te genyen 3 meday dò sou 4 nan olenpyad enfòmatik la
Andrei Margeloiu se yon pwogramè grangou ak yon enterè nan antreprenarya, demaraj, ak deyò yo. Ou ka kontakte li sou LinkedIn.

Tradiksyon: Diana Sheremyeva

Sous: www.habr.com

Add nouvo kòmantè