Pereiti prie turinio

internautas

Patvirtinti nariai
  • Pranešimai

    295
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    100%

internautas Pranešimai

  1. Manau uždavinio autorius tikisi iš tavęs normalaus sprendimo pasirašant custom classę su kuria apsiskaičiuotum rezultatą ir jį saugotum kažkokiam savo pasirašytam duomenų tipe.

    Tačiau kadangi mums reikia tik dvejeto laipsnių yra ir šiek tiek paprastesnis sprendimas kuris turėtų veikti ant gcc compiliatoriaus. Pakaktų tiesiog kodo:

    
    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main() {
    int p;
    cin >> p;
    
    printf("%.0f\n", pow(2, p));
    }
    

     

     

    Kodo teisingumo įsitikinimui keletas atvejų: http://ideone.com/X5D9J0

  2. Informatikos pamokose dar nė karto neteko man asmeniškai rašyt kodo ant popieriaus. Visada normaliai ant kompo. Mokytoja turbūt dar iš sovietinių laikų dėl to taip jums ir reikia.

    Nuskaitymui pasirašyti atskirą funkciją liepia turbūt dėl egzamino, nes ten pagal nurodymus taip reikia daryt.

  3. Aišku, keistai čia, nes seniau per pamokas mokykloje tokių dalykų nebūdavo, nors dirbau su ta pačia C++ kalba ir programa. :)

     

    Jeigu darydavai ką nors panašaus į:

    double a = 5;

    double b = a / 2;

    Tai viskas veiks gerai. Bet jei būtų:

    int a = 5, b = 2;

    cout << a/b; Tai tau rodytų rezultatą 2, o ne 2.5

  4. Devintokas aš, surinkau 285/300 taškų :). "Megztiniai" ir "Laiptai" buvo labai lengvi, prie "Komfortas" sėdėjau ilgai. Būtų įdomu pažiūrėt kieno nors sprendimą veikiantį pilnai to "Komfortas".

     

    Manau paprasčiausia spręsti Komfortą būtų su dinaminiu programavimu arba kadangi yra tik du žmonės pasirašius funkciją kuri patikrintų du persėdimo atvejus ir gražintų mažesnį atsakymą. Žemiau mano sprendimas su dinaminiu programavimu, norint jį galima pagražint, bet tingėjau:

    #include <iostream>
    #include <cstdio>
    #define MAXN 1000006
    #define INF 9988555
    
    using namespace std;
    
    int n, a[MAXN][2], b[MAXN][2];
    
    bool isValid(int index) {
       return ((a[index][0] & a[index-1][0]) == 0 && (a[index][1] & a[index-1][1]) == 0);
    }
    
    int compute() {
       int moves = 0;
       b[0][0] = b[0][1] = 0;
    
       for(int i = 1; i <= n; ++i) {
    
           if(isValid(i))
               b[i][0] = min(b[i][0], b[i-1][0]);
    
           swap(a[i-1][0], a[i-1][1]);
    
           if(isValid(i))
               b[i][0] = min(b[i][0], b[i-1][1]);
    
           swap(a[i][0], a[i][1]);
    
           if(isValid(i))
               b[i][1] = min(b[i][1], b[i-1][1] + 1);
    
           swap(a[i-1][0], a[i-1][1]);
    
           if(isValid(i))
               b[i][1] = min(b[i][1], b[i-1][0] + 1);
    
           swap(a[i][0], a[i][1]);
    
       }
    
       return min(b[n][0], b[n][1]);
    }
    
    int main() {
       freopen("komfortas-jau.in", "r", stdin);
       freopen("komfortas-jau.out", "w", stdout);
    
       cin >> n;
    
       fill(&b[0][0], &b[MAXN-1][1], INF);
    
       for(int i = 1; i <= n; ++i)
           cin >> a[i][0] >> a[i][1];
    
       int answer = compute();
    
       if(answer == INF)
           cout << -1 << endl;
       else
           cout << answer << endl;
    }

  5. Oro uostas:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #define MAXN 100005
    
    using namespace std;
    
    struct Lektuvas {
       int v, t;
    
       bool operator < (const Lektuvas &l) const {
           return v < l.v;
       }
    } lektuvas[MAXN];
    
    int n, a[MAXN], l[MAXN];
    
    int main () {
       freopen("orouostas-vyr.in", "r", stdin);
       freopen("orouostas-vyr.out", "w", stdout);
    
       cin >> n;
    
       for(int i = 0; i < n; ++i)
           cin >> lektuvas[i].t >> lektuvas[i].v;
    
       sort(lektuvas, lektuvas + n);
    
       for(int i = 0; i < n; ++i) {
           for(int j = 0; j + lektuvas[i].t <= lektuvas[i].v; ++j)
               a[j + lektuvas[i].t] = max(a[j + lektuvas[i].t], l[j] + 1);
    
           copy(a, a+lektuvas[i].v + 1, l);
       }
    
       cout << *max_element(a, a + MAXN) << '\n';
    }

     

    Milzinas:

    #include <iostream>
    #include <cstdio>
    #define MAXN 1000005
    
    using namespace std;
    
    int n, p;
    string s;
    bool kal[MAXN];
    
    void lava(int x, char p){
       if(x < 0 || x >= n || kal[x] || s[x] != p)
           return;
    
       kal[x] = true;
    
       if(p == 'D')
           lava(x-1, p);
       else if(p == 'K')
           lava(x+1, p);
    
    }
    
    int main () {
       freopen("milzinas-vyr.in", "r", stdin);
       freopen("milzinas-vyr.out", "w", stdout);
    
       cin >> n >> p >> s;
    
       for(int i = 0; i < n; ++i)
           if(s[i] == 'L'){
               kal[i] = true;
    
               lava(i-1, 'D');
               lava(i+1, 'K');
           }
    
       int answer = 0;
    
       for(int i = 0; i < p; ++i){
           int x;
           cin >> x;
    
           if(!kal[x-1])
               ++answer;
       }
    
       cout << answer << endl;
    }

     

     

    Katinas:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstdlib>
    #include <queue>
    #define MAXN 3005
    
    using namespace std;
    
    const int dy[] = {0, 1, 0, -1}, dx[] = {-1, 0, 1, 0};
    int v[MAXN][MAXN];
    
    int d, t, n, m, sy, sx, catPy, catPx;
    
    string l[MAXN];
    
    inline bool isValid(int y, int x) {
       return (y >= 0 && y < n && x >= 0 && x < m && l[y][x] != '#');
    }
    
    int katinoKelias() {
       int catKr = 0, moves = 0;
    
       int cy = sy, cx = sx;
    
       while(l[cy][cx] != 'P') {
           if(!isValid(cy + dy[catKr], cx + dx[catKr])) {
               catKr = (catKr + 1) % 4;
           } else {
               cy += dy[catKr];
               cx += dx[catKr];
    
               ++moves;
           }
       }
    
       catPy = cy;
       catPx = cx;
    
       return moves;
    }
    
    
    void linoKelias() {
       for(int i = 0; i < MAXN; ++i)
           for(int j  = 0; j < MAXN; ++j)
               v[i][j] = -1;
    
       queue<int> q;
    
       v[sy][sx] = 0;
    
       q.push(sy);
       q.push(sx);
    
       while(!q.empty()) {
           int cy = q.front();
           q.pop();
           int cx = q.front();
           q.pop();
    
           for(int i = 0; i < 4; ++i) {
               int y = cy + dy[i];
               int x = cx + dx[i];
    
               if(isValid(y, x) && v[y][x] == -1) {
                   q.push(y);
                   q.push(x);
                   v[y][x] = v[cy][cx] + 1;
               }
           }
       }
    }
    
    
    int main () {
       freopen("katinas-vyr.in", "r", stdin);
       freopen("katinas-vyr.out", "w", stdout);
    
       cin >> d >> t >> n >> m;
    
    
       for(int i = 0; i < n; ++i)
           cin >> l[i];
    
       for(int i = 0; i < n; ++i)
           for(int j = 0; j < m; ++j)
               if(l[i][j] == 'S') {
                   sy = i;
                   sx = j;
               }
    
       int lKatinas = katinoKelias();
       linoKelias();
    
       int lLino = v[catPy][catPx] + t;
    
       if(lLino <= lKatinas)
           cout << d << endl;
       else
           cout << max(0, d - (lLino - lKatinas)) << endl;
    }

  6. kelintokas?

    dabar kazkaip padare,kad rodytu visus testus ir pan.

    Uzduotys buvo sunkios,krc galejo padaryt,kad nerodytu testu.

    Nes testai buvo sunkus,10 devintuoju ir pan.Kas mokejo algoritmo sudetinguma,tam ir be problemu buvo.

     

    Respublikiniam etape bus naudojama kita varžybų testavimo sistema https://github.com/cms-dev/cms tenai kaip ir BOI, IOI olimpiadoj nesimatys pačių testų tačiau žinosi kiek testų praėjo, senoji sistema buvo naudojama paskutinį kartą ir ant jos tokios galimybės nėra.

    Pats esu dvyliktokas, surinkau 300. Pirmi du pasirodė labai lengvi (milžinas ir katinas), su trečiuoju dėl durnos rikiavimo klaidos (ne pagal tą surikiavau ir nepastebėjau, kad taip nutiko) labai ilgai knisaus prie dinaminio oro uosto sprendimo. Kiek teko šnekėtis su draugais, tai rodos 6 žmonės surinko maximumą.

  7. Tiesiog vykdyk tai kas parašyta sąlygoj. Turėtų būt kažkas panašaus:

    #include <iostream>
    
    using namespace std;
    
    int pow(int number) {
       int last = 1, answer = 0;
    
       for(int i = 0; i < number; ++i, last += 2)
           answer += last;
    
       return answer;
    }
    
    int main() {
       int n;
       cin >> n;
    
       for(int i = 1; i <= n; ++i)
           cout << pow(i) << '\n';
    }

  8. Sveiki esu savamokslis Android programuotojas. Su programavimu susipažinau jau daugiau nei prieš 5 metus. Pradėjau nuo PHP, C++, C#. Daugiau nei prieš 1.5 metų pradėjau programuoti ir ant Android. Per tiek laiko gavau nemažai programavimo patirties. Turiu sukūręs keletą appsų, vienas jų Kviz! . Mėgstu iššūkius, nestoviu vietoje. Kas susiję su Android puikiai išmanau šiuos dalykus:

     

    • Java, Android programavimas
    • PHP
    • JSON
    • XML
    • SQL

    Jei svajotate apie vienokį arba kitokį appsą nesivaržydami rašykite AŽ arba el. paštu [email protected]

  9. Sveiki, Kalėdoms gavau knygyno Pegasas kuponų iš viso 180 Lt vertės (Yra 3 kuponai: 100Lt, 50 Lt, 30 Lt) . Pats knygų neperku (nenoriu, kad nenaudojamos dulkėtų ant spintelės), tad pagalvojau gal atsirastų žmonių kuriems jie būtų naudingesni. Jei ką nors domina, rašykit AŽ. Orientacinė kaina apie 15 procentų mažiau nei reali kuponų vertė. Galioja beveik iki kovo pabaigos.

  10. Sveiki susidūriau su nedidele problema sqlite duomenų bazėje. Noriu daryti šveplas užklausas. Pvz turiu lentelę Pavadinimai:

    ID Title

    1 uždarbis

    2 kalėdos

     

    Noriu, kad ieškant pagal Title tiek užklausa `uždarbis`, tiek `uzdarbis` grazintu eilutę su ID 1.

    Į galvą ateina vienintelis būdas papildyti lentele dar vienu stulpeliu kuriame būtų jau sušveplintas Title, o kai useris įveda kažką su lietuviškom raidėm sulotyninti jas į atitikmenis ą -> a, č -> c ir t.t ir tuomet ieškoti. Tačiau gal yra koks nors gražesnis būdas ? Dėkui iš anksto.

  11. Paprasčiausia paieška į plotį ar į gylį čia neveiks, nes reikia rasti ne kelią kuris aplankytų daugiausia miestų, o kelią kuris būtų ilgiausias nesilankant tame pačiame mieste kelis kartus. Šiaip šios problemos sudėtingumas NP, tačiau tavo atveju grafas neturi ciklų, kas šioj situacijoj labai gelbėja. Gali pabandyti įgyvendinti kažką panašaus į http://www.geeksforgeeks.org/find-longest-path-directed-acyclic-graph/

  12. Sveiki pribrendo reikalas tėvukui nupirkti naują kompiuterį. Pagrinde būtų naudojamas torrentams siųsti, filmams žiūrėti, naršyti internete. Biudžetas apie 1000 Lt. Mastau dar prie kompo paimti 2 TB išorinį HDD, kad ten laikytų visą atsisiųstą informaciją, tad labai talpaus vidinio HDD nereikia. Monitoriaus nereikia. Gal kas padės susikomplektuoti tokį PC. Dėkui :)

  13. Bent kompiliuoja programą ? Neturėtų, nes fscanf funkcijoj pamiršai %d tarp kabučių įmest. Ištaisyta programa:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    int i,a;
    int m[100];
    FILE *fp;
    
    a=0;
    fp = fopen("failas.txt", "r");
    
    if(fp) {
       while(!feof(fp)){
               fscanf(fp,"%d",&m[a]);
               a++;
           }
           }
    fclose(fp);
    
    
    for (i=0;i<a;i++)
    {
    
       printf("%d \n",m[i]);
    }
    
    system("pause");
    return 0;
    }

  14. Programėlė :)

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    string getSum(string a, string b) {
       string result = "";
       int liek = 0;
    
       if(a.size() < b.size())
           a.insert(0, b.size() - a.size(), '0');
       else
           b.insert(0, a.size() - b.size(), '0');
    
       for(int i = a.size() - 1; i >= 0; --i) {
           liek += a[i] + b[i] - 2 * '0';
    
           result.push_back(liek % 10 + '0');
    
           liek /= 10;
       }
    
       while(liek) {
           result.push_back(liek % 10 + '0');
           liek /= 10;
       }
    
       reverse(result.begin(), result.end());
    
       return result;
    }
    
    int main() {
       int n, l;
       string a, sum;
       cin >> n;
    
       for(int i = 0; i < n; ++i) {
           if(!i) {
               cin >> l >> sum;
           } else {
               cin >> l >> a;
               sum = getSum(sum, a);
           }
       }
    
       cout << sum << '\n';
    
       return 0;
    }

×
×
  • Pasirinkite naujai kuriamo turinio tipą...