infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Stefan Istrate din Martie 24, 2010, 18:48:17



Titlul: 1000 Taxe2
Scris de: Stefan Istrate din Martie 24, 2010, 18:48:17
Aici puteti discuta despre problema Taxe2 (http://infoarena.ro/problema/taxe2).


Titlul: Răspuns: 1000 Taxe2
Scris de: Motoc Alexandru din Ianuarie 05, 2011, 17:59:50
Problema asta este de backtracking?


Titlul: Răspuns: 1000 Taxe2
Scris de: Petru Trimbitas din Ianuarie 05, 2011, 18:12:44
Nu, e lee :D


Titlul: Răspuns: 1000 Taxe2
Scris de: Butiu Alexandru Octavian din August 01, 2011, 19:30:53
Nu e Lee ci programare dinamica.


Titlul: Răspuns: 1000 Taxe2
Scris de: Simoiu Robert din August 01, 2011, 21:57:14
Alexandru, tin sa te anunt la Lee este PROGRAMARE DINAMICA  :thumbup:.


Titlul: Răspuns: 1000 Taxe2
Scris de: Vlad Tarniceru din August 03, 2011, 11:07:12
se poate face mai rapid cu un bellman-ford sau un dijkstra decat cu un lee, dar merge si asa :)


Titlul: Răspuns: 1000 Taxe2
Scris de: Mihai Visuian din Februarie 21, 2012, 21:25:52
imi puteti spune si mie va rog cum pot aplica algoritmii de la grafuri la matrici?
Inteleg ca fiecare casuta reprezinta un nod, iar laturile din matrice sunt muchii, dar nu stiu cum sa transpun.
(Sunt nou in asa ceva)


Titlul: Răspuns: 1000 Taxe2
Scris de: George Marcus din Februarie 21, 2012, 21:44:32
Fiecare nod e reprezentat de o pereche de coordonate (x,y) iar vecinii fiecarui nod sunt (x+1,y),(x,y+1),(x-1,y),(x,y-1). Poti creea o structura care va reprezenta un nod.


Titlul: Răspuns: 1000 Taxe2
Scris de: Radu Stefan Adrian din Februarie 28, 2012, 21:55:56
cum se pot downloada fisierele de test? Am incercat de mai multe ori, dar ma duce inapoi la problema si imi apare eroarea : "Nu aveti permisiuni pentru a descarca fisierul grader_test1.in". ](*,) ma poate ajuta cineva? :? multumesc anticipat!


Titlul: Răspuns: 1000 Taxe2
Scris de: MciprianM din Februarie 28, 2012, 21:59:06
Aceasta problema nu permite vizualizarea testelor folosite in evaluarea pe infoarena. Adica nu se poate.
Poti sa vezi, insa, testele folosite la evaluarea de la Olimpiada Judeteana din 2003. Acestea le gasesti in arhiva pentru OJI 2003, din sectiunea Downloads a site-ului.


Titlul: Răspuns: 1000 Taxe2
Scris de: Radu Stefan Adrian din Februarie 28, 2012, 22:16:35
Am incercat si arhiva de la oji2003 (http://olimpiada.info/oji2005/index.php?cid=arhiva (http://olimpiada.info/oji2005/index.php?cid=arhiva)) dar nu contine nici macar .cpp dar sa mai aiba si testele ...


Titlul: Răspuns: 1000 Taxe2
Scris de: MciprianM din Februarie 28, 2012, 22:22:59
Aceasta problema nu permite vizualizarea testelor folosite in evaluarea pe infoarena. Adica nu se poate.
Poti sa vezi, insa, testele folosite la evaluarea de la Olimpiada Judeteana din 2003. Acestea le gasesti in arhiva pentru OJI 2003, din sectiunea Downloads a site-ului.

Prin sectiunea Downloads a site-ului m-am referit la site-ul infoarena. Pe pagina principala a site-ului este un meniu care contine optiunea Downloads si care te duce la adresa: http://infoarena.ro/downloads (http://infoarena.ro/downloads). Acolo gasesti arhiva pentru OJI 2003, la adresa: http://infoarena.ro/downloads?action=download&file=oji2003.zip&safe_only=false (http://infoarena.ro/downloads?action=download&file=oji2003.zip&safe_only=false)
M-am uitat prin arhiva asta pe care ti-am linkat-o si contine, cel putin pentru taxe, solutii oficiale, teste si toate cele. Banuiesc ca e la fel si pentru celelalte probleme.


Titlul: Răspuns: 1000 Taxe2
Scris de: Ilie Andrei din Ianuarie 23, 2013, 17:08:08
Imi intra in 0.1 s, dar pe 0.05 s iau 80 p. Ma puteti ajuta cu niste optimizari? Acesta este Lee-ul meu:
Cod:
while(p<=u)
    {
        if(!(cost[n][n]>=0&&cost[c[p].x][c[p].y]>=cost[n][n]))
        for(i=1;i<=4;i++)
        {
            x=dx[i]+c[p].x;
            y=dy[i]+c[p].y;
            if(a[x][y]+max(0,cost[c[p].x][c[p].y])<=s&&(cost[x][y]==-1||cost[x][y]>cost[c[p].x][c[p].y]+a[x][y])&&x>=1&&y>=1&&x<=n&&y<=n)
            {cost[x][y]=cost[c[p].x][c[p].y]+a[x][y];c[++u].x=x;c[u].y=y;}
        }
        p++;
    }


Titlul: Răspuns: 1000 Taxe2
Scris de: George Marcus din Ianuarie 23, 2013, 20:34:25
Vei avea maximum 10000 de elemente in coada fiindca fiecare va fi o singura data inserat.


Titlul: Răspuns: 1000 Taxe2
Scris de: Ilie Andrei din Ianuarie 23, 2013, 22:57:49
Oups  :-', am uitat sa mentionez ca trebuie optimizata din punct de vedere al timpului.. am avut probleme si cu memoria initial tot pe acele teste, dar am rezolvat :D. Mersi oricum!


Titlul: Răspuns: 1000 Taxe2
Scris de: George Marcus din Ianuarie 23, 2013, 23:19:23
Pai daca declari un vector de 10000 de elemente, ia mai putin timp sa-l aloci fata de cum faci tu. Nu sunt chiar separate memoria si timpul. Nu stiu cat imbunatateste timpul, dar oricum e mai bine.


Titlul: Răspuns: 1000 Taxe2
Scris de: Sorin Rita din Ianuarie 23, 2013, 23:47:12
Cum ti s-a mai zis timpul de executie e strans legat de memorie. Coada o poti declara char. Incearca asa.


Titlul: Răspuns: 1000 Taxe2
Scris de: Ilie Andrei din Ianuarie 24, 2013, 07:46:37
Am declarat tot ce s-a putut short int si unsigned char, cat despre lungimea cozii am pus 77900 in urma unei 'cautari binare'. La un numar mai mic, depasea coada pe testul maximal, deoarece exista varfuri ce trebuie adaugate de mai multe ori pentru a determina minimul.. Sigur nu mai pot optimiza, intr-un anumit fel, conditiile de la lee-ul meu?


Titlul: Răspuns: 1000 Taxe2
Scris de: George Marcus din Ianuarie 24, 2013, 13:44:35
Am luat 100 cu sursa sa si singurul lucru pe care l-am modificat a fost sa nu mai introduc de mai multe ori aceeasi celula in coada.


Titlul: Răspuns: 1000 Taxe2
Scris de: Ilie Andrei din Ianuarie 24, 2013, 15:44:08
nu inteleg totusi.. daca avem deja introdus un element pe care, daca il introducem iar, obtinem o solutie mai buna? in sursa mea, introduc doar puncte in conditii optime :-?


Titlul: Răspuns: 1000 Taxe2
Scris de: CHIRILA ADRIAN din Noiembrie 11, 2013, 20:19:14
Vreo idee de ce iau incorect pe testele 7,9,10? sursa:http://www.infoarena.ro/job_detail/1026018?action=view-source (http://www.infoarena.ro/job_detail/1026018?action=view-source).(LEE)


Titlul: Răspuns: 1000 Taxe2
Scris de: Mercea Otniel din Februarie 16, 2014, 13:56:58
#include<iostream>
using namespace std;
#include<stdio.h>
const int x1[4]={1,-1,0,0};
const int y1[4]={0,0,-1,1};
FILE *f,*g;
short int a[161][161],c[161][161],i,j,n,inceput=1,sfarsit=1,s,k;
struct punct
{
    short int ls,ld,d;
};
punct coada [199999999],x,y;
int main()
{
    f=fopen("taxe2.in","r");
    g=fopen("taxe2.out","w");
    fscanf(f,"%hd%hd",&s,&n);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
           {fscanf(f,"%hd",&a[j]);

    }
    for(i=1;i<=n;i++)
    {
        c[0]=c[n+1]=-1;
        c
  • =c[n+1]=-1;
            }
    coada[inceput].ls=coada[inceput].ld=1;
    coada[inceput].d=a[j];
    c[1][1]=a[1][1];
     while(inceput<=sfarsit)
     {
         x=coada[inceput];
         inceput++;
         for(k=0;k<4;k++)
         {
             if(c[x.ls+x1[k]][x.ld+y1[k]]==0)
             {
                 c[x.ls+x1[k]][x.ld+y1[k]]=c[x.ls][x.ld]+a[x.ls+x1[k]][x.ld+y1[k]];
                 y.ls=x.ls+x1[k];
                 y.ld=x.ld+y1[k];
                 sfarsit++;
                 coada[sfarsit]=y;
            }
            else
                if(c[x.ls][x.ld]+a[x.ls+x1[k]][x.ld+y1[k]]<c[x.ls+x1[k]][x.ld+y1[k]])
            {
                c[x.ls+x1[k]][x.ld+y1[k]]=c[x.ls][x.ld]+a[x.ls+x1[k]][x.ld+y1[k]];
                 y.ls=x.ls+x1[k];
                 y.ld=x.ld+y1[k];
                 sfarsit++;
                 coada[sfarsit]=y;
            }
         }
     }
        if(s-c[n][n]>=0)
            fprintf(g,"%hd",s-c[n][n]);
        else
            fprintf(g,"-1");
}
de ce i-au pe testu 7,9,10 killsiegv 11?


Titlul: Răspuns: 1000 Taxe2
Scris de: Boaca Cosmin din Februarie 16, 2014, 14:33:34
Cred ca "i-ei" "killsiegv 11" pe "testu 7,9,10" din cauza felului in care scrii pe forum. In general primesti semnalul ala de eroare in cazul in care intri pe o zona de memorie care nu este alocata, aka depasesti limitele unui vector. In cazul tau, coada de 200 de milioane de elemente s-ar putea sa iti faca probleme de asemenea. Pe viitor inainte sa pui o intrebare asigura-te ca e macar jumatate din ea corecta gramatical.


Titlul: Răspuns: 1000 Taxe2
Scris de: Mercea Otniel din Februarie 16, 2014, 19:09:34
si daca reduc dimensiuneile cozii i-au killsiegv si coada are 199 milioane


Titlul: Răspuns: 1000 Taxe2
Scris de: Vasile Catana din Aprilie 25, 2014, 18:04:59
 ](*,) probleme cu memoria , 640 kbs ii prea putin  ](*,) ](*,)