به نام خدا درس ساختمان داد هها و الگوریتم ها )سال تحصیلی ، ۹۰-۸۹ترم (۲ استاد دکتر محمد علی آبام دستیاران استاد اشکان نوروزی احسان امام جمعه زاده پروژه چهار خها مهلت ارسال پاس پایان روز ۱۱خرداد سلم لطفْا توضیحات زیر را با دقت بخوانید: ✗ یتوانید به زبان سی پلس پلس و یا جاوا بنویسید. برنامه های خود را م ✗ نگونه که در متن سؤال گفته شده ،به برنامه ی شما داده می شود .خروجی شما نیز باید دقیق ْا به همان فرمتی باشد که در ورودی هر برنامه ،دقیقْا هما متن سؤال گفته شده است. ✗ مهم :شیوه ی ارسال پروژه: برنامههای خود را در پوشه ای به نام StdID_PR4بریزید )البته به جای ، StdIDشماره ی دانشجویی خود را قرار دهید!( سپس این پوشه رافشرده کنید .در نهایت ،فایل StdID_PR4.zipرا به آدرس [email protected]ارسال نمایید .دقت کنید که عنوان ایمیلتان باید PR4باشد. علوه بر ارسال پروژه ها به آدرس گفته شده ،باید برنامههای خود را به آربیتر ) ( http://acm.sharif.edu/arbiterنیز ارسال نمایید .آربیتر بهصورت آنلین برنامههای شما را تست کرده و نتیجه را به شما گزارش می کند) .البته نتیجهای که آربیتر به شما گزارش می کند ،نتیجه ی نهایی پروژه تان نیست!( تذکر :در آربیتر ،نام کاربری شما باید به فرم ds88888888باشد که در آن به جای ، ۸۸۸۸۸۸۸۸شماره ی دانشجویی قرار می گیرد. ✗ اگر درباره ی پروژه ها سؤالی داشتید ،به [email protected]ایمیل بزنید. SecondWar.java , SecondWar.cpp داستان جنگ بین دو کشور Aو Bرا که به خاطر دارید؟! اکنون بعد از گذشت یک نسل ،این دو کشور دوباره به جنگ یکدیگر می روند ،ولی این بار به سبکی نوین! یگرفتند چه کسی را برای نبرد تن به تن به نگونه که به یاد دارید ،در دور قبلی مبارزات ،استراتژی هر دو سپاه به گونهای بود که در طول جنگ باید تصمیم م هما میدان بفرستند) .در هر مرحله از جنگ ،نیرومندترین سرباز Aبا کم نیروترین سرباز Bمی جنگید(. چون این کار )یعنی انتخاب سرباز برای هر مرحله از جنگ( ،کار دشواری بود )و به داده ساختار heapنیاز داشت!( ،این بار هر دو سپاه تصمیم گرفتند که ترتیب ورود سربازان به میدان نبرد را از پیش تعیین کنند تا در حین جنگ ،برای انتخاب افراد ،زمان زیادی مصرف نشود! یشود: در این سری از مبارزات هم ،نتیجه ی هر نبرد تن به تن ،مشابه قبل تعیین م – اگر نیروی دو سرباز برابر باشد ،هر دو می میرند! – یمیرد و سرباز دیگر ،با نیرویی برابر با نصف نیروی قبلی خود ،به زندگی ادامه اگر نیروی یکی بیش تر از دیگری باشد ،سربازی که نیروی کم تری دارد ،م k می دهد) .به بیان دقیق تر ،اگر نیرویش پیش از نبرد تن به تن ،برابر kبوده ،پس از این نبرد ،مقدار نیرویش برابر ] [ 2 خواهد بود(. اگر در یک نبرد تن به تن ،سربازی بمیرد ،برای نبرد تن به تن بعدی ،سرباز بعدی آن سپاه وارد میدان می شود .ولی سربازی که پس از یک نبرد تن به تن زنده می ماند ،خودش در نبرد بعدی حضور خواهد داشت) .در واقع ،سربازی که به میدان آمده است ،تا زمانی که زنده است ،در میدان می ماند(. استراتژی نظامی این دو سپاه ،یک تغییر دیگر هم داشت! این بار ،هر سرباز ،یک » رشته ی رمز « هم دارد! در یک سپاه ،رشته ی رمز هیچ دو سربازی برابر نیست. در هر یک از این دو سپاه ،وقتی سربازی کشته می شود ،همه ی سربازانی که رمز فرد کشته شده ،پیشوند رمزشان بوده ،فرار می کنند! ل فرض کنید در یک سپاه ۴ ،سرباز با رمزهای abc ، abb ، abو bbزنده مانده اند .در چنین سپاهی ،در صورت کشته شدن ، abاین دو سرباز مث ْ یکنند abb :و ) abcچون رشته ی ، abپیشوند این دو رشته است(. هم فرار م یتواند سربازان فراریش را مرده به حساب آورد!( پس اگر در یک زمان ،سربازی که بدیهی است سربازان فرار کرده ،دیگر به جنگ نخواهند آمد) .در واقع هر سپاه م قرار بود وارد میدان شود ،فرار کرده بود ،سرباز بعدی آن سپاه به میدان خواهد آمد. پایان جنگ : یمانده است ،سپاهی که دیگر مانند سری قبلی جنگ ها ،اگر سربازان یکی از سپاه ها تمام شدند ،در حالی که هنوز از سپاه دیگر ،سربازی باق تخورده محسوب می شود) .در صورتی که سربازان هر دو سپاه ،دقیقْا همزمان تمام شدند ،جنگ پیروزی نداشته است(. سربازی ندارد ،شکس ورودی: در نخستین خط ورودی ،عدد ) mتعداد سربازان کشور ( Aآمده است و در mخط بعدی ،نیروی اولیه تک تک سربازان این کشور به همراه رمزشان سپس عدد ) nتعداد سربازان کشور ( Bو در nخط بعد از آن ،نیروی اولیه ی تک تک سربازان کشور Bبه همراه رمزشان. برای هر یک از این دو سپاه ،سربازان به ترتیبی که قرار است وارد میدان نبرد شوند ،در ورودی داده شده اند. نیروهای اولیه ،همگی اعداد طبیعی هستند و در متغیر های ۴بایتی صحیح ) ( intجا می شوند .رمزها هم همگی تنها از حروف aو bو cو dساخته شدهاند و طول هر کدامشان حداکثر ۲۰کارکتر است. خروجی: – اگر جنگ برنده ای نداشته است ،در تنها خط خروجی ،یک 0بنویسید – یمانده برای سربازان کشور پیروز و در خط بعدی ،نام کشور پیروز را اگر جنگ برنده داشته است ،در نخستین خط خروجی ،مجموع نیروهای باق بنویسید. محدودیت ها: 0 m , n ≤ 200, 000 نیروهای اولیه ،همگی اعداد طبیعی هستند و در متغیر های ۴بایتی صحیح ) ( intجا می شوند. رمزها هم همگی از حروف aو bو cو dتشکیل شدهاند و طول هر رمز ،حداکثر ۲۰کارکتر است. محدودیت حافظه هر تست 6۴ :مگابایت محدودیت زمانی هر تست ۴ :ثانیه برای سی پلس پلس 6 ،ثانیه برای جاوا sample input : 4 1 ab 100 abb 1000 abc 10 bb 3 4 abcd 8 abc 4 ab sample output : 8 B نمره ی این سوال ،به عنوان نمره ی اضافی در نظر گرفته می شود. Game.java , Game.cpp nکارت به ترتیب روی میز چیده شدهاند و در ابتدا روی هر یک از کارت ها ،یک عدد صحیح نا منفی نوشته شده است. یشود که در هر مرحله از بازی: یک بازی دو نفره به این صورت انجام م ینویسد )این عدد ممکن است یکند و عدد صحیح دلخواهی روی آن م یکند ،عدد روی کارت را پاک م ابتدا نفر اول ،ابتدا یکی از کارت ها را به دلخواه انتخاب م منفی باشد!( سپس یک عدد طبیعی iاعلم می کند. یکند باید ناصفر اکنون نوبت بازی نفر دوم است .نفر دوم باید از بین iکارت اول ،تعداد ناصفری کارت مجاور انتخاب کند) .تعداد کارت هایی که انتخاب م باشد(. امتیازی که نفر دوم از این مرحله می گیرد ،برابر است با مجموع اعداد نوشته شده بر روی این کارت ها. این کار mبار تکرار می شود .در پایان بازی ،امتیاز نفر دوم برابر است با مجموع امتیازی که در mمرحله گرفته است. به نفر دوم کمک کنید تا بیش ترین امتیاز ممکن را بگیرد. ورودی: در نخستین خط ورودی ،عدد ) nتعداد کارت ها( آمده است و سپس در خط بعدی nعدد صحیح نامنفی که بیان گر اعداد اولیه ی روی کارت ها هستند. سپس در خط بعدی عدد ) mتعداد مراحل بازی( آمده است .در mخط بعدی ،در هر خط ،سه عدد pو qو iآمده اند p .و qبیان گر این هستندکه نفر اول ،عدد pامین کارت را به qتبدیل کرده .عدد iهم که در متن سؤال توضیح داده شده است. یتواند صفر باشد. تعداد کارت هایی که نفر دوم در یک مرحله انتخاب می کند ،نم خروجی: یتواند در طول بازی به دست آورد ،بنویسید. در تنها خط خروجی ،حداکثر امتیازی را که نفر دوم م محدودیت ها: 0 n ≤ 2∗105و 0 ≤ m ≤10 اعداد روی کارت ها نیز همواره در بازه ی ] [ −10 6 , 106قرار دارند. 5 محدودیت حافظه هر تست 6۴ :مگابایت محدودیت زمانی هر تست ۴ :ثانیه برای سی پلس پلس 6 ،ثانیه برای جاوا sample input : 5 10 20 20 100 30 2 2 -1000 3 4 -10 5 sample output : 60 یکند و ۲۰امتیاز می گیرد .سپس در مرحله ی بعدی ،کارت های سوم و چهارم و پنجم را توضیح خروجی نمونه :بازیکن دوم ،در مرحله ی اول بازی ،سومین کارت را انتخاب م یکند و ۴۰امتیاز می گیرد( 20 −10 30 = 40 ) . انتخاب م
© Copyright 2026 Paperzz