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

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

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

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

۴۳ مطلب توسط «رضا حسینی آشتیانی» ثبت شده است

سوال 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 رو چاپ کنید .


حل سوالات

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

سلام
امسال مسئولیت طرح سوال برای مسابقه داخلی دانشگاه شاهد تهران برای مسابقه منطقه ای به عهده تیم ما بود .
به نظرم بد نرسید تا سوالات و داده های ورودی و خروجی رو در اختیار همه بزارم تا اگر کسی خواست بتونه سوالات رو حل کنه .( البته سطح سوالات بالا نیست )




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

ُسلام

خلاصه ای نحوه استفاده از کتابخانه های queue و stack .


به روز رسانی : مطلب مربوط به queue یه مشکل کوچیک تو قسمت back داشت که درست شد .


Queue

Stack


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

سلام

مطلب مورد نظر رو می تونید از اینجا دانلود کنید .


پانوشت:

1. یه مشکل کوچیک زمان تبدیل به pdf بوجو آمده بود ، فایل جدید دوباره آپلود شد .

2. تعاریف مربوط به تابع erase ، ایراد داشت ، فایل جدید دوباره آپلود شد .


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

سلام

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

سوال اول :

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

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


سوال دوم :

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

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

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


سوال سوم :

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

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

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

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


سوال چهارم :

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

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

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

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


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

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


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


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


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

سوال اول

سوال دوم

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

سوال سوم

سوال چهارم


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


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

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

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

از ادامه مطلب می تونید دانلود کنید .

۳ نظر موافقین ۱ مخالفین ۰ ۰۴ شهریور ۹۱ ، ۰۴:۳۱
رضا حسینی آشتیانی
سلام
با توجه به نیازی که حس می شد ، قراره یه سری مطلب در مورد هندسه از مقدمات تا عالی ترین سطح اینجا قرار بدیم .
اولین قسمت در ادامه مطلب موجوده و می تونید دانلود کنید .

فایل یه کم مشکل داره ، دارم درستش می کنم .
تو اولین فرصت upload می کنمش .

منتظر نظرات شما برای ادامه کار هستم .

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

لینک سوال


مفهوم سوال :

سوال یه دنباله از اعداد به ما میده به عنوان 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 بخشپذیر هستند .


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