صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 52

نام تاپیک: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

  1. #1
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    Post حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    با سلام.
    مسابقات جهانی برنامه نویسی acm هر ساله در سطح جهان توسط شرکت ibm برگذار میشه.
    هدف از برگذاری این مسابقات ایجاد رقابت بین دانشجویان سراسر جهان است. خوشبختانه این مسابقات در کشور ما هم به صورت جدی برگذار میشه و همه دانشجویان میتونن شرکت کنند.
    من این تاپیک رو بنا به علاقه خودم و درخواست چند نفر از بچه ها زدم تا بتونیم اینجا مسئله های مسابقات رو بگذاریم، به روش های مختلف حل کنیم و برای مسابقات آماده بشیم.
    توی این تاپیک سوالاتی رو قرار میدیم. روش های مختلف برای حلش رو بررسی و تحلیل میکنیم و اگر کسی مشکل یا سوالی داشت پاسخ میدیم(البته مورد آخر رو دوستان دیگه. چون من مبتدی هستم )
    با همکاری و کمک همدیگه و با تلاش خودمون موفق میشیم

  2. #2
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    خب! اولین مسئله رو که خیلی خیلی هم ساده هست خودم میذارم.
    http://acm.timus.ru/problem.aspx?space=1&num=1000
    این مسئله جمع دو عدد بدون استفاده از عملگر جمع (+) هست.
    روش های زیادی داره. من یه روشش رو که توی سایت هم سابمیت کردم و قبول کرد رو میذارم.

    public class sum
    {
    public static void main()
    {
    string[] tokens = Console.ReadLine().Split(' ');
    int temp = 0;
    int a = int.Parse(tokens[0]);
    int b = int.Parse(tokens[1]);
    if (a < b)
    {
    temp = a;
    a = b;
    b = temp;
    }
    temp = a - b;
    Console.WriteLine((a * 2) - temp);
    string s= Console.ReadLine();
    }

    }

    دوستان لطفا کسی راه حل دیگه ای برای حل این مسئله رو میتونه بذاره؟

  3. #3

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    دوستان شدیدا توصیه میکنم که از زبان ++C استفاده کنید.
    به جز روسیه، تقریبا همه تیمها از ++C استفاده میکنند. روسیه هم نمیدونم چرا چسبیدن به پاسکال، گویا بهش عادت دارن، وگرنه STL توی ++C تو پاسکال معادلی نداره و این کارشونو واقعا سخت میکنه. انتخاب ++C دلایل زیادی داره :
    اول اینکه جاوا پوینتر نداره و این تو بعضی سوالا به شدت مشکل سازه. مثلا سوال E سال 2008 شریف رو تقریبا بدون پوینتر کاری کدش افتضاح میشه.
    دوم اینکه جاوا خیلی به نسبت ++C کنده و تقریبا 1.5 برارش زمان میگیره. همون طور که میدونید time limit تو بعضی سوالا خیلی حساسه و 1.5 برابر، زمان خیلی زیادیه. البته تو بعضی سایتای online judge مقدار time limit رو برای کدهای java بیشتر در نظر میگیرند که این مشکل رو برطرف کنه ولی تو مسابقات از این خبرا نیست و محدودیت زمانی یکسانه.
    جاوا فقط به درد بعضی سوالای خاص میخوره که از library ها و کدهایی که توش داره استفاده کنید تا کدتون راحت تر زده بشه که اینم فقط به درد سوالای BigInt میخوره که با جاوا راحت کد میشن ولی با ++C خودتون باید کلاسش رو بنویسید.
    بازم دلیل هست ولی مهماش اینا بود. ضمنا کامپایلرتون هم آخرین ورژن mingw باشه ترجیحا. چون تو مسابقات کامپایلرشون اینه و این کامپایلر یه امکانات جالبی در اختیار برنامه نویس قرار میده که توی ++C استاندارد نیست. به عنوان مثال شما میتونید آرایه با سایز متغیر (!!!) بگیرید که در واقع این آرایه ها رو از حافظه دینامیک میگیره. (به جای استاتیک) که البته اگه لازمتون نباشه نباید این کار رو کرد ولی خوب مثلا برای پیاده سازی لیست مجاورت گراف، خیلی کاربرد داره.

  4. #4
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    ممنون از راهنماییتون. مرسی
    دوستان میشه اینجا رو یه نگاهی بندازید؟
    http://acm.timus.ru/problem.aspx?space=1&num=1484
    من برنامشو نوشتم ولی برنامه من برای همون مثالی که آورده جوابش 90 هست. نمیدونم چرا!
    کسی هست راهنماییم کنه؟ لطفا؟

  5. #5

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط dousti_design مشاهده تاپیک
    ممنون از راهنماییتون. مرسی
    دوستان میشه اینجا رو یه نگاهی بندازید؟
    http://acm.timus.ru/problem.aspx?space=1&num=1484
    من برنامشو نوشتم ولی برنامه من برای همون مثالی که آورده جوابش 90 هست. نمیدونم چرا!
    کسی هست راهنماییم کنه؟ لطفا؟
    the amount of (114 + p)/(12+p) should not be <=2, it should be <2.05

    یه نیگاهی به Discuss بنداز

  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    227

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    سلام accepted جان. این سوالیه که چند وقتیه بدجور رفته رو مخم :

    http://www.spoj.pl/problems/RENT/

    راه حلی که پیچیدگی n^2 داره که کاری نداره اما برای accept گرفتن باید برنامت پیچیدگی n.log n باشه. تقریباً میدونم باید از یه چیزی مثل bbst استفاده کنما! اما نمیدونم چجوری! به هر کی هم میل زدیم جواب ما رو نداده :-/

    ممنون از توجهت :)

  7. #7

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط qwerty11 مشاهده تاپیک
    تقریباً میدونم باید از یه چیزی مثل bbst استفاده کنما! اما نمیدونم چجوری!
    منظورت از bbst چیه؟

  8. #8
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    227

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    binary balanced search tree دیگه

    هیچ راهی به ذهن مبارکت خطور نمیکنه ؟ به نظر سوال راحتی میادا! اما نمیدونم چرا چیزی به ذهنم نمیرسه...

  9. #9

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط qwerty11 مشاهده تاپیک
    سلام accepted جان. این سوالیه که چند وقتیه بدجور رفته رو مخم :

    http://www.spoj.pl/problems/RENT/

    راه حلی که پیچیدگی n^2 داره که کاری نداره اما برای accept گرفتن باید برنامت پیچیدگی n.log n باشه. تقریباً میدونم باید از یه چیزی مثل bbst استفاده کنما! اما نمیدونم چجوری! به هر کی هم میل زدیم جواب ما رو نداده :-/

    ممنون از توجهت :)
    من یه راه با ( O( d+n پیدا کردم که داینامیکه

  10. #10
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    227

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    یعنی حتی بر اساس زمان شروع کارشونم مرتبشون نمیکنی یه کوچولو درباره ی راهت توضیح بده بقیشو خودم میگیرم

  11. #11
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    ببخشید من یه سوال راجع به مسئله خودم دارم
    توی متن مسئله نوشته که باید یه کاری کنیم که x از y بزرگتر نشه. اینجا y مقدارش 2.0 هست(توی مثال).
    حالا ما اگه بیاییم 86تا رای 1 درج کنیم x که 9.5 بود میشه 2.04 درسته؟
    خب آخه گفته بزرگتر از 2 نشه

  12. #12

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط qwerty11 مشاهده تاپیک
    یعنی حتی بر اساس زمان شروع کارشونم مرتبشون نمیکنی یه کوچولو درباره ی راهت توضیح بده بقیشو خودم میگیرم
    نه منظورم بعد از سورتش بود. یعنی اردر داینامیکش d+n میشه. اردر کل سوال d+N*lg N میشه
    اول order ها رو بر اساس زمان پایان مرتبشون میکنیم و میریزیم تو یه آرایه ای به نام order از خونه صفر تا n-1 . بعد یه آرایه d تایی به نام best دارم که [ best [ i میگه که اگه کلا از زمان صفر تا i مهلت داشته باشیم که اجاره بدیم (یعنی بعد از زمان i دیگه نتونیم اجاره بدیم) بیشترین سودی که میشه کرد چقدره؟
    حتما قبول داری که 0 = [ best [ 0. حالا یه شمارنده به نام conter در نظر بگیر که شماره آخرین سفارش رو توش داره. پس اول کار برابر با صفره.
    بقیه ش رو هم تو فایل ضمیمه ببین
    عکس های ضمیمه عکس های ضمیمه  
    آخرین ویرایش به وسیله accepted : دوشنبه 24 اسفند 1388 در 23:50 عصر

  13. #13

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط dousti_design مشاهده تاپیک
    ببخشید من یه سوال راجع به مسئله خودم دارم
    توی متن مسئله نوشته که باید یه کاری کنیم که x از y بزرگتر نشه. اینجا y مقدارش 2.0 هست(توی مثال).
    حالا ما اگه بیاییم 86تا رای 1 درج کنیم x که 9.5 بود میشه 2.04 درسته؟
    خب آخه گفته بزرگتر از 2 نشه
    به صورت سوال دقت کن. گفته عددا رو گرد میکنه. یعنی 2.04 ~ 2.0
    به توضیحی که راجع به نحوه گرد کردن داده دقت کن که رقمهای صدم و کوچکتر رو اگه به 5 صدم رسید، به عدد بزرگتر تقریب میزنه و اگر نرسید به عدد کوچکتر. مثلا:
    2.0 ~ 2.04
    2.1 ~ 2.05
    2.1 ~ 2.066
    2.0 ~ 2.049999999999

  14. #14

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    آقا این سایت برا من باز نمیشه . میشه روی سوال رو تو سایت بذارین ؟

  15. #15
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    آقا این سایت برا من باز نمیشه . میشه روی سوال رو تو سایت بذارین ؟
    منظورتون کدوم سواله؟

  16. #16

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط dousti_design مشاهده تاپیک
    خب! اولین مسئله رو که خیلی خیلی هم ساده هست خودم میذارم.
    http://acm.timus.ru/problem.aspx?space=1&num=1000
    این مسئله جمع دو عدد بدون استفاده از عملگر جمع (+) هست.
    روش های زیادی داره. من یه روشش رو که توی سایت هم سابمیت کردم و قبول کرد رو میذارم.

    public class sum
    {
    public static void main()
    {
    string[] tokens = Console.ReadLine().Split(' ');
    int temp = 0;
    int a = int.Parse(tokens[0]);
    int b = int.Parse(tokens[1]);
    if (a < b)
    {
    temp = a;
    a = b;
    b = temp;
    }
    temp = a - b;
    Console.WriteLine((a * 2) - temp);
    string s= Console.ReadLine();
    }

    }
    دوستان لطفا کسی راه حل دیگه ای برای حل این مسئله رو میتونه بذاره؟
    حالا چرا بدون استفاده از عملگر جمع ؟
    اون judger که نمی دونه شما از چه راهی حل کردی . اون فقط این انتظارو داره که به ازای فایل ورودی خودش دقیقا خروجی ایده آل حاصل بشه . دیگه اینکه با چه روشی حل کردین رو نمی دونه که . مگر اینکه Time اش مشکل داشته باشه .
    این سوال فقط برا اینه که شما با نحوه submit کردن و اینا تو سایت آشنا بشین .
    این کد هم accept شده :

    #include <iostream>
    using namespace std;
    int main()
    {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
    }
    نقل قول نوشته شده توسط dousti_design مشاهده تاپیک
    منظورتون کدوم سواله؟
    نه حل شد مرسی

  17. #17

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    من اصلا روی این سوال 1484 رو نفهمیدم . یعنی چی چندبار این کارو تکرار کنه که ریتینگ بیشتر از y نشه ؟

  18. #18
    کاربر تازه وارد آواتار farid_mov2006
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    اهواز
    پست
    37

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط dousti_design مشاهده تاپیک
    خب! اولین مسئله رو که خیلی خیلی هم ساده هست خودم میذارم.
    http://acm.timus.ru/problem.aspx?space=1&num=1000
    این مسئله جمع دو عدد بدون استفاده از عملگر جمع (+) هست.
    روش های زیادی داره. من یه روشش رو که توی سایت هم سابمیت کردم و قبول کرد رو میذارم.

    public class sum
    {
    public static void main()
    {
    string[] tokens = Console.ReadLine().Split(' ');
    int temp = 0;
    int a = int.Parse(tokens[0]);
    int b = int.Parse(tokens[1]);
    if (a < b)
    {
    temp = a;
    a = b;
    b = temp;
    }
    temp = a - b;
    Console.WriteLine((a * 2) - temp);
    string s= Console.ReadLine();
    }

    }

    دوستان لطفا کسی راه حل دیگه ای برای حل این مسئله رو میتونه بذاره؟
    سلام
    ببخشید کجاش گفته بدون استفاده از عملگر جمع؟

  19. #19

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط farid_mov2006 مشاهده تاپیک
    سلام
    ببخشید کجاش گفته بدون استفاده از عملگر جمع؟
    برعکس اشاره شده بود با استفاده از عملگر جمع .
    فکر کنم دوستمون هم تو این قسمت دچار اشتباه شده بودن و کامل ندیده بودن .

  20. #20
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    برعکس اشاره شده بود با استفاده از عملگر جمع .
    فکر کنم دوستمون هم تو این قسمت دچار اشتباه شده بودن و کامل ندیده بودن .
    آخه این مسئله معروفیه که بدون استفاده از عملگر جمع، مجموع دو عدد رو حساب کنیم. منم دیگه پیش زمینش تو ذهنم بود اونطوری سابمیت کردم. حالا برنامه شما رو قبول کرد؟ حتما من اشتباه کردم
    حالا این جمع دو عدد بدون عملگر + هم مسئله جالبیه اگه راه حلی دارید بذارید استفاده کنیم. ممنون
    من اصلا روی این سوال 1484 رو نفهمیدم . یعنی چی چندبار این کارو تکرار کنه که ریتینگ بیشتر از y نشه ؟
    والا اونطور که من فهمیدم یه نفر میخواد میانگین رای هارو توی سایت بیاره پایین تا برسه به y.
    واسه این که این کار رو بکنه مجبوره چندین بار رای 1(min) رو درج کنه. حالا ما باید با دریافت ورودی تعیین کنیم که چند بار رای بده x(میانگین قبلی) میرسه به y(میانگینی که ما میخواهیم).
    توی صورت مسئله گفته که اگر غیر ممکن بود چاپ کنه Impossible
    ولی من نمیدونم کی غیر ممکن میشه؟

  21. #21
    کاربر دائمی آواتار dousti_design
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زنجان - تهران
    پست
    617

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    یک سوال:
    دانشجویان دوره کارشناسی ارشد و بالاتر هم در مسابقات acm شرکت میکنند؟؟؟

  22. #22

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط dousti_design مشاهده تاپیک
    یک سوال:
    دانشجویان دوره کارشناسی ارشد و بالاتر هم در مسابقات acm شرکت میکنند؟؟؟
    فایل ضمیمه رو ببین
    فایل های ضمیمه فایل های ضمیمه

  23. #23
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    سن
    34
    پست
    32

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط accepted مشاهده تاپیک
    نه منظورم بعد از سورتش بود. یعنی اردر داینامیکش d+n میشه. اردر کل سوال d+N*lg N میشه
    اول order ها رو بر اساس زمان پایان مرتبشون میکنیم و میریزیم تو یه آرایه ای به نام order از خونه صفر تا n-1 . بعد یه آرایه d تایی به نام best دارم که [ best [ i میگه که اگه کلا از زمان صفر تا i مهلت داشته باشیم که اجاره بدیم (یعنی بعد از زمان i دیگه نتونیم اجاره بدیم) بیشترین سودی که میشه کرد چقدره؟
    حتما قبول داری که 0 = [ best [ 0. حالا یه شمارنده به نام conter در نظر بگیر که شماره آخرین سفارش رو توش داره. پس اول کار برابر با صفره.
    بقیه ش رو هم تو فایل ضمیمه ببین
    این مسأله رو توی زمان اجرای (n*lg(n هم میشه حل کرد. به جای اینکه جدول داینامیک رو روی زمان بگیریم روی تعداد بازه ها میگیریم و هربار حساب میکنیم که اگر یک بازه باشد زمان اجرا بهتر میشود یا اگر نباشد. یک هزینه (lg(n برای پر کردن هرکدام از خانه های جدول صرف میشود. البته پیاده سازی اون از راه قبلی یه خورده سخت تره، و اگه قبلی accept شده خوب همون بهتره.

  24. #24
    کاربر تازه وارد آواتار a.gh.n
    تاریخ عضویت
    شهریور 1386
    سن
    34
    پست
    40

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط dousti_design مشاهده تاپیک
    توی صورت مسئله گفته که اگر غیر ممکن بود چاپ کنه Impossible
    ولی من نمیدونم کی غیر ممکن میشه؟
    احتمالا منظور اینه که خروجی به اضافه ی N باید در بازه ی N تعریف بشه.

  25. #25
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    227

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط newamir مشاهده تاپیک
    این مسأله رو توی زمان اجرای (n*lg(n هم میشه حل کرد. به جای اینکه جدول داینامیک رو روی زمان بگیریم روی تعداد بازه ها میگیریم و هربار حساب میکنیم که اگر یک بازه باشد زمان اجرا بهتر میشود یا اگر نباشد. یک هزینه (lg(n برای پر کردن هرکدام از خانه های جدول صرف میشود. البته پیاده سازی اون از راه قبلی یه خورده سخت تره، و اگه قبلی accept شده خوب همون بهتره.
    چه جالب آخه من راه حل قبلی رو که پیاده سازی کردم time limit گرفتم
    ممنون میشم اگه یکم بیشتر درباره ی نحوه ی پیاده سازیش توضیح بدین

  26. #26

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط qwerty11 مشاهده تاپیک
    چه جالب آخه من راه حل قبلی رو که پیاده سازی کردم time limit گرفتم
    ممنون میشم اگه یکم بیشتر درباره ی نحوه ی پیاده سازیش توضیح بدین
    اگه time limit گرفتی، به خاطر اشتباه در پیاده سازیت بوده. این راه حل در زمان چند میلی ثانیه باید جواب بده. در حالی که time limit سوالهای ای.سی.ام در حدود ثانیه ست. (0.5 ، 1 ، 2 ثانیه)
    احتمالا یه جا تو لوپ میفته
    آخرین ویرایش به وسیله accepted : یک شنبه 08 فروردین 1389 در 23:40 عصر

  27. #27

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    میشه لطفا به این سوال جوا ب بدین :
    یافتن حداقل فاصله ی دونقطه یا مختصات دونقطه با کمترین فاصله به روش تقسیم وغلبه .این سوال clrs بوده یه چیزایی در موردش خوندم امابرای پیاده سازیه دقیقش مشکل دارم میشه منو راهنمایی کنید

  28. #28
    کاربر دائمی آواتار jlover
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    زیر میز کامپیوترم !
    سن
    39
    پست
    314

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    سلام
    من اتفاقی وارد این تالار شدم و به این تاپیک علاقه مند شدم و ...
    Cipher Message 2
    http://acm.timus.ru/forum/thread.asp...57230736032500
    همه ی کارایی که کردم تو این بحث آورده شده...
    خوشحال میشم اگه کسی علاقه مند بود نظر بده ، دیگه واقعن بریدم

    در ضمن فکر میکنم به اندازه ی کافی خوب مستندسازی شده (اولیه البته)،اگه تو ویرایشگر کپی کنید راحت میفهمید
    اگر هم روش کلیش رو خاستید بفرمایید عرض کنم خدمتتون

    با تشکر

  29. #29

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    ميشه تمنا کنم چندتا نمونه سوالacm رو با حل الگوريتم بذاريد؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟خواهش ميکنم

  30. #30
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    227

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    اینم به خاطر شما :

    سوال : https://www.spoj.pl/problems/CLEANRBT/

    جواب :
    import java.io.*;
    import java.util.*;
    public class Main {
    static int w[][],num;
    static int dp[][];
    public static void main(String[] args) throws IOException {
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    int m,n;
    while(true){
    StringTokenizer st=new StringTokenizer(br.readLine());
    n=Integer.parseInt(st.nextToken());
    m=Integer.parseInt(st.nextToken());
    if(m==0 && n==0) break;
    ArrayList<Integer> dirt=new ArrayList<Integer>();
    int first=0;
    char map[][]=new char[m][n];
    for (int i = 0; i < m; i++) {
    String s=br.readLine();
    for (int j = 0; j < n; j++) {
    if((map[i][j]=s.charAt(j))=='o'){
    first=n*i+j;
    dirt.add(0,first);
    }
    if(map[i][j]=='*') dirt.add(n*i+j);
    }
    }
    w=new int[10][10];
    int move[][]={{1,0},{-1,0},{0,1},{0,-1}};
    num=dirt.size();
    for (int i = 0; i < num; i++) {
    boolean check[][]=new boolean[m][n];
    LinkedList<Integer> q=new LinkedList<Integer>();
    int pop=dirt.get(i),x=pop/n,y=pop%n,L=0;
    q.add(pop);
    check[x][y]=true;
    while(!q.isEmpty()){
    int l=q.size();
    for (int k = 0; k < l; k++) {
    pop=q.removeFirst();
    x=pop/n; y=pop%n;
    if(map[x][y]=='*' || map[x][y]=='o')
    w[i][dirt.indexOf(n*x+y)]=L;
    for (int j = 0; j < 4; j++) {
    int X=x+move[j][0],Y=y+move[j][1];
    if(X==-1 || X==m || Y==-1 || Y==n || check[X][Y] || map[x][y]=='x') continue;
    q.add(n*X+Y);
    check[X][Y]=true;
    }
    }
    L++;
    }
    }
    boolean bad=false;
    for (int i = 0; i < num; i++) {
    for (int j = i+1; j < num; j++) {
    if(w[i][j]==0) bad=true;
    }
    }
    if(bad){
    System.out.println(-1);
    continue;
    }
    dp=new int[num][1<<num];
    for (int i = 0; i < num; i++) {
    Arrays.fill(dp[i], -1);
    }
    System.out.println(f(0,(1<<num)-1));
    }
    }
    static int f(int i,int j){
    if(dp[i][j]!=-1) return dp[i][j];
    if(j==1) return 0;
    int min=100000;
    for (int k = 1; k < num; k++) {
    if((j&(1<<k))!=0)
    min=Math.min(min, w[i][k]+f(k,j-(1<<k)));
    }
    return dp[i][j]=min;
    }
    }


  31. #31
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    227

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    اینم یکی دیگه. امیدوارم به دردتون خورده باشه ...

    سوال : https://www.spoj.pl/problems/BOTTOM/

    جواب :
    import java.io.*;
    import java.util.*;
    public class Main{
    static Vector<Integer> g[]=new Vector[5000];
    static Vector<Integer> gt[]=new Vector[5000];
    static int time[]=new int [5000];
    static boolean check[]=new boolean[5000];
    static int find[]=new int [5000],index;
    public static void main(String[] args) throws IOException{
    StreamTokenizer in=new StreamTokenizer(new BufferedInputStream(System.in));
    PrintWriter out = new PrintWriter(System.out);
    while(true){
    in.nextToken();
    int n=(int)in.nval;
    if(n==0) break;
    index=0;
    in.nextToken();
    int m=(int)in.nval;
    for (int i = 0; i < n; i++) {
    g[i]=new Vector<Integer>();
    gt[i]=new Vector<Integer>();
    }
    for (int i = 0; i < m; i++) {
    in.nextToken();
    int a=(int)in.nval-1;
    in.nextToken();
    int b=(int)in.nval-1;
    g[a].add(b);
    gt[b].add(a);
    }
    for (int i = 0; i < n; i++) {
    if(!check[i]) dfs1(i);
    }
    index=0;
    for (int i = n-1; i>=0; i--) {
    if(check[time[i]]) dfs2(time[i]);
    index++;
    }
    boolean isSink[]=new boolean[n];
    for (int i = 0; i < n; i++) {
    if(isSink[find[i]]) continue;
    for (int j = 0; j < g[i].size(); j++)
    if(find[i]!=find[g[i].get(j)]){
    isSink[find[i]]=true;
    break;
    }
    }
    for (int i = 0; i < n; i++) {
    if(!isSink[find[i]])
    out.print((i+1)+" ");;
    }
    out.println();
    }
    out.flush();
    }
    static void dfs1(int i){
    check[i]=true;
    int len=g[i].size(),x;
    for (int j = 0; j < len; j++) {
    x=g[i].get(j);
    if(!check[x])
    dfs1(x);
    }
    time[index++]=i;
    }
    static void dfs2(int i){
    find[i]=index;
    check[i]=false;
    int len=gt[i].size(),x;
    for (int j = 0; j < len; j++) {
    x=gt[i].get(j);
    if(check[x])
    dfs2(x);
    }
    }
    }


  32. #32

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    با عرض سلام
    بنده احتیاج به حل مسأله شماره 1253 یعنی markov trains دارم.
    هر کسی که بتونه این مسأله رو حل کنه یا حلش رو پیدا کنه من تا آخر عمر مدیونش هستم.
    این رو هم بگم که وقت زیادی ندارم.
    التماس می کنم به کسانی که می تونند این مسأله رو حل کنند که کمکم کنند.
    اینم لینکش:
    http://acm.pku.edu.cn/JudgeOnline/problem?id=1253
    این برنامه حتما باید به زبان c یا C++‎ نوشته شود.
    با تشکر

  33. #33
    کاربر دائمی آواتار مصطفی ساتکی
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    www.7khatcode.com
    پست
    1,193

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    هر کسی که بتونه این مسأله رو حل کنه یا حلش رو پیدا کنه من تا آخر عمر مدیونش هستم.
    حداقل شما یه زحمتی می کشیدید سوال مورد نظرتون ترجمه می کردید و به صورت یه تاپیک عنوان می کردید تا افراد به شما جواب بدن .

  34. #34

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط Delphi_CAT مشاهده تاپیک
    حداقل شما یه زحمتی می کشیدید سوال مورد نظرتون ترجمه می کردید و به صورت یه تاپیک عنوان می کردید تا افراد به شما جواب بدن .
    بنده خواستم ترجمه کنم ولی نتونستم زبانم خوب نیست.
    هر کسی این لطف رو در حق من بکنه و این مساله رو حل کنه من تا آخر عمرم دعاش می کنم و مدیونشم.
    خواهش می کنم از هر کسی که می تونه این کارو برای من انجام بده.

  35. #35

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    سوالاتشون به نظر من بیشتر ریاضی تا برنامه نویسی...
    ممکنه یک برنامه نویس همه نوع syntax بلد باشه اما فرمول ندونه.
    بنظره من بیشتر مسابقات ریاضی تا برنامه نویسی

  36. #36
    کاربر تازه وارد آواتار 8611670474
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    قائمشهر
    پست
    44

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    سلام.

    افا ما داریم تازه شروع میکنیم.
    تو چه محیطی کد مینویسن؟ توربو سی یا بورلند سی؟
    کدوم مباحث برنامه نویسی مهمتره؟
    از کجا باید ثبت نام کرد؟

    لطفا اونایی که شرکت کردن جواب بدن.

    مرسی

  37. #37
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    227

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    سلام،

    به محیط ربطی نداره، به شما چند تا سوال میدن شما باید با استفاده از یکی از زبان های برنامه نویسی که میشه باهاش سوالات رو حل کرد اقدام به حل درست سوال بکنین. پس محیط اصلاً مهم نیست. اما همینو بگم که در مسابقات شریف اگر اشتباه نکنم توربو سی یابورلند سی ندارین و باید تو محیط هایی مثل visual C++‎ یا codeblocks یا dev C++‎ برنامتون رو بنویسین ...

    تمام مباحث برنامه نویسی مهم هستن. و از همه جاش ممکنه سوال بیاد. مباحثی نظیر : گراف، برنامه نویسی پویا، الگوریتم های حریصانه، عقب گرد، هندسه و تمام مباحثی که مربوط به ریاضیات میشن.

    جای هم فعلاً نباید ثبت نام کنید. مسابقه ی منطقه ای امسال آذر ماه برگزار میشه. هر دانشگاه چندتا سهمیه داره. فعلاً بهتره با کسانی از دانشگاهتون که رفتن شریف صحبت کنید. اما تمام نکات مربوط به ثبت نام رو هم میتونید تو سایت www.acmtehran.blogspot.com دنبال کنید...

  38. #38

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    سوالاتشون به نظر من بیشتر ریاضی تا برنامه نویسی...
    ممکنه یک برنامه نویس همه نوع syntax بلد باشه اما فرمول ندونه.
    بنظره من بیشتر مسابقات ریاضی تا برنامه نویسی
    به هیچ وجه اینطور نیست ، برنامه نویسی از ملزومات اصلی دانش هر برنامه نویس باید باشه ، اصلا
    مگه بدون ریاضی برنامه نویسی ممکنه ؟!

    تو چه محیطی کد مینویسن؟
    محیط مهم نیست ، مهم زبان برنامه نویسی است ، که بیشتر ++C یا Java میباشد .
    حالا وقتی شما ++C میدونید ، دیگه محیط یا کامپایلر براتون چه فرقی میکنه ، DEV باشه یا Borland یا
    Turbo و ...

    کدوم مباحث برنامه نویسی مهمتره؟
    ببینید ، گروه ها معمولا 3 نفره اند که متشکل میشن از فردی که کد نویسیش خوبه ، فردی که ریاضیش
    و قدرت تحلیل الگوریتمش خوبه و فردی که سوالارو ترجمه میکنه ! البته اینطور نیست که یه فردی فقط
    مسئول ترجمه باشه ، بلکه ممکنه تو سایر قسمت ها هم مثل کدنویسی به سایر اعضا کمک خاصی
    بکنه ولی این یه روال کلی کار بود .
    مباحث هم بیشتر ، الگوریتم های ریاضیات گسسته هستن و به همین دلیل گروههایی موفق ترند که تو
    گروهشون یه نفر باشه که از لحاظ طراحی الگوریتم در سطح Ultra و یه نفر هم از لحاظ کدنویسی و سرعت
    عمل Ultra ! چون عموما تو چنین مسابقاتی سرعت عمل ، حرف اول رو میزنه !






  39. #39

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    دوست عزیز بغیر از این دو این چند زبانی که اشاره کردی از زبان های دیگه ای هم میشه استفاده کرد مثلا C#‎

  40. #40

    نقل قول: حل، درخواست و تمرین سوالهای مسابقات جهانی برنامه نویسی (ACM)

    نقل قول نوشته شده توسط topline مشاهده تاپیک
    دوست عزیز بغیر از این دو این چند زبانی که اشاره کردی از زبان های دیگه ای هم میشه استفاده کرد مثلا C#‎
    کدوم مسابقات منظورتونه که می‌شه از سی شارپ استفاده کرد؟ تا جایی که می‌دونم و دیدم، مسابقات منطقه‌ای سایت تهران این زبان را ساپرت نمی‌کنه. مسابقات جهانی هم همینطور.

صفحه 1 از 2 12 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •