Hardcorowe Rozwiazania

Proponuję wstawiać tutaj najdziwniejsze nasze kody:
- takie których za cholerę żaden geniusz nie będzie w stanie zrozumieć
- które zawierają bardzo dużo operatorów
- które pozornie nie mają szans działać
- które przechodzą na Athinie
- które mogą być ciekawe, liczy się pomysłowość:)

Mogą być także ewentualnie inne pomysły rozwiązań do zadań,
które nie były omawiane na lekcji(pomysły),
a może przez nikogo wcześniej nie znane.


Żeby uniknąć sytuacji plagiatów(są osoby które nie przepchnęły niektórych zadań)
proponuję wpisywać tylko pojedyncze funkcje(w sensie fragmentów kodów)


Na początek:

Zadanie C można przepchać stosując tylko jedną funkcję wyszukiwania binarnego.
Zamiast wyszukać ostatnie wystąpienie, można znajdywać pierwszą liczbę, która jest większa o 1.
To powoduje małe problemy(t.j. pytanie o największą liczbę), ale da się spokojnie w 40 liniach.

i jedna z funkcji zadania N
int maximum(int a,int b)
{
int m=0;
if(a%2==1)
{
m=max(m,tab[a]);
a++;
}
if(b%2==0)
{
m=max(m,tab[b]);
b—;
}
if(a>b)return m;
return max(m,maximum(a/2,b/2));
}

niby jest prosta, ale niektórzy mówili że to nie może działać:D

Zadanie P można zrobić także BFSem, warto się zastanowić w jaki sposób
tutaj fragment mojej implementacji:

int magia(int f,int i)
{
return tab[f][i].z*(1-2*(int)zm[f])*(1-2*(int)zm[abs(tab[f][i].z)]);
}
Nobla dla kogoś kto zrozumie


Nieprawdopodobnie rozbudowana, straszliwie długa i niewyobrażalnie skomplikowana funkcja max z zadania N:

int find(int l, int p, int m, int tab[])
{
    while (l<=p)
    {
        if (tab[l]>L) L=tab[l];
        if (tab[p]>P) P=tab[p];
        l=(l+1)/2;
        p=(p-1)/2;
    }
    return L>P ? L : P;
}

Zadanie R na kopcach!! :D

#include <iostream>
#include <queue>
 
using namespace std;
 
struct liczba
{
    int nr;
};
 
bool operator<(liczba a, liczba b)
{
    return a.nr>b.nr;
}
 
priority_queue <liczba> kol[100001], cel[100001], act;
 
int main()
{
    ios_base::sync_with_stdio(0);
    int D, z, n, x;
    cin >> D;
    for (int i=0; i<D; i++)
    {
        x=0;
        cin >> n >> z;
        for (int i=0; i<z; i++)
        {
            liczba a, b;
            cin >> a.nr >> b.nr;
            kol[b.nr].push(a);
            cel[a.nr].push(b);
        }
        for (int i=1; i<=n; i++)
            if (kol[i].empty())
            {
                liczba temp;
                temp.nr=i;
                act.push(temp);
            }
        while (!act.empty())
        {
            int bla=act.top().nr;
            cout << bla << " ";
            x++;
            act.pop();
            while (!cel[bla].empty() && x<n)
            {
                kol[cel[bla].top().nr].pop();
                if (kol[cel[bla].top().nr].empty()) act.push(cel[bla].top());
                cel[bla].pop();
            }
        }
        cout << endl;
    }
 
}

Nie pytajcie jak to działa, bo nie pamiętam :D w każdym razie na OPSSie jest zadanie Zależności, które jest identyczne jak nasze R, tylko bez cykli i je przepchnąłem kiedyś w ten sposób ;) a sprawdzenie cykli to tylko dorobienie DFSa, którym przeleci się graf dla sprawdzenia :)

Zamiana pozwoleń w zadaniu P:

for (int j=0; j<G[G[u][i].v].size(); j++)
            {
                G[G[u][i].v][j].p^=1;
                if (G[G[u][i].v][j].v!=u)
                    for (int k=0; k<G[G[G[u][i].v][j].v].size(); k++)
                        if (G[G[G[u][i].v][j].v][k].v==G[u][i].v)
                            G[G[G[u][i].v][j].v][k].p^=1;
            }

Czy tylko moje uczucie, czy to było jedno z najdurniejszych zadań od początku roku??


Mi się najtrudniejsze wydają zabawy andrzekowe. masakra:/

Dlaczego wszyscy piszą w zadaniach P oraz R DFSy?
Dlaczego one działają?
Dlaczego ja tych rozwiązań nie rozumiem?
Dlaczego nikt nie rozumie moich rozwiązań?
Wy wszyscy macie większe c od mojego!!!!

http://xn--al-vva.pl

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License