اولین باره که به کاهو میای؟ راهنمای سایت رو حتما بخون!

ورود ثبت‌نام راهنما درباره‌ی کاهو
پرسش‌ها برچسب‌ها کاربر‌ها سوال بپرسید!

آمار پرسش:

  • پرسیده شده: 2019-03-20 13:49:34 -0500
  • مشاهده شده: 382 بار
  • بروز شده: 2019-03-30 11:55:37 -0500

پرسش‌های مشابه:

سوال ۱ روز دوم مرحله ۲ دوره ۲۳: رشته‌ی نزدیک

بازی رنگی - سوال ۱ - مرحله ۲ - ۱۳۹۳

وزنه‌ها و ماشین جادویی - سوال ۲ - مرحله ۲ - ۱۳۹۳

گاوی خسیس - سوال ۳ - مرحله ۲ - ۱۳۹۳

انتقال مهره‌های گاوی - سوال ۴ - مرحله ۲ - ۱۳۹۳

یافتن کوچکترین پیچ و مهره با مقایسه آنها

دنباله و جادوگر - دوره ی 24 - مرحله ی 2

دوربین های عکاسی

مسئله ی مسیر و شبکه - مرحله ی 2 – دوره ی 23

بازی خاموش کردن چراغ ها

نکاتی در مورد نوشتن پاسخ:

در این قسمت می‌تونی به یک پرسش پاسخ بدی. اگه می‌خوای در مورد پرسش بحث و اظهار نظر کنی از قسمت «ثبت نظر» استفاده کن.
پاسخت رو دقیق و کامل بنویس، از عکس استفاده کن و اگه لازمه به منابع (کتاب یا سایت) ارجاع بده.
اگه پرسش یا پاسخ‌ها مفید هستند حتما بهشون رای بده تا پرسش‌ها و پاسخ‌های خوب مشخص بشن.

استفاده از ویرایشگر:

توی قسمت پیش‌نمایش می‌تونی ببینی متنی که نوشتی چجوری روی سایت دیده میشه.
خیلی مهم: برای اینکه به خط بعد بری باید دوتا Enter بزنی.
می‌تونی از تگ‌های معمولی و ساده‌ی html هم استفاده کنی.
با دکمه‌هایی که بالای ویرایش‌گر قرار دارند کلی کار می‌شه کرد. از عکس‌گذاشتن بگیر تا لیست شماره‌دار. حتما امتحان‌شون کن.

علائم ریاضی:

برای نوشتن علائم ریاضی می‌تونی از Mathjax استفاده کنی. راهنمای Mathjax رو از سایت math.stackexchange بخون.
برای نوشتن عبارت ریاضی وسط جمله، اون عبارت رو بین دوتا $ قرار بده.
برای نوشتن عبارت ریاضی تو یه خط جدید اون رو بین دوتا $$ قرار بده.

دوره 4 - مرحله دوم - روز دوم - سوال 7

2

دستگاهی مانند شکل زیر را در نظر بگیرید:

image description

در هر یک از ورودی‌های ۱، ۲ و ۳ می‌توانیم یک گلوله بیندازیم. این گلوله به‌سوی پایین حرکت می‌کند و با توجه به وضعیت کلیدهای $x$، $y$ و $z$ از یکی از خروجی‌های $A$، $B$ یا $C$ خارج می‌شود. کلیدهای $x$ ، $y$ و $z$ به این صورت عمل می‌کنند: هر کلید می‌تواند در یکی از دو وضعیت $\searrow$ یا $\swarrow$ باشد. اگر کلید در وضعیت $\searrow$ باشد، گلوله را به سمت راست و اگر در وضعیت $\swarrow$ باشد، گلوله را به سمت چپ می‌فرستد. علاوه بر این با عبور هر گلوله از یک کلید، وضعیت آن کلید تغییر می‌کند.

در ابتدای شروع کار دستگاه، هر سه کلید در وضعیت هستند. یک دنباله مانند $a_1 a_2…a_n$({$1,2,3$}$a_i∈$ به ازای هر $i$) به‌عنوان دنباله‌ی ورودی دستگاه داده می‌شود. پس از این ابتدا یک گلوله از ورودی شماره‌ی $a_1$ ، سپس یک گلوله از ورودی شماره‌ی $a_2$ … و در انتها یک گلوله از ورودی شماره‌ی $a_n$ به درون دستگاه می‌اندازیم. فرض می‌کنیم که گلوله‌ها به ترتیب از خروجی‌های $٬b_2٬b_1$، … و$b_n$ خارج شوند ( {$A,B,C$}$b_i∈$ به ازای هر $i$) دنباله‌ی $b_1 b_2…b_n$ را دنباله‌ی خروجی دستگاه برای ورودی $a_1 a_2…a_n$ می‌نامیم.

به عنوان مثال دنباله‌ی خروجی دستگاه برای ورودی ۱۲۳۲۱، دنباله‌ی ABBCA است.

الف) الگوریتمی بنویسید که با دریافت یک دنباله‌ی ورودی، دنباله‌ی خروجی آن را پیدا کند.

ب) الگوریتمی بنویسید که با دریافت یک دنباله‌ی $s_1 s_2…s_n$ ({$A,B,C$}$s_i∈$ به ازای هر $i$) مشخص کند که آیا این دنباله می‌تواند خروجی دستگاه باشد یا خیر؟ الگوریتم شما باید سریع باشد، یعنی امتحان کردن تمام حالت‌ها مورد نظر نیست.

مرحله۲ ۱۳۷۳
2019-03-20 13:49:34 -0500
غزوو 1304 ● 7 ● 14 ● 24
پاک‌کردن   ویرایش سوال

1 پاسخ

2

الف :

به ازای انداختن هر گلوله با توجه به مسیرفلش ها خروجی آن را مشخص میکنیم و تغییرات ایجاد شده در جهت فلش ها را اعمال میکنیم.

ب :

حالات مسئله را به یک گرافی با 8 راس متناظر میکنیم که در آن راس $i$ به راس $j$ یال دارد اگر و تنها اگر از حالت $i$ بتوان به حالت $j$ رسید. از طرفی روی یال بین $i$ و $j$ یک جرف از حروف $A$، $B$ یا $C$ را مینویسیم که نشان دهنده ی این است که اگر بخواهیم به این حالت برسیم باید در ورودی ای گلوله بندازیم بطوری که گلوله از این ورودی وارد خروجی ای شود که برابر با حرف روی یال است. (ممکن است بین دو راس بیش از یک یال باشد)

فرض کنید $dp_{i,j}$ زمانی یک است که بتوان $i$ حرف اول رشته را بگونه ای ساخت که حالت نهایی مانند حالت متانظر با راس $j$ ام باشد. در غیر این صورت $dp_{i,j}$ برابر صفر است. اگر راس متانظر با راس اولیه راس یکم باشد در ابتدای کار تنها $dp_{0,1}$ برابر 1 وبقیه ی $dp$ ها برابر صفرند.

حال از عضو اول رشته شروع میکنیم و در مرحله $i$ ام $dp_{i,r}$ را مساوی یک قرار میدهیم، اگر و تنها اگر راس $r$ همسایه ای مانند $j$ داشته باشد که:

  1. ( $dp_{i-1,j}=1$)

  2. روی یال بین راس $r$ و $j$ حرف $s_i$ نوشته شده باشد.

از آنجا که 8 راس داریم و به هر راس سه یال متصل است (به ازای انداختن گلوله در هر یک از سه ورودی هر کدام یک یال) پس در حداکثر $n \times 8 \times 3 = 24 \times n$ به جواب میرسیم (اگر $i$ ای وجود داشت $(1 \le i \le 8)$ که $dp_{n,i}=1$ یعنی دنباله می تواند خروجی دستگاه باشد، و در غیر این صورت یعنی نمیتواند)

2019-03-24 13:39:54 -0500
غزوو 1304 ● 7 ● 14 ● 24
پاک‌کردن   ویرایش پاسخ
نظرات

سوال جالبی بود

2019-04-17 05:01:01 -0500 نسبت طلایی

پاسخ شما

فقط در صورتی که پاسخی برای این پرسش دارید، آن را اینجا بنویسید و برای بحث کردن از قسمت «ثبت‌ نظر» استفاده کنید. شما می‌توانید قبل از وارد شدن به سایت پاسخ خود را بنویسید. این پاسخ ذخیره می‌شود و زمانی که شما وارد سایت شدید یا ثبت‌نام کردید منتشر می‌شود.

پیش‌نمایش:

کلیه‌ی حقوق این سایت متعلق به کمیته‌ی ملی المپیاد کامپیوتر است.