1- التعرف على طرق تحليل الخوارزميات (Complexity Analysis).
2- التعرف على "TLE" و أسباب حدوثه.
3- حل المزيد من المسائل متنوعة الأفكار بإستخدام الأساسيات.
الأسبوع دا هو أهم أسبوع خلال التدريب:
- الفترة اللي فاتت كنا بنحل مسائل مباشرة وكان كل هدفنا إننا نوصل لحل للمسألة ونحول الحل بتاعنا لكود مظبوط عشان نوصل لـ Accepted لكن بداية من الأسبوع دا هنتعلم إن مش كفاية نركز على إن الحل بتاعنا يكون صح وبس.
- في مسابقات البرمجة أهم حاجة هي الـ Problem Solving Skills ، وأهم حاجة في مهارات حل المشاكل هي إنك تكون قادر على إيجاد حل صحيح وسريع (Correct and Efficient).
- هنعرف مدى أهمية إننا نركز على أداء (Performance) الخوارزميات (Algorithms) اللي بنكتبها لحل المسائل إلى جانب التركيز على صحة الحل (Correctness).
- يعني ايه أداء الخوارزمية (Performance of an algorithm) ؟ الأداء بيتحسب بناء على الـ Execution Time يعني الوقت اللي بياخده البرنامج عشان يتنفذ والـ Needed Memory وهي المساحة اللي بيحجزها البرنامج عشان يخزن المتغيرات المختلفة.
- هنتعلم ازاي نحسب البرنامج بتاعنا هياخد Time اد ايه وهنتعلم ازاي نقارن بين حلين مختلفين ونعرف انهي حل أسرع من الثاني.
- هنتعلم ازاي نعرف البرنامج بتاعنا بيستهلك اد ايه من الـ Memory.
- هنعرف كويس جدا إن الوقت بيفرق وإن كل مسألة ليها Time Limit محدد مينفعش البرنامج بتاعك يعدي الTime دا، ولو حصل وعديته هتلاقي الـ Judge بيقولك Time Limit Exceeded ولازم تفكر في حل أسرع.
- هنعرف كويس جدا إن الوقت بيفرق وإن كل مسألة ليها Memory Limit محدد مينفعش البرنامج بتاعك يعدي الـ Limit دا، ولو حصل وعديته هتلاقي الـ Judge بيقولك Memory Limit Exceeded ولازم تفكر في حل أفضل يحجز Memory أقل.
- هنتعلم ازاي نعرف الحل بتاعنا هيعدي ولا هيجيب TLE قبل ما نعمل Submit.
- هنتعلم ازاي نفكر في حلول غير تقليدية سريعة للمسائل.
- بداية من الأسبوع الثالث عدد المسائل الإلزامية هيكون صغير وهيكون في مسائل إضافية إختيارية (Optional Extra Problems) يفضل إنك تحلها وهتستفيد منها ولكن الأولوية إنك تخلص المسائل الإلزامية عشان تنتقل لأي حاجة جديدة.
معلومة هامة لمبرمجي C++ :
- السطرين دول بيفرقوا جدا في السرعة بتاعت الكود ودا بيظهر لما الـ input أو الـ output يكون كبير جدا.
- السطرين دولا مهمين جدا وهيفرقوا معاك! ساعات الحل بتاعك هيكون سريع والفرق بينه وبين الـ TLE كبير جدا لكن يجيب TLE بسبب القراءة والطباعة البطيئة، وممكن تلف ساعة حوالين نفسك ومش عارف أنت بتجيب TLE ليه رغم إن الحل بتاعك سريع جدا.
- الهدف من الكلام دا إننا نقولك استخدمهم على طول في أي كود يعني خليهم ثابتين عندك في الEditor متشلهمش خالص.
السطرين:
cin.tie(0);
cin.sync_with_stdio(0);
ممكن تحطهم في function وتناديها دايما في أول الـ main زي كدا: