Форум программистов, компьютерный форум CyberForum.ru

Интеречная задача о салоне красоты - C++

Восстановить пароль Регистрация
 
A1exSun
C#
51 / 51 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 14:46     Интеречная задача о салоне красоты #1
В салон красоты пришло n девушек. Каждая из них должна посетить парикмахера и косметолога. У каждого она проводит по m часов. За которое наименьшее время k сотрудников салона красоты смогут обслужить всех девушек, если каждый сотрудник может выполнять функции как косметолога, так и парикмахера?

Входные данные: три натуральных числа k, m, n (все числа не больше 10 000).
Исходные данные: одно число - минимальное время в часах, которое требуется для обслуживания всех девушек.

Примеры:
I: 1 1 1
O: 2
I: 2 2 1
O: 4

Простое решение не подходит:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
using namespace std;
 
int main(void)
{
    long k, m, n; // косметологов, часов у каждого, девушек
    cin>>k>>m>>n;
    cout<<2 * n / k * m;
    return 0;
}
Результат на втором примере неверен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
13.04.2013, 15:04     Интеречная задача о салоне красоты #2
все числа не больше 10 000
long k, m, n;
Глупая растрата данных. Используй тогда short или обычный.


Ты скобки в действии забыл расставить:
C++
1
cout<<2 * n / k * m;
C++
1
cout<<(2 * n) / (k * m);
A1exSun
C#
51 / 51 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 15:15  [ТС]     Интеречная задача о салоне красоты #3
Цитата Сообщение от Xipxop Посмотреть сообщение
Глупая растрата данных. Используй тогда short или обычный.
В данной задаче на 6 байт памяти как-то пофиг.
Цитата Сообщение от Xipxop Посмотреть сообщение
cout<<(2 * n) / (k * m);
I: 2 2 1
O: 0
Должно выйти 4.
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
13.04.2013, 15:20     Интеречная задача о салоне красоты #4
cout<<(2 * n) / (k * m);
I: 2 2 1
O: 0
Должно выйти 4.
Вы вообще правильно считаете?
k=2;m=2;n=1;
(2*1)/(2*2)=2/4=0.5 или 30 минут.
A1exSun
C#
51 / 51 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 15:50  [ТС]     Интеречная задача о салоне красоты #5
Цитата Сообщение от Xipxop Посмотреть сообщение
Вы вообще правильно считаете?
k=2;m=2;n=1;
(2*1)/(2*2)=2/4=0.5 или 30 минут.
Те примеры из условия, задача олимпиадная.
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
13.04.2013, 16:03     Интеречная задача о салоне красоты #6
Примеры:
I: 1 1 1
O: 2
I: 2 2 1
O: 4
Результат на втором примере неверен.

I: 2 2 1
O: 0
Должно выйти 4.
Определитесь, что вы считаете правильным ответом, а что нет, с олимпиадными задачами незнаком, да и с логикой математики, (хоть и сам математик) иногда не понимаю.
A1exSun
C#
51 / 51 / 1
Регистрация: 09.03.2013
Сообщений: 214
13.04.2013, 16:05  [ТС]     Интеречная задача о салоне красоты #7
Цитата Сообщение от Xipxop Посмотреть сообщение
Определитесь, что вы считаете правильным ответом, а что нет, с олимпиадными задачами незнаком, да и с логикой математики, (хоть и сам математик) иногда не понимаю.
Мне нужно чтобы результаты совпадали с примерами в первом сообщении, как они считались я не знаю.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.04.2013, 03:31     Интеречная задача о салоне красоты #8
A1exSun, пробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
using namespace std;
 
int main(void)
{
    long k, m, n, res; // косметологов, часов у каждого, девушек
    cin>>k>>m>>n;
    res=n/k*2*m;
    if(n%k) res+=2*m;
    cout<<res;
    return 0;
}
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
14.04.2013, 04:08     Интеречная задача о салоне красоты #9
я думаю надо радикально решать

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
using namespace std;
 
int main(void)
{
    long k, m, n, res;
    cin>>k>>m>>n;
    cout<<m*(2*(n/k)+(n%k!=0)+((n%k>k/2.0)||(n<k)));
    return 0;
}
Добавлено через 17 минут
valeriikozlov,

C++
1
2
    res=n/k*2*m;
    if(n%k) res+=2*m;
это точно не верно

на числах 2 2 3 выдаёт 8, такого быть не может
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
14.04.2013, 04:23     Интеречная задача о салоне красоты #10
Цитата Сообщение от valeriikozlov Посмотреть сообщение
вход: 3 2 7

abit, Ваш код выдает 10, а должно быть 12
нет, 10... там просят МИНИМАЛЬНОЕ число часов

Добавлено через 14 минут
вот я нарисовал - при 7 девушках, 3 косметологах и по 2 часа на операцию...

[img]http://s52.***********/i137/1304/02/1521b4fa72cat.jpg[/img]

за 10 часов все обслуживаются и даже один косметолог отдыхает последние два часа...

а по вашему способу все 3 должны пахать 12 часов?
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,665
14.04.2013, 07:08     Интеречная задача о салоне красоты #11
C++
1
Tmin = ceil(n/k) * 2 * m;
Цитата Сообщение от abit Посмотреть сообщение
нет, 10... там просят МИНИМАЛЬНОЕ число часов
вот я нарисовал - при 7 девушках, 3 косметологах и по 2 часа на операцию...
Вы не учитываете, что одной девушке невозможно одновременно оказывать услуги и парикмахера, и косметолога. Т.е. на самом деле обслуживать надо не 2n раз по m часов, а n раз по 2m часов.
A1exSun
C#
51 / 51 / 1
Регистрация: 09.03.2013
Сообщений: 214
14.04.2013, 12:57  [ТС]     Интеречная задача о салоне красоты #12
Всем спасибо. К сожалению, лавочка уже закрыта и проверять теперь негде
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
14.04.2013, 14:16     Интеречная задача о салоне красоты #13
Вы не учитываете, что одной девушке невозможно одновременно оказывать услуги и парикмахера, и косметолога. Т.е. на самом деле обслуживать надо не 2n раз по m часов, а n раз по 2m часов.
что за ерунда? где вы увидели в моём алгоритме, чтобы оказывалось одной девушке обе услуги одновременно?
Вы вообще читали мой алгоритм или слово просто вставить нужно
это как раз у меня учтено, посмотрите внимательно рисунок, там верхняя часть кружка - прарикмахер, нижняя - косметолог, никакой не оказывается две услуги вместе одновременно


а это
C++
1
ceil(n/k) * 2 * m;
тоже не верно
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,665
14.04.2013, 14:32     Интеречная задача о салоне красоты #14
Цитата Сообщение от abit Посмотреть сообщение
а это
ceil(n/k) * 2 * m;
тоже не верно
Чем докажете?
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
14.04.2013, 14:57     Интеречная задача о салоне красоты #15
Цитата Сообщение от Mr.X Посмотреть сообщение
Чем докажете?
а чего там доказывать?
скажите что она возвращает на 2 2 1, у меня под рукой нет компилятора, поэтому написал тут - http://codepad.org/J1QpIEvj

и что она мне вернула? 0... хм... за 0 часов... какая неожиданность...
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,665
14.04.2013, 15:13     Интеречная задача о салоне красоты #16
Цитата Сообщение от abit Посмотреть сообщение
и что она мне вернула? 0... хм... за 0 часов... какая неожиданность...
n должно быть double.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
14.04.2013, 15:26     Интеречная задача о салоне красоты #17
Цитата Сообщение от Mr.X Посмотреть сообщение
n должно быть double.
да ради бога, хоть все числа сделаем double - http://codepad.org/lhPCYrPY

на примере 3 2 7, который я нарисовал - возвращает 12, я нарисовал как это сделать за 10

хорошо, возьмём пример попроще 2 1 3
2 косметолога, 3 девушки по часу на каждую... что у вас возвращается - http://codepad.org/223IQAaa
возвращается 4... это ложь и провокация, достаточно трёх часов, смотрите

сначала стрегут первых двоих (час 1), потом одну из них отправляют гулять, а второй делают косметику и стрегут третью (час 2), потом первой и третьей делают косметику (3 час)

всё... все трое подстрижены и с косметикой, откуда у вас ещё один час взялся?
Yandex
Объявления
14.04.2013, 15:26     Интеречная задача о салоне красоты
Ответ Создать тему
Опции темы

Текущее время: 16:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru