pllk / kkkk Goto Github PK
View Code? Open in Web Editor NEWKisakoodarin käsikirja
Kisakoodarin käsikirja
Voisi sanoa että bitsetin avulla voidaan saada nopeampia algoritmeja.
Tällä rivillä pitäisi lukea esimerkiksi erona on vähemmän kuin ε
.
Vastaavan virheen käännöksessä korjaa pllk/cphb#2.
int summa(int a, int b, int k, int x, int y) {
if (b < x || a > y) return 0;
if (a <= x && y <= b) return p[k];
int d = (y+x)/2;
return summa(a, b, 2*k, x, d) + summa(a, b, 2*k+1, d+1, y);
}
Oheinen koodi on parempi kuin luvun 28 alussa oleva.
KKKK:n implementaatio on monimutkainen ja menee helposti väärin. CPHB:ssa on parempi implementaatio. Voisiko KKKK:hen siirtää koodin CPHB:sta?
CPHB (yksinkertaisempi, yleisemmässä käytössä): https://github.com/pllk/cphb/blob/f269ae391910742788ac0d6626df1e221281f191/chapter28.tex#L35
KKKK:
Line 44 in a3263a9
Voisi selittää miksi annetut koodit puun käsittelyyn toimivat, erityisesti lisäys-funktion toiminta ei ole suoraan selvää.
Voisi mainita että tuossa on bijektio noilta luvuilta a luvuille mod m_1*...*m_n
Ensin annetaan esimerkki missä tehtävä ratkaistaan koordinaatiston kääntämisellä ja sen jälkeen selitetään että koordinaatistoa voidaan kääntää eikä anneta mitään yhtettä tähän esimerkkiin.
k&-k operaatiosta voisi antaa paremman esimerkin kuin k=6, esim. k=26.
Moi,
Kiitos kirjan kirjoittamisesta!
Onko tämän kirjan lisenssiä mainittu jossain? Koitin sitä etsiä, mutta en löytänyt.
Saattaisin tehdä kirjan esimerkkejä jollakin muulla kuin C++:lla ja laittaa sen version yleiseen jakoon, mutta en tiedä onko se sallittua.
Viimeisessä esimerkissä voisi olla tapaus että joukko on tyhjä. Voisi käsitellä esim. if (a == s.begin() && a == s.end())
Kirjan alkup. dijkstra:
for (int i = 1; i <= n; i++) e[i] = 1e9;
e[x] = 0;
q.push({0,x});
while (!q.empty()) {
int a = q.top().second; q.pop();
if (z[a]) continue;
z[a] = 1;
for (auto b : v[a]) { // b on ilmeisesti pair<int,int> koska .second aksessoinnit
if (e[a]+b.second < e[b]) { // e[b] ei siis onnistu
e[b] = e[a]+b.second; // e[b] ei siis onnistu
q.push({-e[b],b}); // e[b] ja {jotain, b} eivät onnistu
}
}
}
Korjausehdotus:
for (auto b : v[a]) {
int c = e[a]+b.second;
if (c < e[b.first]) {
e[b.first] = c;
q.push({-e[b.first], b.first});
}
}
Tai halutessa apumuuttuja c ("cost") pois.
Tehokkuusvertailutaulukko näyttää aika tyhmältä kun melkein kaikki elementit on >10,0 tai 0,0.
Esimerkin hajautusarvo on väärin?
https://github.com/pllk/kkkk/blob/master/luku30.tex#L67
Kirjoitusvirhe lauseessa: "Tehtävän ratkaisu on suurin laskuri arvo pyyhkäisyviivan kulun aikana."
Bitsetissä usein käytetty ominaisuus .count()
(laskee ykkösbittien määrän) voisi lisätä bitsetin esittelyyn.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.