ای سی ام کار تازه وارد

در این وبلاگ مطالبی در مورد برخی الگوریتم ها و راهنمایی برای حل سوالات ارائه می گردد

ای سی ام کار تازه وارد

در این وبلاگ مطالبی در مورد برخی الگوریتم ها و راهنمایی برای حل سوالات ارائه می گردد

۲۸ مطلب با موضوع «راهنمایی برای حل سوالات» ثبت شده است

سوال A. Inna and Choose Options

سوال می گفت یه نفر میاد 12 تا کاراکتر از {X , O} انتخاب می کنه و می خواد این کاراکترهارو به ترتیب توی یه ماتریس به سایز a*b بچینه ؛ تمام سطر های ماتریس باید کامل باشند .

سوال تمام زوج مرتب هایی مثل (a,b) رو می خواد که اگر کاراکترهارو توی ماتریسی به اندازه a*b بچینیم ، یه ستون کاملا شامل X داشته باشه .


سوال B. Inna and New Matrix of Candies

سوال یه بازی رو معرفی می کنه .

این بازی روی یک صفحه مستطیل به ابعاد n و m انجام میشه .

روی هر سطر دقیقا یک کوتوله و یک آبنبات قرار گرفته .

تو هر دور از بازی یه تعداد ( شاید همه ) از سطر هارو انتخاب می کنیم .

تمام کوتوله های روی سطر های انتخاب شده شروع به حرکت به سمت راست می کنن .

تو هر لحظه یک خونه به سمت راست میرن .

اولین زمانیکه یکی از کوتوله ها به یه خونه شامل آبنبات برسه یا اینکه یکی به انتهای سطر خودش برسه ، همه حرکت خودشون رو متوقف می کنن و این دور از بازی تموم میشه .

سوال از ما می خواد کمترین تعداد دور های بازی رو بدست بیاریم یا اینکه بگیم این کار غیر ممکنه .

سوال به عنوان ورودی وضعیت صفحه بازی رو به ما میده . خونه های شامل کوتوله با حرف G و خونه های شامل آبنبات با حرف S و بقیه خونه ها با * مشخص میشن .

n,m < 1000


سوال C. Inna and Huge Candy Matrix

این سوال می گفت یه نفر یه ماتریس بزرگ داشته که روی p سلول از اون آبنبات داره .

یه نفر دیگه میاد این ماتریس رو x بار 90 درجه در جهت عقربه های ساعت دوران میده و بعد از اون y مرتبه اون رو نسبت به محور تقارن عمودی بازتاب می کنه و در آخر اون رو z مرتبه 90 درجه خلاف جهت عقربه های ساعت دوران میده .

ما محل قرارگیری قبل از دوران هارو داریم و محل جدید اونها رو می خوایم .

به عنوان ورودی سایز ماتریس رو داریم n , m < 10^9

همچنین مختصات اولیه p نقطه .


سوال D. Dima and Bacteria

سوال میگه  n تا باکتری داریم که از k نوع مختلف هستند . 

n < 10^5 , k < 500

باکتری هارو با شماره های 1 تا n شماره گذاری کردیم .

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

سوال میگه ما یه دستگاه خاص داریم که می تونه انرژی رو از یه باکتری به دیگری منتقل کنه .

در کل سوال به ما m نوع انتقال رو معرفی می کنه به این صورت که از باکتری با شماره u میشه انرژی رو به باکتری شماره v منتقل کرد با هزینه x .

یه توزیع از باکتری رو خوب میگیم اگر بشه انرژی رو بین باکتری های مشابه با هزینه صفر منتقل کرد .

به عنوان خروجی سوال از ما کمترین هزینه برای انتقال انرژی بین باکتری با انواع مختلف رو می خواد ، در صورتی که توزیع انرژی خوب باشه و در غیر این صورت No .


سوال E. Inna and Binary Logic

این سوال میگه از یه لیست شامل n عضو ، n لیست جدید می سازیم که عناطر لیست k ام معادل با انجام عمل AND روی k عضو متوالی از آرایه اولیه است .

یعنی :

A[k][i] = AND( a[i] , a[i+1] , ... , a[i+k-1] )

منظور از AND عمل منطقی ِAND است .

سوال حاصل جمع همه عناصر موجود در همه لیست هارو از ما می خواد .

ُسوال به ما m تا query میده که تو هر کدوم مقدار یکی از اعداد آرایه اصلی تغییر می کنه .

برای هر query باید حاصل جمع جدید رو محاسبه و چاپ کنیم .

n, m , a[i] < 10^5


حل سوالات

۰ نظر موافقین ۱ مخالفین ۰ ۲۰ اسفند ۹۲ ، ۰۱:۴۴
رضا حسینی آشتیانی

لینک سوال


مفهوم سوال

شهری داریم که از یه سری خیابان و یه سری تقاطع تشکیل شده .

تو هر تقاطع یه چراغ نصب شده که با زمان بندی مشخص آبی و قرمز میشه .

از یک خیابان میشه گذر کرد اگر و تنها اگر چراغ دوسر اون زمان شروع حرکت هم رنگ باشند .

سوال از ما می خواد کوتاه ترین مسیر از نقطه ای به نقطه دیگه رو بدست بیارم .

به عنوان ورودی به ما وضعیت اولیه چراغ ها ( رنگ فعلی ، زمان باقیمونده از دوره فعلی و دوره زمانی هر رنگ از این چراغ ) ، وضعیت خیابان ها ، نقطه شروع و انتهای مسیر رو میده .

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


حل

۱ نظر موافقین ۲ مخالفین ۰ ۱۸ اسفند ۹۲ ، ۲۰:۱۸
رضا حسینی آشتیانی

لینک سوال


مفهوم سوال

سوال یه سری دومینو به ما میده و می خواد همه ی اونها رو طوری پشت سر هم بچینیم که عدد های مجاور در دومینو ها برابر باشه .

دومینو یک قطعه مستطیل شکل با ابعاد 2*1 فرض شده که روش 2 عدد بین 0 تا 6 نوشته شده .

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

به عنوان خروجی ترتیب و جهت نهایی دومینو ها یا No Solution رو از ما می خواد .


حل :

۰ نظر موافقین ۱ مخالفین ۰ ۰۳ بهمن ۹۲ ، ۱۲:۵۵
رضا حسینی آشتیانی

سوال A. Amusing Joke

سوال میگه تو یه شهری زمان کریسمس ، هر دو نفر که همدیگه رو می بینن ، حروف اسمشون رو روی کارت می نویسن و اونها رو تو ورودی خونه آویزون می کنن .

زمانی که می خوابن ، یه نفر میاد و این حروف رو میاره پایین و جا به جا می کنه ( ممکنه یه کاراکتر حذف بشه و چیزه دیگه ای به جاش بیاد ) و دوباره اونها رو آویزون می کنه .

صبح که بیدار میشن می بینن که حروف به هم ریخته !

اون ها می خوان بدونن با حروفی که الان آویزون شده میشه اسمشون رو دوباره درست کنند یا نه ؟


سوال به عنوان ورودی 3 رشته به شما میده ، رشته اول اسم صاحب خونه ، رشته دوم اسم مهمان و رشته سوم ، حروفی هستند که صبح آویزون هستند .

طول رشته ها حداکثر 100 هستند .

به عنوان خروجی اگر میشه با حروف رشته سوم ، رشته اول و دوم رو ساخت ( با هم ) YES و در غیر این صورت NO رو چاپ کنید .


سوال B. Hopscotch

سوال میگه یه نفر خواب می بینه که داره "لی لی" بازی می کنه .

زمان بازی براش این سوال پیش میاد که اگر سنگ رو پرت کنه تو خونه (x , y ) ، شماره خونه ای که سنگ توش افتاده چنده ؟

همه مربع ها طول برابر a دارند .


اگر سنگ تو یه خونه افتاده بود ، شماره اون خونه چنده ؟

اگر سنگ رو مرز یه خونه باشه ، بیرون خونه فرض میشه .


سوال به عنوان ورودی اعداد صحیح x , y , a رو میده .

x| , y <= 1000000| و a < 100 خواهد بود .

به عنوان خروجی اگر سنگ تو یه خونه افتاده ، شماره اون خونه ، در غیر این صورت -1 رو چاپ کنید .


سوال C. Queue

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

کارمند بانک میره ناهار بخوره ، برای همین همه افراد از صف خارج میشن .

زمانی که دوباره کارمند شروع به کار می کنه ، افراد می خوان برگردند سر جای خودشون اما همه افراد یادشون رفته که کجا وایساده بودن . فقط مقدار Ai یادشون میاد .


سوال به عنوان ورودی اسم هر فرد و مقدار Ai رو برای اون فرد میده .

باید به هر نفر یه "قد" نسبت بدید که شرایط مساله حفظ بشه .

n < 3000 , Ai < n-1

به هر نفر باید قد Hi رو نسبت بدید .

Hi باید بین 1 تا 1,000,000,000 باشه .

Hi ها می تونن برابر باشن .


به عنوان خروجی n خط شامل اسم و قد اون فرد رو چاپ کنید .

اگر نمیشه این کار رو کرد ، -1 رو چاپ کنید .



سوال : D. Take-off Ramps

یه مسابقه اسکی برگزار شده که مسیر مسابقه یه خط مستقیم و موازی محور x هاست .

طول مسیر L متر و از 0 تا L تو جهت مثبت محور x خواهد بود .

یه نفر تو مسابقه شرکت کرده که می تونه هر متر رو تو 1 ثانیه طی کنه .

در طول مسیر n تا ramp وجود داره .

i امین ramp تو محل x قرار گرفته .

اگر از Pi متر قبل از i امید ramp دور خیز کنیم ، می تونیم به اندازه Di متر رو بپریم ، این پرش Ti ثانیه طول می کشه .

ramp ها فقط تو جهت مثبت محور x کارایی دارن ، یعنی از X-Pi باید شروع به دورخیز کنیم و از محل X تا X+Di رو بپریم .


سوال میگه کمترین زمانی که میشه کل مسیر رو پیمایش کرد .

در طول مسیر نمیشه به قبل از نقطه شروع رفت .

برای هر ramp می دونیم که X+Di از L بیشتر نخواهد شد .


به عنوان ورودی n , L و مشخصات ramp هارو بگیرید .

به عنوان خروجی کمترین زمان برای طی کردن مسیر و همچنین تعداد ramp هایی که استفاده کردید و شماره ramp هارو چاپ کنید .



سوال E. Clearing Up

سوال میگه 2 نفر میرن مسافرت نوروزی و وقتی بر می گردن به شهرشون ، می بینن که برف اومده و همه جاده ها بسته شده .

تو شهر n تا کلبه وجود داره ، این 2 نفر تصمیم می گیرن برف یه تعداد از این جاده هارو پاک کنن ، به طوری که از هر کلبه فقط بشه با یه مسیر ساده به هر کلبه دیگه ای رفت .

تو شهر 2 نوع جاده وجود داره ، باریک و پهن .

نفر اول فقط می تونه جاده های پهن رو تمیز کنه و نفر دوم جاده های باریک .

این دو نفر می خوان ببینن که میشه این کار رو کرد ، به طوری که تعداد جاده هایی که هر کسی تمیز می کنه ، برابر باشه .


به عنوان ورودی n و m تعداد کلبه ها و تعداد جاده ها رو میده .

تو m خط بعدی ، مشخصات هر جاده رو میده .

n < 1000 , m < 100,000


به عنوان خروجی اگه میشه این کار رو کرد تعداد جاده ها و همچنین شماره جاده ها رو چاپ کنید ، در غیر این صورت -1 رو چاپ کنید .


حل سوالات

۵ نظر موافقین ۰ مخالفین ۰ ۲۹ اسفند ۹۱ ، ۲۰:۱۷
رضا حسینی آشتیانی

سلام

بدون هیچ مقدمه ای میرم سراغ سوالات کانتست .

سوال اول :

سوال می گفت یه رشته عددی بین 3 تا 5 رقم بهتون میدم ، مقلوب ( reverse ) این رشته رو تو ورودی چاپ کنید .

ّبرای حل یه string در نظر گرفتم که با تابع reverse از کتابخونه algorithm از مجموعه STL های سی پلاس پلاس این رشته رو مقلوب کردم و ...


سوال دوم :

این سوال دو رشته به عنوان ورودی می داد که رشته اول "دوری" فرض شده بود ؛ یعنی اینکه بعد از کاراکتر آخر به کاراکتر اول میشه رفت و همین طور از اول به آخر .

سوال می پرسید که آیا رشته دوم یا reverse اون به صورت یه زیر رشته ( SubString ) از رشته اول هست یا نه ؟

برای این کار من رشته اول رو به آخر خودش اضافه می کردم ( با این کار دوری بودن رشته رو مهار می کردم ) ، بعد چک می کردم که رشته اول یا reverse اون تو این رشته هست یا نه .


سوال سوم :

سوال یه آرایه دو بعدی از اعداد می داد که برابر ارتفاع یه سری خونه بودن و سوال تعداد خونه های بد رو می خواست .

منظور از یه خونه بد اینه که نشه از اونجا دریا رو دید یا به عبارت دیگه در تمام جهات شمال ، جنوب ، شرق و غرب حداقل یه خونه وجود داشته باشه که ارتفاعش از این خونه بیشتر باشه .

برای حل من از هر خونه به چهار جهت اصلی حرکت می کردم و ارتفاع خونه های اون جهت رو مقایسه می کردم .

با توجه به اندازه داده های ورودی این روش مشکلی نداره ولی اگر اندازه جدول بزرگتر می بود این روش از نظر زمانی کارایی نداشت .


سوال چهارم :

این سوال دو مثلث می داد و مساحت ناحیه مشترک ( در صورت وجود ) رو می خواست .

به وضوح مجموعه رئوس ناحیه مشترک از یکی از دو مجموعه زیر باید باشن .

الف : راسی از مثلث اول که درون مثلث دوم قرار داره یا برعکس .

ب : نقطه تلاقی پاره خطی از مثلث اول با پاره خطی از مثلث دوم .


برای تشخیص مجموعه نقاط "الف" ، از ضرب خارجی استفاده می کردم .

برای تشخیص مجموعه نقاط "ب" ، برای هر مثلث سه پاره خط می ساختم و نقطه تقاطع ( در صورت وجود ) رو بدست می آوردم .


بعد از این کار convex-hull نقاط بدست اومده رو بدست می آوردم ولی بعد از حل اثبات کردم این کار لازم نیست .


در آخر مساحت چند ضلعی بدست اومده رو از طریق روش مثلث بندی بدست می آوردم .


کد هایی که سر کانتست ارسال کردم رو می تونید از اینجا دانلود کنید .

سوال اول

سوال دوم

سوال دوم - پایتون

سوال سوم

سوال چهارم


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


با آرزوی موفقیت همه در مرحله دوم مسابقه

۱۸ نظر موافقین ۷ مخالفین ۰ ۰۷ آبان ۹۱ ، ۲۱:۵۴
رضا حسینی آشتیانی

لینک سوال


مفهوم سوال :

سوال یه دنباله از اعداد به ما میده به عنوان A .

بعد حاصل جمع "دیجیتال روت"  مقادیر زیر رو می خواد :

A1

A1 * A2

A1 * A2 * A3

.

.

A1 * ... * An

منظور از دیجیتال روت : مقدار حاصل جمع تمام ارقام یه عدد هست ، اگه این مقدار بزرگتر از 10 باشه ، تا زمانی که حاصل از 10 کوچکتر نشده ، این کار باید انجام بشه ،

مثلا D( 123 ) = 6 یا D( 991 ) = 1 .


حل :

۰ نظر موافقین ۰ مخالفین ۰ ۰۵ تیر ۹۱ ، ۰۶:۲۷
رضا حسینی آشتیانی

لینک سوال


مفهوم سوال :

سوال مجموع N جمله اول دنباله فیبوناچی رو می خواد .

دنباله فیبوناچی :

F1  = F2 = 1

Fn+1 = Fn + Fn-1


حل :

۰ نظر موافقین ۰ مخالفین ۰ ۰۵ تیر ۹۱ ، ۰۶:۰۱
رضا حسینی آشتیانی
لینک سوال

مفهوم سوال :
سوال یه دنباله از اعداد رو به صورت زیر می سازه :
1
12
123
1234
.
.
123456789
12345678910
.
.
سوال میگه از بین N جمله اول این دنباله ، چند تا به 3 بخشپذیر هستند .


حل : 
۶ نظر موافقین ۱ مخالفین ۰ ۰۵ تیر ۹۱ ، ۰۵:۳۷
رضا حسینی آشتیانی

لینک سوال


مفهوم سوال :

این سوال به عنوان ورودی یه عدد طبیعی n < 10000 میده و از ما تعداد اعداد طبیعی کوچکتر یا مساوی n که نسبت به n اول هستن رو بدست بیاریم .

دو عدد رو نسبت به هم اول میگیم ، اگه ب.م.م اعداد 1 باشه .

حل: 

۰ نظر موافقین ۰ مخالفین ۰ ۰۵ تیر ۹۱ ، ۰۵:۰۹
رضا حسینی آشتیانی

لینک سوال


مفهوم سوال :

سوال دو عدد طبیعی رو به عنوان ورودی میده و از ما مجموعشون رو به عنوان خروجی می خواد .


حل: 

۰ نظر موافقین ۰ مخالفین ۰ ۰۵ تیر ۹۱ ، ۰۴:۵۷
رضا حسینی آشتیانی