Author |
Message |
30/03/2011 17:53:54
|
Done
Joined: 13/03/2011 21:56:26
Messages: 3
Offline
|
Е сега, малце не ја сватив убаво ама ако добро ја сватив, примерот што е даден во самата задача има грешно решение. Еве зошто:
Линк до задачата!
Пишува дека влезот е
100 5
3
А 1 10
B 2 5
C 3 1
Излез:
C 7
Е сега, Ako С е најдобра можност тогаш цената не би била 7 туку 5.
Бидејќи Трпе ќе им достави 99 (од можните 100 документи).
Ќе ја користи втората опција со преполовување. Следува.
(99+1)/2= 50 ... Цена=1
50/2=25 ... Цена=2
(25+1)/2=13 ... Цена = 3
(13+1)/2=7 ... Цена = 4
(7+1)/2=4 ... Цена = 5
И бидејќи им дал 99 документи, еден му останал и фирмата му вратила 4, тој имал 5 документи и платил 5 денари за услугата.
Не бев сигурен дали сум во право бидејќи не ја сватив баш најдобро задачата па затоа ви пишувам. Ако може одговор ве молам
Фала.
This message was edited 2 times. Last update was at 30/03/2011 17:54:33
|
|
|
30/03/2011 18:45:16
|
mile
Joined: 31/12/2009 17:32:27
Messages: 92
Offline
|
50 (100/2)+25(50/2)+13 ((25+1)/2)+6(12/2)+1.
Првите 4 пати се користи пакет услугата од по 1 пара, а на крај за еден документ (со кој се стигнува до точно 95) се користи едниченчата услуга од 3 пари. Вкупно 4*1+3=7.
Трпе мора да има точно 5 необработени документи.
|
|
|
30/03/2011 18:56:50
|
Done
Joined: 13/03/2011 21:56:26
Messages: 3
Offline
|
Како добиваш 6 четвртиот пат. Кога имаш (13+1)/2 а тоа е 7.
А мојот начин на решавање не е точен??
|
|
|
30/03/2011 19:31:37
|
Vikjan94
Joined: 22/02/2011 20:11:00
Messages: 27
Offline
|
Done wrote:Како добиваш 6 четвртиот пат. Кога имаш (13+1)/2 а тоа е 7.
А мојот начин на решавање не е точен??
(13+1)/2=7, но толку процесира. Значи, му остануваат уште 13-7=6 непроцесирани.
|
|
|
30/03/2011 19:56:16
|
MOI
Joined: 07/07/2010 16:31:48
Messages: 447
Offline
|
Done wrote:Како добиваш 6 четвртиот пат. Кога имаш (13+1)/2 а тоа е 7.
А мојот начин на решавање не е точен??
Да, но ако претходно имал 13, и агенцијата процесирала (13+1)/2 = 7, остануваат 13-7=6 документи.
Во секој случај - за тоа е одбран и ваков пример во текстот на задачата (а сега приметив дека имало и такво прашање и објаснување за време на натпреварот), за да се покаже дека Трпе секогаш на агенцијата и ги дава сите документи кои ги има во моментот - значи не може да и даде 99/100 документи за процесирање.
|
|
|
30/03/2011 20:10:07
|
Done
Joined: 13/03/2011 21:56:26
Messages: 3
Offline
|
MOI wrote:
Done wrote:Како добиваш 6 четвртиот пат. Кога имаш (13+1)/2 а тоа е 7.
А мојот начин на решавање не е точен??
Да, но ако претходно имал 13, и агенцијата процесирала (13+1)/2 = 7, остануваат 13-7=6 документи.
Во секој случај - за тоа е одбран и ваков пример во текстот на задачата (а сега приметив дека имало и такво прашање и објаснување за време на натпреварот), за да се покаже дека Трпе секогаш на агенцијата и ги дава сите документи кои ги има во моментот - значи не може да и даде 99/100 документи за процесирање.
Ок, фала многу.
Оваа реченица е тоа што ме збуни најмногу.
Значи, најчесто е прифатливо да се достават сите можни документи, и да се користи пакет услугата еднаш, па повторно на преостанатите документи, па повторно на преостанатите... се до даден момент. Нормално, не е секогаш така.
Заради таа реченица помислив дека може да не се достават сите документи
|
|
|
25/04/2012 20:29:43
|
Goran1
Joined: 22/09/2010 23:02:31
Messages: 18
Offline
|
Ако може некој да ми каже што да променам во кодот (Pascal). Локално ми работи, но кога ја праќам ми дава Runtime Error на сите тест примери
[code]
|
|
|
26/04/2012 00:11:27
|
bedzo
Joined: 18/01/2011 02:05:03
Messages: 234
Offline
|
Ова да не ти е вишок? 38ми ред.
readln;
|
|
|
26/04/2012 08:27:02
|
Goran1
Joined: 22/09/2010 23:02:31
Messages: 18
Offline
|
Не е, пробав и без тоа, пак не работи.
|
|
|
26/04/2012 14:19:08
|
MOI
Joined: 07/07/2010 16:31:48
Messages: 447
Offline
|
Goran1 wrote:Не е, пробав и без тоа, пак не работи.
Прилично сум сигурен, дека кога правиш
ReadLn(nekojString, nekojCelBroj);
програмата ја чита целата линија во nekojString (вклучувајќи ги тука празните места), и потоа нема што да смести во nekojCelBroj.
Еве ја поправената програма - одамна не сум работел со Паскал, па многу е веројатно да има полесен начин да се направи ова:
Променет е само начинот на читање на податоците. Ништо друго во програмата не ти менував. Вака ти поминува решението на сите 20 тест случаи.
|
|
|
26/04/2012 21:06:06
|
metotra
Joined: 04/03/2012 20:30:28
Messages: 8
Offline
|
да не отворам нова тема, тука ќе го поставам прашањето, ова подоле е кодот, и на 9 и 11 пример не ми поминува, ај ако некој ја најде грешката нека пише...
9 и 10 пример Runtime Error (излезен код различен од 0).
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
long long n,m,br,i,j,a,b,rez[101],neobraboteni,cena[101],prom,max=9999999;
string im[101];
cin>>n>>m>>br;
for (i=1;i<=br;i++)
{
rez[i]=0;
cin>>im[i]>>a>>b;
neobraboteni=n;
for(j=1;j<=9999;j++)
{
if (neobraboteni%2==1)
{
if ((neobraboteni+1)/2*a<b && (neobraboteni+1)/2>=m)
{
neobraboteni-=(neobraboteni+1)/2;
rez[i]+=(neobraboteni+1)/2*a;
}
else if ((neobraboteni+1)/2*a>=b && (neobraboteni+1)/2>=m)
{
neobraboteni-=(neobraboteni+1)/2;
rez[i]+=b;
}
else
{
rez[i]+=(neobraboteni-m)*a;
neobraboteni=m;
}
}
else
{
if ((neobraboteni)/2*a<b && (neobraboteni)/2>=m)
{
neobraboteni-=(neobraboteni)/2;
rez[i]+=(neobraboteni)/2*a;
}
else if ((neobraboteni)/2*a>=b && (neobraboteni)/2>=m)
{
neobraboteni-=(neobraboteni)/2;
rez[i]+=b;
}
else
{
rez[i]+=(neobraboteni-m)*a;
neobraboteni=m;
}
}
if (m==neobraboteni) break;
}
if (max>rez[i])
{
max=rez[i];
prom=i;
}
}
cout<<im[prom]<<" "<<max;
return 0;
}
This message was edited 1 time. Last update was at 26/04/2012 21:06:49
|
|
|
26/04/2012 21:06:55
|
tStojkovski
Joined: 13/02/2010 14:23:00
Messages: 108
Location: Гостивар
Offline
|
Стави во [code] тагови вака не се чита
|
|
|
26/04/2012 22:28:38
|
metotra
Joined: 04/03/2012 20:30:28
Messages: 8
Offline
|
This message was edited 4 times. Last update was at 26/04/2012 22:31:49
|
|
|
26/04/2012 22:42:31
|
Goran1
Joined: 22/09/2010 23:02:31
Messages: 18
Offline
|
Не ми е јасно зошто баш вака мора да се справам со тој дел. Се обидов влезот да ми биде
read(ime[i]);
readln(a[i],b[i]);[code]
но и така не работи. Ќе морам изгледа да ја користам функцијава. Некој што работи во Pascal ако има идеја како полесно да се справам со проблемов нека ми помогне. Инаку за ваков тип на проблем можно ли е да има толеранција на натпревар?
|
|
|
26/04/2012 22:47:13
|
Denis
Joined: 29/01/2010 18:55:07
Messages: 27
Offline
|
Probaj od stringot da go izdvois imeto, prviot broj i vtoriot broj. koga ke go najdes prvoto prazno mesto do tamu ti e imeto. i potoa od string prefrluvaj vo broj (za da go najdes prviot broj) istoto go iskoristi i za vtoriot broj
|
The function of good code is to make the complex appear to be simple. |
|
|
|