Let's Learn it Together !

ِAn educational blog from FCIS'2011 students ..




أحد أشهر مواقع ال Online Judge ... ويحتوى على عدد كبير جدا من المسائل "Problems" ... وهو أكثر المواقع ارتباطا بال ACM حيث أن أغلب ال ACM Contests التى تقام وخاصة ال Worled Final ينصح منظموها بالتدريب على هذا ال Site, هذا بخلاف الكتب التى تشرح أنواع المسائل المختلفة مثل كتاب Programming Challenge, وهذا الكتاب يشرح ال Algorithm ويعطى كود مكتوب بال C ويترك لك بعض المسائل للتدريب, تلك المسائل موجودة على ال UVa.

فى البداية قم بالتسجيل فى الموقع ... فى خانة Online Judge ID أكتب 00000.



أولا لوحة التحكم الرئيسية :

ستجدها فى اليسار .

  1. Quick Submit : اذا أردت ان ترسل حل لمسألة تعرف ال ID الخاص بها بدون ان تذهب الى المسألة.

  2. My Submission : بها جميع ال Submissions التى أرسلتها للموقع ونتائجها بالتاريخ والوقت.

  3. My statistics : لمعرفة عدد وأرقام المسائل التى قمت بحلها وتاريخ أخر Submission أرسلته وعدد ال Submission, نستطيع ان نقول ان هذا هو ال Profile.

  4. Browse Problems : من هنا تستطيع الدخول الى المسائل.

  5. Contests : اذا كانت هناك مسابقات Online تستطيع المشاركة بها.

  6. Site statistics : تستطيع منها معرفة نتيجة أخر 50 Submission و الترتيب العام لأعضاء الموقع و نتائج العام الماضى.


  7. أذا أردت البحث عن أى مسألة يمكنك البحث من هنا.




ثانيا البدء بالحل :

أضغط على Problems واختار أحد ال Titles, أنا شخصيا أستخدم Contest Volumes, ولكن لا تنخدع فالمسائل غير مرتبة من الأسهل للأصعب.

تحذير : أول مسألة فى ال Problem Set Volumes اسمها "The 3n + 1 problem - 100" لا تبدأ بحلّ هذه المسألة, أغلب من يبدأ بحلّ مسائل على هذا الموقع يبدأ بها لأنها أول مسألة, البعض يفترض أن أول مسألة أسهل مسألة, ولكن الحقيقة غير ذلك تماما, أنا شخصيا أحتجت الى 3 شهور كى أستطيع الحصول على Accepted فى هذه المسألة, وذلك ليس لصعوبتها البالغة, ولكنها تحتاج لبعض الخبرة ستكتسبها مع الوقت.



المسألة التى قمت بحلّها يكون بها لون أخضر مثل مسألة Longest Common Subsequence فى الصورة السابقة .
كلما كان ال (Total Submission \ Solving) أكبر كلما كانت المسألة أسهل وقابلة للحلّ أكثر وخصوصا اذا كان عدد الأعضاء الذين حاولوا حلّ هذه المسألة أكبر.

افتح أى مسألة وأقرأها جيدا وابدأ بالحل.

  1. Submit : اذا انتهيت من كتابة الكود وأردت أن ترسل الحلّ لتعرف النتيجة.

  2. Problem stats : اذا اردت أن تلقى نظرة على نتائج أفضل 20 حل لهذه المسألة.

  3. فى هذه الخانة يظهر الوقت الذى يجب الا يزيد عنه البرنامج الذى كتبته.

بعد ارسال الحل, لمعرفة النتيجة أضغط على My Submission لمعرفة نتيجة الحلّ, ويمكنك أيضا مشاهدة Last 50 Submission.



ثالثا بعض مميزات الموقع :

  1. لا يمكنك الدخول الى Profile أى شخص مسجل فى الموقع, ولا تستطيع معرفة المسائل التى قام بحلّها أصدقائك, ولكن كيف تكون هذه ميزة ؟؟؟ فى الواقع هى ليست ميزة ولكن يمكننا التغلب عليها.

    كان الموقع فى البدابة يتيح هذه الخاصية, اذا ضغطت على اسم العضو كان يظهر لك Profile ذلك العضو, أما الان فاذا ضغطت على اسم أى عضو فستظهر لك تلك الرسالة .
    فلنفترض اننا لدينا ال Site statistics - > Last 50 Submissions التالية

    لو ضغطنا على العضو aka فسوف تظهر الرسالة السابقة .
    ولكى نتغلب على تلك الرسالة لاحظ معى الأتى, هذا هوaka Profile Link :


    اذا قمنا بمسح الكلمة بالأحمر "_com" من ال Link وضغطنا Enter فأننا بذلك سنصل الى aka Profile Link
    من الان وصاعدا اذا ظهرت لك تلك الرسالة فى ذلك الموقع قم بعمل نفس الخطوات.

  2. اذا واجهت صعوبة فى فهم أى مسألة أدخل على منتدى الموقع وستجد موضوع لكل مسألة, أقرأ مشاركات الأخرين قبل أن تسأل عن مشكلتك, مشاركات الاخرين قد تكون مفيدة,أدخل الى المنتدى من هنا.

  3. اذا أردت أن تجرب بعض ال Test Cases يمكنك استخدام UVa Toolkit, ابحث عن المسألة وضع Test Cases ثم تأكد من ال Output الصحيح, ومن هذا الموقع أيضا تستطيع معرفة بعض المعلومات عن نوع هذه المسألة او ال Algorithm المستخدم فى حلّها ان كان مشهورا.

    نصيحة : أجعل ال UVa Toolkit أخر خياراتك وأنا لا أنصح به لأنه يعلم الكسل وأحيانا يحرمك من الاستفادة.
هذه بعض ال Links لبعض المسائل السهلة لكى تتعود على التعامل مع هذا ال Site .

اذا واجهتك أى صعوبات تفضل واسأل.

هنا نسخة PDF للمقال.


فى الموضوع ده هنتناول كيفية التعامل مع واحد من أجمد ال Online Judges على الأطلاق وهو PKU Online Judge


Link أولاالموقع :


http://acm.pku.edu.cn/JudgeOnline/



هتلاقى فوق كده فى Board فيها كل حاجة للموقع




  1. Online Judge: أهم ما بها F.A.Qs وبها كل التعليمات الخاصة بالموقع.

  2. Problem Set :
  • Problems : بتوديك على المسائل.
  • Submit Problem : لو انته عايز تبعت الحل بتاع مسألة .
  • Online Status : دى بتجيب حالة ال Submissions اللى اتبعتت للموقع, النيتجة بتاعتها بتبقى موجودة فى ال Online Status .
  • Problem ID : تقدر تعمل Search على أى مسألة سواء بأسمها أو برقمها أو بكلمة جواها.

3. Authors:
  • Register : لو انته عايز تسجل فى الموقع.
  • Update Your Info : لما تحب تعدل أى حاجة فى ال Profile بتاعك .
  • Authors rank list : تقدر تشوف ترتيب الناس على موقع وتشوف ترتيبك .
  • Search : تقدر تدور على أصحابك وتشوف ال Profiles بتاعتهم .

4. Online Contest: لو فى مسابقات Online بتبقى مواعيدها موجودة هنا وتقدر تشارك فيها لو حبيت .



ثانياا البدء بالحل :


طبعا بعد ماعملنا ال Account بتاعنا نروح بقى نعمل . Log in



وبعدين أضغط على Problems هتظهر الصفحة التالية .

  1. Volume : يحتوى على 28 صفحة كل صفحة بها 100 مسألة, ولكن خلى بالك مش مترتبين من الاسهل للأصعب.

  2. Search : لو حبيت تدور على مسألة معينة أكتبها هنا واختار من جنبها نوع البحث .

  3. ابحث عن كل المسائل اللى محدش حلها خالص لا انته ولا حد من أصحابك علشان تتحدوا بعض وتعملوا مسابقات بينكم وبين نفسكم.

  4. ID : كل مسألة لها ID ... وال ID هو اللى هيتخدم بعد كده فى كل ال DataBase بتاعة ال Site هيبقى موجود فى ال Profile بتاعك IDs وفى ال Online Status نفس الكلام ... وممكن تقول تستخدم ال ID فى البحث.

  5. Tittle : اسم المسألة.

  6. Ratio : من أهم الحاجات فى الجدول ده ... كل ما كان ال Ratio أعلى كل ما كانت المسألة أسهل ... وهو عبارة عن النسبة بين عدد الحلول الصحيحة وعدد كل الحلول بما فيها الخاطئة ... ولكن خلى بالك أحيانا بتخدع ... قد يكون عدد الحلول الصحيحة على سبيل المثال 10 وعدد الحلول كلها برضه 10 وبالتالى يكون ال Ratio يساوى 100% .... وهذا مش معناه ان المسألة سهلة .


اختار أى مسألة من المسائل دى .... افتح المسألة وأقرأها كويس وابدأ بحلها .

لما تخلص كتابة الكود وتتأكد أن حلك صحيح انزل تحت خالص ودوس على .Submit


هتجيلك الصفحة دى

  1. اكتب ال ID بتاع المسألة وفى الغالب بيكون موجود.

  2. اختار لغة البرمجة.

  3. اكمل Copy و Past للكود بتاعك هنا.

  4. دوس على Submit .


دلوقتى علشان نعرف الحل بتاعنا صح ولا لأ هانضغط على كلمه Online Status وهى بتجيب كل الحلول اللى بتتبعت على السايت على حسب أخر حل اتبعت.



  1. Run ID : رقم ال Submission ونلاحظ هنا انه بي Save كل ال Submission عنده فى ال Data Base .
  2. User : اسم اللى بعت ال Submission ... طبعا علشان لو واحد صاحبك بيحل من وراك تعرف علطول :D:D .
  3. Problem : رقم المسألة ولينك ليها علشان لو حبيت تدخل على المسألة وتحلها انته كمان.

  4. Result : نتيجة ال Submission وطبعا ال Accepted أحلى واحدة فيهم .

  5. Memory : لو الحل بتاعك صح بيقولك هو خد قد ايه من ال Memory ودى أحد مميزات ال Site.

  6. Time : لو الحل بتاعك صح بيقولك انته أخد وقت قد ايه.

وطبعا زى ما احنا شايفين كل حاجة متسجلة بالتاريخ.


دلوقتى حضرتك بقى جيت فى مرة كدة مش فاكر انت حليت كام مسئله ولا انت فاكر انت حليت ايه اصلا الحل الوحيد انك تروح لل Profile يتاعك .

اضغط على اسمك من فوق على اليمين وهيجيلك ال Profile بتاعك


  1. من أهم وأجمد مميزات ال Site ده .... لو حبيت تعمل مقارنة بينك وبين أى حد من أصحابك أكتب أسمك وأسم صاحبك وقارن ... وشوف هو ايه اللى حله وايه اللى مش حله وايه انته حليته وهو مش حاله والعكس .

  2. أرقام ولينكات كل المسائل اللى انته حليتها.

  3. لو دوست على Solved أو Submissions هيجيبلك جدول فيه كل المسائل اللى انته حليتها والجدل فيه نفس خصائص الجدول بتاع Online Status



  1. Problem ID : لو انته حالل مسائل كتيرة تقدر وعايز تدور على مسألة معينة اكتب ال ID بتاعها .

  2. Result : لو عايز تدور على كل المسائل ال Accepted أو كل ال WِA أو .. أو ... الخ.

  3. Language : لو بتدور على المسائل اللى حليتها بلغة معينة.

  4. من أهم مميزات السايت انه بي Save كل الأكواد اللى انته بتبعتها بما فيه الاكواد الغلط ... لو دوست على لغة البرمجة هيفتحلك الكود بتاعك .... لو حبيت تنزل كل الأكواد اللى انته بعتها للسايت ... دوس على كلمة Archive فوق خالص تحت أسمك.


اهم حاجة بجد بقى انك لو جالك wrong answer كتير حاول تانى وان شاء الله هاتقدر تجيبها accepted بس ماتزهقش

ودى لينكات لكام مسألة كده علشان تسخن .


http://acm.pku.edu.cn/JudgeOnline/problem?id=1000

http://acm.pku.edu.cn/JudgeOnline/problem?id=1004

http://acm.pku.edu.cn/JudgeOnline/problem?id=2509

http://acm.pku.edu.cn/JudgeOnline/problem?id=1005

http://acm.pku.edu.cn/JudgeOnline/problem?id=1477


يلا بقى ربنا معاكم واى اسئله انا ان شاء الله ارد عليها .


هنا هتلاقوا نسخة PDF للمقال