Author |
Message |
|
longhi wrote:
ThePopivanov wrote:Вчера на натпреварот кога ја решавав оваа падна на скоро сите тест примери освен на 3.
Денеска изменив нешто ситно сега на 23 поминува а само на 7 паѓа.
Ова е greedy решение и е доста логично, па ќе добие дел од поените (инаку, како што излезе, сите ќе имаа 0 на таа задача).
Но, оваа задача е најдобро да се решава со помош на динамичко програмирање.
Идејата е доста едноставна, ќе користиме матрица dp[c][n] која ќе ни памети во колку најмногу градови може да се направи митинг ако веќе сме разгледале [c] градови и имаме уште [n] средства на располагање.
Сега, ќе ги поминуваме градовите еден по еден и ќе ја пополнуваме матрицава (како и други слични задачи кои се решаваат на ваков начин) и истата ќе содржи некаков резултат.
Но, по кој редослед да ги поминуваме градовите? Од кога ќе ни текне дека единствениот начин да добиеме пари е од организацијата на митинг (инаку само трошиме), тогаш може да забележиме дека е најдобро да ги сортираме во опаѓачки редослед според R[x]. За се друго ќе се погрижи динамичкото програмирање. И тоа е решението.
(Постојат и други решенија за добивање на делумни поени, dfs, битмаски, итн)
Ама не разбирам оти не работи моето решение
|
|
|
Вчера на натпреварот кога ја решавав оваа падна на скоро сите тест примери освен на 3.
Денеска изменив нешто сега на 23 поминува а само на 7 паѓа.
|
|
|
MOI wrote:
ThePopivanov wrote:Средив имав некои мали грешки но ми надминува временски лимит :/
Многу BFS-а се тоа.
Ако ја прочиташ задачата уште еднаш, ќе видиш дека K <= 100, и всушност можеш да почнеш со BFS од тие позиции. Тоа е многу помал број од M*N.
Ја пишував од ново со BFS од цвеќињата ама па нејќе неможам да си ја најдам грешката :/
|
|
|
Средив имав некои мали грешки но ми надминува временски лимит :/
|
|
|
Ова ми е кодот не ми е јасно зошто не дава точна локација.
За првито тест пример ми дава 4, 4 а треба 1, 3.
Видов на 4, 4 (т.е 3, 3) наводнува 3 цвеќиња и на 1, 3 (т.е 0, 2) наводнува 3 цвеќиња. А направено ми е само ако најде нешто повеќе цвеќиња да смене локација бидејќи пишува ако има повеќе решенија да се испечати она најлево. Help
|
|
|
И твојата надминува временски лимит, ја средив со овој код работи без проблем имав проблем со иницијализацијата
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
main()
{
int N;
cin >> N;
int A[N], zbir = 0;
for(int i = 0; i < N; i++)
{
cin >> A[i];
zbir += A[i];
}
int lz = 0, dz = 0, tr = 0;
for(int i = 0; i < N; i++)
{
if(i-1 >= 0) lz += A[i-1];
dz = zbir - A[i] - lz;
if(dz == lz)
{
tr = i+1;
break;
}
}
if(tr == 0) tr = -1;
cout << tr;
return 0;
}
|
|
|
Со мали измени сеа работи.
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
main()
{
int N;
cin >> N;
int A[N], zbir = 0;
for(int i = 0; i < N; i++)
{
cin >> A[i];
zbir += A[i];
}
int lz = 0, dz = 0, tr = 0;
for(int i = 0; i < N; i++)
{
if(i-1 >= 0) lz += A[i-1];
dz = zbir - A[i] - lz;
if(dz == lz)
{
tr = i+1;
break;
}
}
if(tr == 0) tr = -1;
cout << tr;
return 0;
}
|
|
|
И јас иам таков код пишано ама не дозволува врменскиот лимит. Мојот код би требало да работи незнам оти прави проблем.
|
|
|
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
main()
{
int N;
cin >> N;
int A[N], zbir = 0;
for(int i = 0; i < N; i++)
{
cin >> A[i];
zbir += A[i];
}
int lz = 0, dz = 0, tr;
for(int i = 0; i < N; i++)
{
lz += A[i-1];
dz = zbir - A[i] - lz;
if(dz == lz)
{
tr = i+1;
break;
}
}
if(tr == 0) tr = -1;
cout << tr;
return 0;
}
Ми дава точни резултати симнав еден тест случај што го покажува како грешка на мендо и проверив дава точен резултат.
|
|
|
Сигурни сте дека не ви е ставено погрешна дата за регионалниот натпревар? Пишува на 11 март а 11 март е недела, обично сабота беше O.o
|
|
|
Може некој пример
|
|
|
Здраво може некој да ми помогне околу овој вид на задачи? Барам на интернет но неможам да најдам :/
Еве задачи од овој вид.
http://mendo.mk/Task.do?id=704
http://mendo.mk/Task.do?id=629
И исто така задачата од регионалниот натпревар минатата година на која сеуште не го знам одговорот. http://mendo.mk/Task.do?id=614
|
|
|
Ова е мојот код. И го ставив на мендо.мк да проверам дали е точно. И на пример 7 се внесува 1 и нормално треба да се отпечати 0 оти тоа 1 ден ке се одработи во тек на тие 18 недели. И нели кажав кога го симнав инпут е 1 а излез 16.. која логика O.o
|
|
|
Problemot e vo toa sto kaj mene na DevC++ se kompajlira uspesno bez greska a na Mendo.mk kompajlerot go vagja ovoj eror:
Eve i kodot:
|
|
|
Што е грешка? Наместо да ја печати најблиската ја печати првата..
|
|
|
|
|