infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Paul-Dan Baltescu din Aprilie 13, 2010, 15:35:26



Titlul: 1020 Submatrix
Scris de: Paul-Dan Baltescu din Aprilie 13, 2010, 15:35:26
Aici puteți discuta despre problema Submatrix (http://infoarena.ro/problema/submatrix).

Problema a fost adăugată de Andrei Antonescu (http://infoarena.ro/utilizator/andrei-alpha). :thumbup:


Titlul: Răspuns: 1020 Submatrix
Scris de: alexandru din Aprilie 13, 2010, 17:28:07
Elementele matricii  intre ce interval oscileaza ?
Cu aceeasi sursa cu care am luat 100pct la Oni by Net obtin aici 50pct...


Titlul: Răspuns: 1020 Submatrix
Scris de: Andrei Grigorean din Aprilie 13, 2010, 17:33:07
Testele de la ONI erau proaste. Nici cele de pe infoarena nu sunt cele mai bune.


Titlul: Răspuns: 1020 Submatrix
Scris de: alexandru din Aprilie 13, 2010, 17:40:44
Testele de la ONI erau proaste. Nici cele de pe infoarena nu sunt cele mai bune.
Ok, dar elementele din matrice sunt <= 100 sau  is < ( 2^31 )-1 ?


Titlul: Răspuns: 1020 Submatrix
Scris de: Andrei-Bogdan Antonescu din Aprilie 13, 2010, 17:52:33
Am completat in enunt.


Titlul: Răspuns: 1020 Submatrix
Scris de: Ionescu Robert Marius din Aprilie 13, 2010, 21:08:49
Stiti cumva cum pot face rost de sursele mele de la Nationala?
Am uitat sa mi le i-au pe stik. pe cele de la ONI.  :thumbup: :banana:


Titlul: Răspuns: 1020 Submatrix
Scris de: Ionescu Robert Marius din Aprilie 13, 2010, 21:28:43
sursa de 0 la ONI
http://infoarena.ro/job_detail/442165  :thumbdown: :thumbdown:
prea penal :|, mi sa spus ca a iesit din memorie pe toate testele


Titlul: Răspuns: 1020 Submatrix
Scris de: Cosmin-Mihai Tutunaru din Aprilie 13, 2010, 21:32:09
Asta pentru că declari prea multă memorie.
InfoArena îți permite să declari mai multă memorie, și primești MLE doar dacă accesezi mai multă decât ai voie. La ONI nu îți este permis să declari mai multă memorie decât ai voie.


Titlul: Răspuns: 1020 Submatrix
Scris de: Ionescu Robert Marius din Aprilie 13, 2010, 21:33:39
e bine de stiut :))  :thumbup:


Titlul: Răspuns: 1020 Submatrix
Scris de: Cristi din Februarie 02, 2011, 15:16:52
la problema aceasta care este complexitatea dorita ? :-k


Titlul: Răspuns: 1020 Submatrix
Scris de: Simoiu Robert din Februarie 02, 2011, 15:22:59
Complexitatea oficiala este O(N3)


Titlul: Răspuns: 1020 Submatrix
Scris de: Fl. C. din Martie 25, 2011, 14:43:54
Pe testele oficiale programul meu ia 30 de puncte. De ce aici iau 0 puncte?


Titlul: Răspuns: 1020 Submatrix
Scris de: Pripoae Teodor Anton din Martie 25, 2011, 16:04:50
Pt ca testele oficiale erau busite. Aici sunt alte teste.


Titlul: Răspuns: 1020 Submatrix
Scris de: Andrei-Bogdan Antonescu din Martie 25, 2011, 16:05:57
Tu iei kbs pe toate testele pentru ca iesi din memoria alocata.


Titlul: Răspuns: 1020 Submatrix
Scris de: Fl. C. din Martie 25, 2011, 16:14:57
Ok...dar totusi cum sa ies din memoria alocata, care este de 16 MB, daca am declarat 2 matrici [301][301] si 2 vectori de 9000 componente? astea nu ocupa mai mult de 1,5 MB.... apropo pe testele oficiale valorile matricei erau mici, aici sunt mai mari de 9000?


Titlul: Răspuns: 1020 Submatrix
Scris de: Cosmin-Mihai Tutunaru din Martie 25, 2011, 16:41:54
Ok...dar totusi cum sa ies din memoria alocata, care este de 16 MB, daca am declarat 2 matrici [301][301] si 2 vectori de 9000 componente? astea nu ocupa mai mult de 1,5 MB.... apropo pe testele oficiale valorile matricei erau mici, aici sunt mai mari de 9000?

Dacă ai citi cu atenție enunțul, ai putea observa următoarea restricție:
Citat
Numerele din fişierul de intrare se vor incadra pe 32 de biţi cu semn.


Titlul: Răspuns: 1020 Submatrix
Scris de: Fl. C. din Martie 25, 2011, 17:48:34

Dacă ai citi cu atenție enunțul, ai putea observa următoarea restricție:
Citat
Numerele din fişierul de intrare se vor incadra pe 32 de biţi cu semn.

      Am citit enuntul cu atentie, dar nu stiam ce inseamna ca datele se vor incadra pe 32 de biti cu semn. Intre timp m-am documentat. Cred ca din cauza asta luam 0 puncte(pe testele oficiale valorile matricei nu erau mai mari de 100, in schimb aici datele sunt de tip int, adica pana la 2147483647).
      Oricum, multumesc tuturor pentru raspunsuri. M-am luminat putin.


Titlul: Răspuns: 1020 Submatrix
Scris de: Fl. C. din Februarie 28, 2012, 18:28:01
Astazi am revenit asupra acestei probleme si am incercat sa folosesc clasa set. Dar nu inteleg de ce nu da rezultatul corect.
Cod:
#include<cstdio>
#include<set>
using namespace std;
int n,m,k,lmax;
int a[310][310];
void citire()
{
freopen("submatrix.in","r",stdin);
scanf("%d%d%d",&n,&m,&k);
int i,j;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
scanf("%d",&a[i][j]);
}
void calculez()
{
set<int>det;
int i,j,l,q,r,dif=0,x;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
 {
     l=0;
     do
     {
         for(q=i;q<=i+l&&q<=n;++q)
            x=a[j+l][q], det.insert(x);
         for(r=j;r<=j+l&&r<=m;++r)
                             x=a[i+l][r],det.insert(x);
                          dif=det.size();
                          if(dif<=k && l>lmax)
                               lmax=l;
                          ++l;
     }
     while((l<n&&l<m) &&(dif<=k));
     det.clear();
 }
    freopen("submatrix.out","w",stdout);
    printf("%d\n",lmax+1);
}
int main()
{
citire();
calculez();
return 0;
}
E bun rationamentul?


Titlul: Răspuns: 1020 Submatrix
Scris de: Roman Tudor din Octombrie 28, 2016, 11:26:27
De ce am KBS 11 pe toate testele? Nu observ.
Cod:
int matrix[310][310];
int ve[1000002];

int main ()
{
    for (i=1; i<=N; i++)
        for (j=1; j<=M; j++)
        {
            k = i;
            l = j;
            while (k<=N && l<=M)
            {
                sol2 = 0;
                for (u=1; u<=1000000; u++)
                    ve[u] = 0;
                for (u=i; u<=k; u++)
                    for (v=j; v<=l; v++)
                    {
                        ve[matrix[u][v]]++;
                        w++;
                    }
                for (u=1; u<=1000000; u++)
                    if (ve[u] > 0)
                        sol2++;
                sol1 = k-i+1;
                if (sol2 <= K && sol1 > sol)
                    sol = sol1;
                k++;
                l++;
            }
        }
}


Titlul: Răspuns: 1020 Submatrix
Scris de: Mihai Calancea din Octombrie 28, 2016, 14:03:29
CiteÈ™te topicul înainte să postezi, poate au avut È™i alÈ›ii aceeaÈ™i nelămurire  :).