کریم یک کودک ۵ ساله است و در گردهمایی مهدکودکیها شرکت میکند.
کریم و نفر از هم مهدیهایش دور یک میز دایرهای شکل جهت صرف دوغ گرد هم آمدهاند. آنها را با شروع از کریم و بصورت ساعتگرد، با اعداد 1 تا شمارهگذاری میکنیم. بین برخی از این کودکان رابطهی دوطرفهی دوستی برقرار است.
پس از انتظارهای بسیار، یک عدد پارچ دوغ به کنار میز آورده میشود. همهی این نفر میخواهند از این دوغ بنوشند. روند دوغرسانی در این قبیل گردهماییها به این صورت است که پارچ دوغ ابتدا به یکی از افراد دور میز داده میشود. هرکسی که پارچ به دستش میرسد پس از نوشیدن مقداری از آن، پارچ دوغ را به یکی از دوستانش که هنوز دوغ نخورده است میدهد تا وقتی که همه از آن بنوشند. دقت کنید که بخاطر سن کم، هیچ کس پارچ دوغ را به کسی که با او دوست نیست نمیدهد.
به دلیل بزرگ بودن میز و کوچک بودن کودکان، هرکس برای رساندن دوغ به نفر بعدی به روی میز میرود و هنگام راه رفتن روی مسیر بین جایگاه نشستن خود و نفر بعدی، خطی از دوغ روی میز باقی میگذارد. روی هیچ نقطهای از مسیری که یک کودک به سمت کودک بعدی طی میکند نباید از قبل دوغی ریخته شده باشد؛ چون کودک هنگام حمل دوغ لیز خورده و خاطرهی بدی از گردهمایی بجا خواهد ماند.
حال با دانستن روابط دوستی بین این کودکان، بگویید که این ها به چه ترتیبی میتوانند دوغ بخورند که به همه دوغ برسد و هیچکس هنگام حمل دوغ زمین نخورد. (یا بگویید که امکان ندارد.)
خط اول ورودی شامل عدد است.
در خط دوم ورودی عدد که بیانگر تعداد رابطه های دوستی بین کودکان است. هریک از خط بعدی یک جفت عدد آمده که یعنی کودک شماره و کودک شماره با هم دوست هستند.
اگر امکان ندارد که به همه با شرایط گفته شده دوغ برسد، تنها خط خروجی باید شامل عدد باشد. در غیر این صورت خروجی برنامه باید ترتیبی صحیح از دوغ خوردن افراد باشد که در خط آمده است.
در صورت وجود چند ترتیب درست، یکی را به دلخواه خروجی دهید.
کیانوش متقاضی عضویت در سازمان OC است. در روز سوم مصاحبه، سازمان ادبیات او را مورد بررسی قرار داده است.
در این مصاحبه، پنچ نفر روبروی کیانوش مینشینند. آنها شعری انتخاب کردهاند. هریک از آنها یکبار ابیات آن شعر را به هم میریزد و با ترتیبی تصادفی به کیانوش میگوید؛ به این صورت که ابتدا شعر انتخاب شدهی اولیه را درنظر گرفته و سپس تعدادی از ابیات آنرا انتخاب کرده، از شعر حذف میکند و در جای دیگری به شعر اضافه میکند. کیانوش باید ترتیب ابیات در شعر اصلی را بیابد. میدانیم که هر بیت در حداکثر یکی از این ۵ شعر حذف و جابجا شده است.
هنگام بههم ریختن ابیات، بیتها پس از حذف شدن به ترتیب دلخواه و در جایگاه دلخواه اضافه میشوند. ممکن است جایگاه ابیات حذف نشده نیز در این حرکت تغییر کند.
با ورودی گرفتن ابیات خوانده شده بگویید که ترتیب اولیه چه بوده است. تضمین میشود که در ورودیهای دادهشده ترتیب اولیه بصورت یکتا مشخص میشود.
سطر اول ورودی تنها شامل عدد است که نمایانگر تعداد ابیات داخل شعر خوانده شده است.
سپس در سطر بعدی، پنج بار و هر بار در سطر و در هر سطر یک بیت از شعر آمده است. ابیات را با اعداد صحیح متمایز بین ۰ و مشخص میکنیم.
خروجی برنامه باید شامل سطر باشد که هر سطر شامل یک بیت از شعر بشود. ترتیب ابیات باید برابر ترتیب انتخاب شدهی اولیه باشد.
در این مثال هر فرد قبل از خواندن شعر یک بیت را از آن حذف کرده و به ابتدای شعر منتقل میکند و سپس آن را میخواند؛ پس هر بیت در حداکثر یک شعر جابجا شده است.
عمو که فردی بسیار پول پرست است، جهت صرفهجویی در تعداد حروف پیامکهایش به فشردهسازی رشتهها روی آورده.
روش عمو برای فشردهسازی به این صورت است:
که او در ابتدا جایگشتی از اعداد ۱, ۲, ..., انتخاب میکند. سپس رشتهی خود را به دسته های پشت سر هم حرفی تقسیم میکند (طول رشته باید به بخشپذیر باشد) و روی هر دسته از حروف، جایگشت خود را اعمال میکند. سپس رشتهی بدست آمده را بوسیلهی روش RLE که در ادامه توضیح داده خواهد شد، فشرده میکند.
اعمال جایگشت روی یک دسته از حرف یعنی حرف م را در جایگاه اول قرار داده، حرف م را در جایگاه دوم و... برای مثال اعمال جایگشت {۲ ,۴ ,۱ ,۳} روی رشتهی آن را تبدیل به میکند. اعمال این جایگشت با دسته دسته کردن روی رشتهی ، رشتهی را نتیجه میدهد.
رشتهی جایگشت داده شده توسط RLE (یا run-length encoding) فشرده میشود. جهت جلوگیری از محاسبات پیچیده، طول رشتهی فشردهشده را برابر تعداد گروه حرفهای برابر پشت سر هم درنظر میگیریم. برای مثال طول رشتهی پس از فشردهشدن توسط RLE را ۴ در نظر میگیریم. (یک گروه ۲ حرفی a، یک گروه تک حرفی b، یک گروه تک حرفی c و یک گروه ۲ حرفی a)
عمو میخواهد پیامکی را با روش گفته شده فشرده کرده و بفرستد. واضح است که طول رشتهی نهایی به جایگشت انتخابشده مربوط است. شما با داشتن متن پیامک عمو، جایگشتی انتخاب کنید که پس از فشردهسازی بوسیلهی آن طول پیامک کمینه شود و این طول کمینه را خروجی دهید.
سطر اول تنها شامل عدد است.
در سطر بعدی پیامک عمو بصورت یک رشته از حروف کوچک انگلیسی به طول حداکثر ۵۰۰۰۰ آمده است.
در تنها سطر خروجی یک عدد چاپ کنید که برابر کمترین طول ممکن برای پیامک عمو است.
در این مثال با انتخاب جایگشت {۲ ,۳ ,۴ ,۱} نتیجهی بهینه بدست میآید.
انجام دادن تکالیف معمولاً موجب میشود دانشآموزان درک عمیقتری نسبت به درس داشته باشند. هری پاتر به عنوان یکی از دانشآموزان هاگوارتز، خیلی وقتها تکالیف زیادی را باید انجام دهد. او هر روز، به عنوان تکلیف، یک مجموعه مسئله از استادانش میگیرد. مسئلهی به اندازهی زمان لازم دارد تا کامل انجام شود. با فرض داشتن یک برنامه (یا به عبارت دیگر یک ترتیب از مسئلهها)، هر مسئلهی یک «زمان پایان»ای دارد که آن را با نمایش میدهیم. برای مثال اگر مسئلهی اولین مسئلهای باشد که حل میشود آنگاه زمان پایان آن برابر است. هر مسئلهی همچنین یک «وزن» مشخصشدهی دارد که اهمیت آن مسئله را در ایجاد تسلط بر دانش مربوطه نشان میهد. هری میخواهد مسئلههایش را طوری مرتب کند که جمع وزندار زمان پایان مسئلهها یعنی کمینه شود. برنامهای بنویسید که با گرفتن مجموعهای از مسئله و هزینهی زمانی هرمسئله () و وزنش () کمترین مقدار ممکن را برای جمع وزندار زمان پایانها یعنی پیدا کند.
برای مثال فرض کنید دو مسئله داریم: مسئلهی اول به اندازهی زمان میبرد و وزن آن است و مسئلهی دوم به اندازهی زمان میبرد و وزن آن است. در این صورت، اگر مسئلهی اول ابتدا حل شود مجموع وزندار زمانها میشود و اگر مسئلهی دوم ابتدا حل شود، مجموع وزندار برابر میشود که به وضوح کمترین مقدار مجموع وزندار زمانها برابر است.
در خط اول ورودی آمده است که تعداد مسئلهها را نشان میدهد. در هر یک از خط بعد دو عدد و که به ترتیب زمان حل شدن و وزن مسئله است آمده است.
در تنها سطر خروجی فقط یک عدد صحیح بنویسید که نشاندهندهی کمترین مقدار ممکن برای مجموع وزندار زمان پایانها مسئلهها باشد.
شهر زنبورها بر روی یک شاخه از یک درخت تنومند ساخته شده است. این شهر از ستون کنار هم تشکیل شده که آنها را به ترتیب از ۱ تا شمارهگذاری کردهایم. در هر ستون تعدادی کندو وجود دارد، به طوری که کندوی اول به شاخه متصل است و کندوهای بعدی هر کدام به کندوی بالایی خود متصلند. در نتیجه هر ستون ارتفاعی دارد که آن را با نمایش میدهیم. (تعداد کندوهایی که در آن ستون وجود دارد)
ملکهٔ زنبورها برای کاهش ضرر در حملهٔ خرسها به تازگی دست به کار شده و گروهی را به سردستگی «هاچ زنبور عسل» مسئول این کار کرده است. در حملهٔ یک خرس به شهر زنبورها، خرس تا جایی که میتواند میپرد و در نتیجه تمام کندوهایی که دستش به آنها میرسد را میکند؛ ضرر یک حمله برابر تعداد کندوهایی است که خرس کنده است. در نتیجه هاچ باید کاری کند که در حملهٔ یک خرس کمترین تعداد کندو در دسترس خرس باشد.
در هر حرکت هاچ و دستهٔ زنبورها میتوانند یک کندو از پایینترین جا در یک ستون را بردارند و به پایینترین کندو در یکی از دو ستون مجاور متصل کنند؛ دقت کنید که تنها میتوان در ستونهای ۱ تا کندویی اضافه کرد. دراین صورت ارتفاع این ستون یکی کم شده و به ارتفاع ستونی که کندو در آن قرار داده شده، یک واحد اضافه میشود. به دلیل حجم زیاد کار و کمبود زمان هاچ میخواهد در کمترین تعداد حرکت، با جابجا کردن کندوها به شیوهٔ گفته شده کاری کند که در حملهٔ یک خرس کمترین خسارت ممکن به شهر وارد شود.
شما باید به دست آورید کمترین تعداد حرکت برای اینکه هاچ این کار را انجام دهد چقدر است. برنامهای بنویسید که تعداد و ارتفاع ستونهای شهر را از ورودی بخواند و کمترین تعداد حرکت برای اینکه هاچ ضرر را به حداقل برساند را در خروجی بنویسد.
سطر نخست ورودی شامل یک عدد صحیح است: که تعداد ستونهای یک شهر را مشخص میکند. سطر بعدی محتوی عدد صحیح میباشد؛ عدد اُم نشاندهندهٔ ارتفاع ستون اُم () است.
در تنها سطر خروجی یک عدد که نشانگر کمترین تعداد حرکات لازم میباشد بنویسید.
نردبان کلمات یک دنباله از کلمات است که که هر دو تا کلمهی پشتسرهم صرفا فقط در یک حرف تفاوت داشته باشند.. یک مثال از این نردبان کلمات (البته به صورت افقی نوشتهایم!!) میتواند باشد. توجه کنید که حروف دو کلمهی پشتسرهم میتواند جابهجا شود ولی دقیقا یک حرف باید تغییر کند. برای این مسئله به شما یک فرهنگ لغات از کلمات مختلف داده میشود که همگی طولشان یکسان است. شما باید یک برنامه بنویسید که کوتاهترین نردبان از کلمات را بیابد که کلمهی اول و کلمهی آخر آن هیچ حرف یکسانی نداشته باشد.
اگر و دو رشته از حروف باشند، که تعداد حروفشان یکسان است و حرف ام رشتهی را نشان دهد آنگاه گوییم از به صورت الفبایی کوچکتر است اگر برای یک داشته باشیم و برای تمام داشته باشیم
سطر نخست ورودی شامل دو عدد صحیح به ترتیب و میباشد که نشاندهندهی تعداد کلمات فرهنگ لغات و طول هر کدام میباشد. در هر کدام از سطر بعد یک کلمه با حروف به طول آمده است.
در تنها سطر خروجی کوچکترین نردبان الفبایی با شرایط خواسته شده را چاپ کنید و بین هر دو کلمهی پشت سر هم فاصله چاپ کنید. ورودی به گونهای داده میشود که تضمین شود حتما نردبان خواسته شده وجود دارد و اگر چندین نردبان با طول یکسان وجود داشت، نردبانی را انتخاب کنید که با توجه به تعریف داده شده به صورت الفبایی کوچکتر باشد.
در يک منطقهى اروپايى باستانشناسان اخيراً نسخى خطى را يافتهاند که فهم متن کتیبه، برای آنها دستیابی به فرهنگ منطقه حیاتی ارزیابی شده است. در رمزگشايى بخش نوشتارى اين کتيبهها دانشمندان با چالشى جدى مواجه شدهاند. علاوهبر اينکه نمىدانند کتيبه به چه زبانى نوشته شده، بعضى حروف آن طى زمان از بين رفته و قابل تشخيص نيست. يکى از دانشمندان با مطالعهى کتيبه زبانى را به خاطر آورده که در آن حداکثر حرف صدادار پشتسرهم و حرف بىصداى متوالى ممکن است بيايد. همچنين در اين زبان حداکثر حرف صدادار متوالى مىتوانند يکسان باشند و نيز حرف بىصداى متوالى. اين دانشمند براى کسب اطلاعات بيشتر در مورد اين زبان گروه را ترک کرده است. ديگران سعى دارند که تا بازگشت او کتيبهها را بررسى کرده و ببينند که آيا با نظريهى دانشمند تناقض دارد يا خير. آنها مىخواهند که درصورت سازگارى نظريه با کتيبهها ميزان کار پيشروى خود را تخمين بزنند. به عبارت ديگر، مىخواهند بدانند که متن را به چند صورت مىتوان به صورت سازگار با نظريه رمزگشايى کرد. از شما براى کمک در اين کار دعوت رسمى بهعمل آمده است. حروف مورد استفاده در اين کتيبهها، بر حسب اتفاق، همان حروف کوچک الفباى انگليسى است. از بين آنها حروف "aeiou" حروف صدادار هستند.
سطر اول ورودی چهار عدد صحيح به ترتیب آمدهاند. سطر دوم شامل يک کلمه از کتيبه است و حروف ناخواناى آن با * نشان داده شده است. هر کلمه از کتیبه حداکثر ۱۵ حرف است.
يک عدد صحيح در آن بنويسيد که تعداد روشهايى است که مىتوان کلمهى ورودى را با توجه به شرايط مذکور ساخت. فرض کنيد که پاسخ همواره در عدد صحيح علامتدار ۶۴ بیتی جای میگیرد.
رشتهي و عدد و به شما داده شده است. از بین زیررشتههای به طول اولین زیررشتهای که حداقل بار آمده است را پیدا کنید.
رشتهي و عدد و
مکان اولین زیررشتهی خواسته شده را در خروجی چاپ کنید. درصورتی که چنین زیررشتهای وجود نداشت، NoSolution
چاپ کنید.(اندیس رشته از صفر شروع میشود)
ورودی نمونه
خروجی نمونه
خانم دکتر دنبالهای از اعداد طبیعی دارد. همانطور که میدانید دکترها برعکس مهندسها از صعودیبودن دنبالهها لذت میبرند ولی بلد نیستند دنبالههایشان را صعودی کنند. برای همین خانم دکتر از آقای مهندس خواستهاست تا دنبالهاش را برایش صعودی کند. (منظور از دنبالهی صعودی دنبالهای است که هیچ عضوی از آن از عضو قبلیاش کمتر نیست) آقای مهندس در هر حرکت میتواند یکی از ارقام یکی از اعداد دنباله را حذف کند. دقت کنید که وقتی تمامی ارقام یکی از اعداد دنباله را حذف کنیم مقدارش صفر خواهد شد.
او به عنوان یک مهندس مجبور است در کمترین تعداد حرکت دنباله را صعودی کند. این کمترین تعداد حرکت چقدر است؟ همچنین او میخواهد جمع اعداد دنبالهی نهایی که با کمترین تعداد حرکات به آن میرسد کمینه باشد. (در عین استفاده از کمترین تعداد حرکت) این مجموع کمینه را نیز پیدا کنید.
سطر اول ورودی شامل عدد طبیعی ، تعداد اعداد دنباله، است.
در سطر بعد عدد طبیعی آمدهاست که اعداد دنباله را نشان میدهند.
هیچ کدام از اعداد دنباله رقم ندارند.
در سطر اول خروجی کمترین تعداد حرکت برای صعودی کردن دنباله را چاپ کنید.
در سطر دوم عدد چاپ کنید که اعداد دنباله نهایی را نشان میدهند که هم باید صعودی باشند و هم مجموعشان کمینه شود. در صورت وجود چندین جواب هر کدام از آنها را میتوانید چاپ کنید.
ورودی نمونه ۱
خروجی نمونه ۱
ورودی نمونه ۲
خروجی نمونه ۲
۲۴امین دوره المپیاد کامپیوتر - آزمون هفتم - ۱۳۹۳/۰۶/۱۹
موضوع امنیت در اینترنت یکی از مهمترین موضوعهای مورد مطالعهی سالهای اخیر است. یکی از روشهای امنیت، رمزنگاری دادهها است. الگوریتم «پفکی» یکی از پرکاربردترین روشها برای رمزنگاری است. این الگوریتم برای رمزنگاری دادهها، از دو دنبالهی و استفاده میکند. میزان امنیت الگوریتم «پفکی» با استفاده از روش زیر قابل محاسبه است:
«جدولی با سطر و ستون در نظر بگیرید که در خانهی از آن نوشته شده است. در اینجا تابع بیت ام از عدد را برمیگرداند، برای مثال و و هستند. تمام جدولهایی که از جدول ساخته شده با جابهجایی ستونها میتوان ساخت را در نظر بگیرید(حداکثر جدول متفاوت) و به ازای هر کدام از این جدولها اندازهي بزرگترین زیر جدولی (بزرگترین از لحاظ تعداد خانههای تشکیل دهنده) که تمام خانههایش ۱ است را محاسبه کنید. بیشینه اعداد محاسبه شده برابر با میزان امنیت الگوریتم پفکی به ازای ورودیهای و است. دقت کنید که تنها جابهجایی ستونها مجاز است و جابهجایی سطرها مجاز نیست.»
شما باید برنامهای بنویسید که باتوجه به ورودیهای الگوریتم پفکی، میزان امنیت آن را مشخص کند.
علامت نشاندهنده عملگر است. عبارت نیز نشاندهنده باقی مانده عدد بر است.
در سطر اول ورودی به ترتیب دو عدد طبیعی و آمده است.
در سطر دوم عدد صحیح آمده است که عدد ام آن نشاندهندهي است.
در سطر سوم عدد صحیح آمده است که عدد ام آن نشاندهندهی است.
در تنها سطر خروجی میزان امنیت روش پفکی را به ازای دنبالههایی که در ورودی آمده است، چاپ کنید.
ورودی نمونه ۱
خروجی نمونه ۱
ورودی نمونه ۲
خروجی نمونه ۲
۲۵امین دوره المپیاد کامپیوتر - آزمون نهایی اول - ۱۳۹۴/۶/۱۸