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

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

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

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

114 - Telecasting station

سه شنبه, ۲ دی ۱۳۹۳، ۰۶:۱۸ ب.ظ

لینک سوال


مفهوم سوال

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

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

میزان نارضایتی مردم شهر i رو حاصلضرب جمعیت شهر در فاصله شهر تا مرکز تلویزیون تعریف می کنیم.

میزان نارضایتی کل، مجموع نارضایتی همه شهرهاست.

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

N < 15000


حل

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

فرض خلف: فرض کنیم نقطه ای بین 2 شهر وجود داشته باشه که مجموع نارضایتی ها تا اون نقطه از دو شهر همجوار کمتر باشه.

شهرهای اطراف رو x, y و نقطه میانی رو a بنامیم. همچنین فرض کنید x < a < y باشه.

مجموع حاصلضرب جمعیت در فاصله هر نقطه قبل از x تا x رو Sx بنامیم. همچنین مجموع حاصلضرب جمعیت در فاصله نقاط بعداز y تا y رو Sy بنامیم.

مجموع جمعیت نقاط کمتر و مساوی x رو Tx و مجموع جمعیت نقاط بزرگتر یا مساوی y رو Ty بنامیم.

میزان نارضایتی نقطه a میشه :

dis(a) = Sx + Sy + |xa| * Tx + |ya| * Ty

اگر Tx برابر با Ty باشه، میزان نارضایتی در نقطه x و a با هم برابره ؛ که این با فرض کمتر بودن نارضایتی در نقطه a در تناقضه.

پس باید Tx مخالف Ty باشه. بدون کاسته شدن از کلیت میشه فرض کرد که Tx < Ty باشه.

تو این حالت میشه دید که هرچه |ya| کمتر باشه میزان نارضایتی کمتر میشه، لذا تو نقطه y کمترین نارضایتی رو داریم. که با فرض کمترین بودن در نقطه a در تناقضه.

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

حالا کافیه برای هر شهر میزان نارضایتی رو پیدا کنیم.

برای این کار کافیه از چپ به راست نقاط رو بررسی کنیم.

میزان نارضایتی مردم زمانیکه مرکز در X1 قرار داشته باشه رو حساب می کنیم.

حالا اگه مرکز تلویزیون رو از Xi به Xi+1 منتقل کنیم، میزان نارضایتی میشه:

dis(Xi+1) = dis(Xi) - Total(Xi+1,N) * |Xi+1-Xi| + total(1,Xi) * |Xi+1-Xi|

منظور از (total(x,y یعنی، مجموع جمعیت از شهر x تا شهر y.

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


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

نظرات  (۲)

:| :| :|

تست سمپل رو دیدی و این ادعا رو کردی؟ یا بدون نگاه به تست سمپل اینو گفتی؟
پاسخ:
سلام
کلا این ایده خیلی قدیمی شده، راحت می تونی برای خودت اثباتش کنی.
یادم نمیاد که از روی سمپل ها حل کردن یا نه. در هرصورت فرقی نمی کنه، تو هر مسابقه ای سمپل هارو می تونی داشته باشی و از روشون مساله رو حل کنی.
من عذر می‌خوام :(

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی