Afişează mesaje
|
Pagini: [1] 2
|
3
|
infoarena - concursuri, probleme, evaluator, articole / Algoritmiada 2014 / Răspuns: Feedback Runda 3
|
: Iunie 08, 2014, 15:52:07
|
Runda a fost interesanta. Eu a problema "potrivireala" am facut pur si simplu un KMP si verifcam care este cea mai lunga subsecventa intreaga si dupa vedeam cu cat te extinzi in stanga si in dreapta. Complexitatea este tot O(N + M) amortizat. La problema "sliding windows" am facut doar un set cu lower_bound si aparent am luat 100(prima data am luat 100 dupa am crezut ca nu intra in timp fara parsare si am luat MLE). La problema "reborn" am incercat sa fac un fel de brut cu cautare binara dar nu a mers si inca sunt curios de ce nu merge ca iau TLE pe toate testele. Felicitari comisiei pentru aceasta runda!
|
|
|
6
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 438 Sea2
|
: Ianuarie 10, 2013, 01:09:02
|
Cu upper_bound sau lower_bound asa se foloseste : #include <iostream> #include <set> int main () { std::set<int> myset; std::set<int>::iterator itlow,itup; for (int i=1; i<10; i++) myset.insert(i*10); // 10 20 30 40 50 60 70 80 90 itlow=myset.lower_bound (30); // ^ itup=myset.upper_bound (60); // ^ myset.erase(itlow,itup); // 10 20 70 80 90 std::cout << "myset contains:"; for (std::set<int>::iterator it=myset.begin(); it!=myset.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0; }
|
|
|
8
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1215 Pescari
|
: Ianuarie 05, 2013, 00:43:13
|
vezi ca dimensiunile matricei nu trebuie sa fie exacte pune 1001 si incearca sa mai reduci prin program fara sa pui atatea if-uri faci 2 vectori de coordonare dx si dy cu cele 8 sau 4 directii ( adica daca mergi in nord pui dx [ 1 ] = -1 si dy [ i ] = 0 ) si faci un for in care verifici daca lin + dx [ i ] si col + dy [ i ] dar trebuie sa pui toate conditiile alea cu n>lin >0 si n>col >0 etc .. Sper sa te ajute
|
|
|
23
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 211 Spirala
|
: Ianuarie 08, 2012, 23:54:20
|
Nu inteleg de ce iau numai 30 am dat vreo 10 teste si merg toate Poate sa ma ajute cineva: Cod sursa: #include<stdio.h> int a[101][101],i,j,n,m,en,o,dif; char b[101][101]; int main() { freopen("spirala.in","r",stdin); freopen("spirala.out","w",stdout); scanf("%d %d",&n,&m); for (i=1;i<=n;i++) for (j=1;j<=m;j++) scanf("%d",&a[i][j]); dif=a[1][1]-a[1][2]; for (en=n*m,o=0; ; ) { for (i=1+o;i<m-o;++i) { b[1+o][i]=b[1+o][i+1]='1'; if (a[1+o][i]-a[1+o][i+1]!=dif&&i+1<=m) { printf("NU\n%d %d\n",a[1+o][i],a[1+o][i+1]); return 0; } --en; } if (en<2) break; for (j=1+o;j<m-o;++j) { b[j][m-o]=b[j+1][m-o]='1'; if (a[j][m-o]-a[j+1][m-o]!=dif&&j+1<=n) { printf("NU\n%d %d\n",a[j][m-o],a[j+1][m-o]); return 0; } --en; } if (en<2) break; for (i=m-o;i>1+o;--i) { b[n-o][i]=b[n-o][i-1]='1'; if (a[n-o][i]-a[n-o][i-1]!=dif&&i-1>1+o) { printf("NU\n%d %d\n",a[n-o][i],a[n-o][i-1]); return 0; } --en; } if (en<2) break; for (j=n-o;j>1+o;--j) { b[j][1+o]=b[j-1][1+o]='1'; if (a[j][1+o]-a[j-1][1+o]!=dif&&j-1>1+o) { printf("NU\n%d %d\n",a[j][1+o],a[j-1][1+o]); return 0; } --en; } if (en<2) break; ++o; } for (i=1;i<=n;i++) for (j=1;j<=m;j++) if (b[i][j]==0) { printf("DA\n%d\n",a[i][j]); return 0; } }
Editat de admin: Foloseste tagul "code" cand postezi surse.
|
|
|
|