ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1726. Кто ходит в гости…

melkiy please give an idea [11] // Задача 1726. Кто ходит в гости… 18 окт 2009 01:38

I use the fomula to find average of n values X[i], i=1...n  if I know the average of (n-1) values X[i], i=1...(n-1):

AVE(X, n) = ((n-1)AVE(X, n-1) + X[n]) / n

This doesn't help.
svr Re: please give an idea [10] // Задача 1726. Кто ходит в гости… 18 окт 2009 11:00
1.sort(X[]).
2.add (X[i+1]-X[i])*i*(n-i).
melkiy Re: please give an idea // Задача 1726. Кто ходит в гости… 18 окт 2009 20:05
Brilliant idea. I've got it.
Thanks.
lerh Re: please give an idea [1] // Задача 1726. Кто ходит в гости… 4 апр 2011 03:26
i've got smth similar but i don't understand how to sort it... pls help
catalin_oancea Re: please give an idea // Задача 1726. Кто ходит в гости… 6 апр 2011 22:38
I don't have any ideea... how did you solve this problem? I've got TLE ... I use brute force.. LOL
Master Joda Re: please give an idea [6] // Задача 1726. Кто ходит в гости… 7 апр 2011 01:24
Doesn't work with 4 10 10 10 20 20 10 20 20!

1.sort(X[]).
2.add (X[i+1]-X[i])*i*(n-i).

Edited by author 07.04.2011 01:25
lerh Re: please give an idea // Задача 1726. Кто ходит в гости… 7 апр 2011 05:44
how do you sort it, what is min and what is max after sort... i've got WA for 3 20 20 30 30 50 10
svr Re: please give an idea [4] // Задача 1726. Кто ходит в гости… 7 апр 2011 07:41
must work!
segment[X[i],X[i+1]] is passed by all pairs from [1..i]*[i+1,..n] or i*(n-i) times
where i in[1..n-1]
lerh Re: please give an idea [3] // Задача 1726. Кто ходит в гости… 8 апр 2011 02:03
i still don't get it... pls send me your source at lerh_91@live.com
panhantao Re: please give an idea [2] // Задача 1726. Кто ходит в гости… 26 сен 2012 22:00
Because for a given point i we can only go to another point vertically or horizontally and that's a great hint.

Consider an input file that contains 7 points (index from 1 to n), and now we have sorted them by x[] in ascending order.

Now let's consider the segment between point 5 and point 6, denoted by S(S=x[6]-x[5], remember that we have sorted the points by x[]). Now if we want to go from point 2 to point 6, we must pass through S, and likewise, if we want to go from point 1,2,3,4,5 to point 6,7, we have to pass through S. Inversely, from point 6,7 to point 1,2,3,4,5, we must pass through S. Actually, for a given segment x[i+1]-x[i], we have to pass through this segment i*(n-i)*2 times, for there are i points before and including the ith point and (n-i) points after the ith point, and we have to go from left to right and from right to left. This analysis is also true for the y coordinate.

By this method we can get the total distance from every point to every other point.

Finally just divide the total distance by (n*(n-1)) to get the average distance because there are n points and each point has (n-1) road to the other points.

In conclusion, the solution would be :
for(i = 1 to n-1)
{
    ans += (x[i+1]-x[i]) * i * (n-i) * 2;
    ans += (y[i+1]-y[i]) * i * (n-i) * 2;
    // or ans += (x[i+1]-x[i] + y[i+1]-y[i]) * i * (n-1) * 2;
}
ans /= ( n*(n-1) )

Be careful about the data type of ans, int is not enough, use long long
Snayde Re: please give an idea // Задача 1726. Кто ходит в гости… 26 апр 2013 19:37
thank
Kirill Chernega [ONPU] Re: please give an idea // Задача 1726. Кто ходит в гости… 20 янв 2016 01:45
really good explanation