خب سوالات ایناس :
1- تخمین رتبه
2- ربات
3- رنگ آمیزی
خب شروع میکنیم به حل کردن سوالات
1- خب این سوال به این صورته که تناوب نمراتش ماکسیمم 2kتاییه و بعد از 2k بار باز به تکرار میرسه برای همین شما باید اون تناوب رو به دست بیارید (با استفاده از segment) و بعدش تعداد اونایی که ازش جلوتر رفتید تا پیدا کنید تناوب رو و بعدش سایز تناوب رو از n کم کنید و بعدش مد سایز تناوبتون بگیرید و عددش رو خروجی بدید
اثبات اینکه چرا اعداد تبدیل به تناوب میشه هم سادس دیگه به خودتون واگذار میشه :دی
کدش هم در این لینکه : دریافت
2- خب این سوال یه سوال یکم جذابیه اولش اگه یه ذره به گرافش فک کنید میبینید که مسئله داره خوب پیش میره یعنی هر خونه جدول رو یه راس گراف کنید و با وزن هایی که داده به 4 خونه دورش(در صورت وجود) یال بکشید و بعدش دایسترا بزنید از خونه بالای جدول و فاصله رو به دست بیارید ولی اینکار رو که بکنید میبینید که تو اکثر تست ها راهتون جواب نمیده :دی
علت چیه ؟ این که اگه به یه جایی برسه که چندین جهت یه وزن داشته باشن از یکی دلخواه عبور میکنه و اینجوری ممکنه هزینه مینیمال رو نده پس باید چیکار کرد ؟ شما یال هر راس رو باید بزارید (سایز یال - مینیمم یال بین 4 یال اون راس) که در این صورت کمینه هزینه برای خروج از این خونه رو داشته باشید و بعدش باجواب مینیمم یال هر راس رو جمع بزنید و اونو با جواب فاصله راس راست بالا به راس چپ پایین جمع بزنید و خروجی بدید. اینم کدش : دریافت
3-این سوال هم یه سوال data structure دیگست بازم با استفاده از segment خیلی آسون سوال پودر میشه اگه persistant segment بلدید که سوال بدیهتا خود همینه اگر هم که بلد نیستید به راه سوال در ادامه توجه کنید.
اولش باید یه سگمنتی بگیرید که هر راسش خودش یه set باشه بعدش به ازای هر تایمی که داد و رنگش اونو توی به صورت یه pair توی اون logتا ست مربوط به اون بازه insert کنید. وقتی هم که کوئری یه خونه میاد وقتی دارید داخل سگمنت تری به پایین میرید توی هر راس با استفاده از lower_bound و دستورات دیگه set چک میکنید میبینید تو اون تایمی که کوئری ازتون خواسته کدوم بهش نزدیکتره و به این ترتیب اینم تمومه کارش اینم کدش : دریافت