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

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

آمار پرسش:

  • پرسیده شده: 2015-01-02 23:05:01 -0500
  • مشاهده شده: 539 بار
  • بروز شده: 2015-01-04 02:30:18 -0500

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

یه سوال خوب دیگر ...............

وبسایت مسابقه‌های برنامه نویسی

یافتن کوتاه ترین دور در گراف ساده

راهنمایی برای برنامه نویسی

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

مجموع ارقام ! 100

مرجع فارسی برای الگوریتم های هندسی و 2sat

نظریه اعداد لازم برای المپیاد کامپیوتری ها

برای مرحله سوم، تا چه سطحی باید برنامه نویسی بلد باشیم؟

اولین جمله از دنباله ی فیبوناچی که 1000رقم داشته باشد چیست؟

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

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

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

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

علائم ریاضی:

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

بـــــیـــــــشـــــتــــــرین ارزش

8

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

می خواهیم بیشترین ارزش یه معدن p . q را پیدا کنیم.

ورودی

اول p q رو میده (حداکثر 10000) (p طول ضلعی که موازی x هاست و q موازی y ها ; قابل چرخش نیست)

بعدش یه n میده (حداکثر 15000)

بعد x , y خانه های الماس دار رو میده (بین 30000- و 30000)

خروجی یه عدد که بیشترین ارزش معدن باشه

Timelimit : 0,40 s

و چیزی که سختش می کنه :)

Memory limit : 32 MB

وقتی حل شد برچسب ایده هاش رو اضافه می کنم

سوال خوبیه ارزش فکر کردن داره :)

مثال

2 3

12

0 0

1 1

2 2

3 3

4 5

5 5

4 2

1 4

0 5

5 0

2 3

3 2

خروجی : 4

برنامه-نویسی segment-tree swipe-line
2015-01-02 23:05:01 -0500
طوفان 1480 ● 11 ● 21 ● 43
پاک‌کردن   ویرایش سوال
نظرات

سوال خوبیه 1+

2015-01-02 23:13:22 -0500 تاکسیران

اگه استقبال شه بازم این مدلی سوال میزارم !!!

2015-01-02 23:13:47 -0500 طوفان

+۱! ان دو بزنیم تایم لیمیت میشه؟

2015-01-03 01:46:30 -0500 محمد مهدی

آره دیگه 1e8 یک ثانیه است

2015-01-03 02:02:28 -0500 طوفان

یه راه حل دارم nlgn با سگمنت تری + sweep line ... راه آسون تر داره؟

2015-01-03 03:38:39 -0500 محمد مهدی

2 پاسخ

9

سوال خوبی بود فقط جاج نداشتم .

برام تستر بنویسی ممنون میشم.

کدش

یکمم توضیح برای افزایش رضایت مندی :)

اول برحسب x ها sort کردمو که بتونم swipe line بزنم بعدش توی سگمنت یه خونه دارم که ارزش مزرعه ای که این گوشه چپ پایینشه .

بعد swipe line رو اینطور می زنم که الان از بازه ی k تا k +p دارم یعنی بعدش می شه k+1 و k+p+1 بعد تمامم الماس هارو روبازه ای که شامل این خونه میشوند(این تو معدشون قرار داره ) اضافه می کنند:

بعدش توی segment tree ماکسیمم رو هم دارم و بعد از این که swipe line ام یه دونه رفت جلو با ماکسمم جواب ماکسیمم می گیرم دقت کنید که اگه lazy نمیزدم تایم میشدم

در ضمن به ازای هر الماس(با ارزش +1) q تا جلوتر یه خونه با ارزش -1 گذاشتم که وقتی که الماسه رفت بیرون منفی اش میاد تو :|

بهتون پیشنهاد می کنم که حتما یه بار خودتون بزنید هم segment tree Lazy داره هم swipe line.

2015-01-03 04:45:57 -0500
تاکسیران 973 ● 6 ● 12 ● 28
پاک‌کردن   ویرایش پاسخ
نظرات

+1

2015-01-03 09:44:50 -0500 پوبا

okey

Time 0.1s

آفرین+1

2015-01-03 10:36:35 -0500 طوفان

دقیقا مزرعه از کجا اومد؟

2015-01-03 14:41:58 -0500 روبیک
5

واقعن سوال خوبی بود. کد من رو هم تست کنی ممنون میشم!
راه حل همون راه تاکسیران هست ... فقط $nlgn$ هست و $lazy$ نداره.

برای اینکه راه بشه $nlgn$ و مستقل از مختصات ها بشه, اینکارو میکنیم : قبول دارین کلن $n$ تا $x$ داریم که تو کل برنامه ازشون استفاده میکنیم؟ (و همچنین $n$ تا $y$) $x$ ها رو میشه همون کاری که تاکسیران کرد (نقاط رو بر حسب $x$ سورت کنیم و بر حسب اون دونه دونه اضافه و حذف کنیم) $O(N)$ کرد. برای $y$ ها هم میتونیم همه ی این $y$ های بدرد بخور رو تو یه آرایه بریزیم و سورت کنیم و یونیک کنیم (عناصر تکراری رو حذف کنیم). برای کار با این خونه ها, هر وقت خونه ای با مختصات $y$ رو کار داشتیم کافیه رو اون آرایه هه باینری سرچ بزنیم تا پیداش کنیم!

ما برای انجام دادن این دو تا کار از سگمنت تری استفاده میکنیم : ۱. به تمامی اعضای بازه ی $[l, r)$ , مقدار $val$ رو اضافه کن. و ۲. بزرگترین عضو آرایه ؟
برای هر راس سگمنت تری, دو تا عدد نگه میداریم : مجموع $val$ هایی که به کل بازه اش اضافه کردیم و بزرگترین عضو در بین زیر درختش بجز خودش. بزرگی این راس هم میشه مجموع این دو تا عدداش. برای کار نوع ۱ کافیه عدد اولی بازه های لازم رو بروز کنیم و عدد دوم اجدادشون رو بروز کنیم و برای کار نوع ۲ هم بزرگی ریشه ی درخت رو خروجی بدیم! $^_^$

پی نوشت: دوستانی که با سگمنت تری و یا سویپلاین آشنایی کامل ندارن این ها منابع خوبی هستن :
سگمنت تری - کاهو
سویپ لاین - تاپکدر

2015-01-04 02:13:49 -0500
محمد مهدی 1955 ● 5 ● 12 ● 40
پاک‌کردن   ویرایش پاسخ
نظرات

!احسنت!

2015-01-04 03:08:31 -0500 چشمک

accept shodi

khob medal dari dg :D vaqti migi soal khoobie hatman khoobe :) afarin

time:0.1s

2015-01-04 03:28:56 -0500 طوفان

لذت بردیم 1+

2015-01-04 03:37:57 -0500 تاکسیران

پاسخ شما

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

پیش‌نمایش:

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