nhaliday + practice   32

[Tutorial] A way to Practice Competitive Programming : From Rating 1000 to 2400+ - Codeforces
this guy really didn't take that long to reach red..., as of today he's done 20 contests in 2y to my 44 contests in 7y (w/ a long break)...>_>

tho he has 3 times as many submissions as me. maybe he does a lot of virtual rounds?

some snippets from the PDF guide linked:
To be rating 1900, skills as follows are needed:
- You know and can use major algorithms like these:
Brute force DP DFS BFS Dijkstra
Binary Indexed Tree nCr, nPr Mod inverse Bitmasks Binary Search
- You can code faster (For example, 5 minutes for R1100 problems, 10 minutes for
R1400 problems)

If you are not good at fast-coding and fast-debugging, you should solve AtCoder problems. Actually, and statistically, many Japanese are good at fast-coding relatively while not so good at solving difficult problems. I think that’s because of AtCoder.

I recommend to solve problem C and D in AtCoder Beginner Contest. On average, if you can solve problem C of AtCoder Beginner Contest within 10 minutes and problem D within 20 minutes, you are Div1 in FastCodingForces :)


Interestingly, typical problems are concentrated in Div2-only round problems. If you are not good at Div2-only round, it is likely that you are not good at using typical algorithms, especially 10 algorithms that are written above.

If you can use some typical problem but not good at solving more than R1500 in Codeforces, you should begin TopCoder. This type of practice is effective for people who are good at Div.2 only round but not good at Div.1+Div.2 combined or Div.1+Div.2 separated round.

Sometimes, especially in Div1+Div2 round, some problems need mathematical concepts or thinking. Since there are a lot of problems which uses them (and also light-implementation!) in TopCoder, you should solve TopCoder problems.

I recommend to solve Div1Easy of recent 100 SRMs. But some problems are really difficult, (e.g. even red-ranked coder could not solve) so before you solve, you should check how many percent of people did solve this problem. You can use https://competitiveprogramming.info/ to know some informations.

To be rating 2200, skills as follows are needed:
- You know and can use 10 algorithms which I stated in pp.11 and segment trees
(including lazy propagations)
- You can solve problems very fast: For example, 5 mins for R1100, 10 mins for
R1500, 15 mins for R1800, 40 mins for R2000.
- You have decent skills for mathematical-thinking or considering problems
- Strong mental which can think about the solution more than 1 hours, and don’t give up even if you are below average in Div1 in the middle of the contest

This is only my way to practice, but I did many virtual contests when I was rating 2000. In this page, virtual contest does not mean “Virtual Participation” in Codeforces. It means choosing 4 or 5 problems which the difficulty is near your rating (For example, if you are rating 2000, choose R2000 problems in Codeforces) and solve them within 2 hours. You can use https://vjudge.net/. In this website, you can make virtual contests from problems on many online judges. (e.g. AtCoder, Codeforces, Hackerrank, Codechef, POJ, ...)

If you cannot solve problem within the virtual contests and could not be able to find the solution during the contest, you should read editorial. Google it. (e.g. If you want to know editorial of Codeforces Round #556 (Div. 1), search “Codeforces Round #556 editorial” in google) There is one more important thing to gain rating in Codeforces. To solve problem fast, you should equip some coding library (or template code). For example, I think that equipping segment tree libraries, lazy segment tree libraries, modint library, FFT library, geometry library, etc. is very effective.

2200 to 2400:
Rating 2200 and 2400 is actually very different ...

To be rating 2400, skills as follows are needed:
- You should have skills that stated in previous section (rating 2200)
- You should solve difficult problems which are only solved by less than 100 people in Div1 contests


At first, there are a lot of educational problems in AtCoder. I recommend you should solve problem E and F (especially 700-900 points problem in AtCoder) of AtCoder Regular Contest, especially ARC058-ARC090. Though old AtCoder Regular Contests are balanced for “considering” and “typical”, but sadly, AtCoder Grand Contest and recent AtCoder Regular Contest problems are actually too biased for considering I think, so I don’t recommend if your goal is gain rating in Codeforces. (Though if you want to gain rating more than 2600, you should solve problems from AtCoder Grand Contest)

For me, actually, after solving AtCoder Regular Contests, my average performance in CF virtual contest increased from 2100 to 2300 (I could not reach 2400 because start was early)

If you cannot solve problems, I recommend to give up and read editorial as follows:
Point value 600 700 800 900 1000-
CF rating R2000 R2200 R2400 R2600 R2800
Time to editorial 40 min 50 min 60 min 70 min 80 min

If you solve AtCoder educational problems, your skills of competitive programming will be increased. But there is one more problem. Without practical skills, you rating won’t increase. So, you should do 50+ virtual participations (especially Div.1) in Codeforces. In virtual participation, you can learn how to compete as a purple/orange-ranked coder (e.g. strategy) and how to use skills in Codeforces contests that you learned in AtCoder. I strongly recommend to read editorial of all problems except too difficult one (e.g. Less than 30 people solved in contest) after the virtual contest. I also recommend to write reflections about strategy, learns and improvements after reading editorial on notebooks after the contests/virtual.

In addition, about once a week, I recommend you to make time to think about much difficult problem (e.g. R2800 in Codeforces) for couple of hours. If you could not reach the solution after thinking couple of hours, I recommend you to read editorial because you can learn a lot. Solving high-level problems may give you chance to gain over 100 rating in a single contest, but also can give you chance to solve easier problems faster.
oly  oly-programming  problem-solving  learning  practice  accretion  strategy  hmm  pdf  guide  reflection  advice  wire-guided  marginal  stylized-facts  speed  time  cost-benefit  tools  multi  sleuthin  review  comparison  puzzles  contest  aggregator  recommendations  objektbuch  time-use  growth  studying  🖥  👳  yoga 
august 2019 by nhaliday
The 'science' of training in competitive programming - Codeforces
"Hard problems" is subjective. A good rule of thumb for learning problem solving (at least according to me) is that your problem selection is good if you fail to solve roughly 50% of problems you attempt. Anything in [20%,80%] should still be fine, although many people have problems staying motivated if they fail too often. Read solutions for problems you fail to solve.

(There is some actual math behind this. Hopefully one day I'll have the time to write it down.)
- misof in a comment
I don't believe in any of things like "either you solve it in 30mins — few hours, or you never solve it at all". There are some magic at first glance algorithms like polynomial hashing, interval tree or FFT (which is magic even at tenth glance :P), but there are not many of them and vast majority of algorithms are possible to be invented on our own, for example dp. In high school I used to solve many problems from IMO and PMO and when I didn't solve a problem I tried it once again for some time. And I have solved some problems after third or sth like that attempt. Though, if we are restricting ourselves to beginners, I think that it still holds true, but it would be better to read solutions after some time, because there are so many other things which we can learn, so better not get stuck at one particular problem, when there are hundreds of other important concepts to be learnt.
oly  oly-programming  problem-solving  learning  practice  accretion  strategy  marginal  wire-guided  stylized-facts  hmm  advice  tactics  time  time-use  cost-benefit  growth  studying  🖥  👳 
august 2019 by nhaliday
OSF | Near and Far Transfer in Cognitive Training: A Second-Order Meta- Analysis
In Models 1 (k = 99) and 2 (k = 119), we investigated the impact of working-memory training on near-transfer (i.e., memory) and far-transfer (e.g., reasoning, speed, and language) measures, respectively, and whether it is mediated by the type of population. Model 3 (k = 233) extended Model 2 by adding six meta-analyses assessing the far-transfer effects of other cognitive-training programs (video-games, music, chess, and exergames). Model 1 showed that working-memory training does induce near transfer, and that the size of this effect is moderated by the type of population. By contrast, Models 2 and 3 highlighted that far-transfer effects are small or null.
study  preprint  psychology  cog-psych  intelligence  generalization  dimensionality  psych-architecture  intervention  enhancement  practice 
february 2019 by nhaliday
Deliberate Practice and Performance in Music, Games, Sports, Education, and Professions: A Meta-Analysis
We found that deliberate practice explained 26% of the variance in performance for games, 21% for music, 18% for sports, 4% for education, and less than 1% for professions. We conclude that deliberate practice is important, but not as important as has been argued.
pdf  study  psychology  cog-psych  social-psych  teaching  tutoring  learning  studying  stylized-facts  metabuch  career  long-term  music  games  sports  education  labor  data  list  expert-experience  ability-competence  roots  variance-components  top-n  meta-analysis  practice  quixotic 
december 2017 by nhaliday
Overlearning hyperstabilizes a skill by making processing inhibitory-dominant | Hacker News
Usually, learning immediately after training is so unstable that it can be disrupted by subsequent new learning until after passive stabilization occurs hours later. However, overlearning so rapidly and strongly stabilizes the learning state that it not only becomes resilient against, but also disrupts, subsequent new learning. Such hyperstabilization is associated with an abrupt shift from glutamate-dominant excitatory to GABA-dominant inhibitory processing in early visual areas. Hyperstabilization contrasts with passive and slower stabilization, which is associated with a mere reduction of excitatory dominance to baseline levels. Using hyperstabilization may lead to efficient learning paradigms.
hn  commentary  study  org:nat  summary  psychology  cog-psych  learning  neurons  neuro  thinking  retention  practice  brain-scan  neuro-nitgrit  inhibition  mindful  knowledge 
february 2017 by nhaliday
Highlighting a Waste of Time, Bryan Caplan | EconLog | Library of Economics and Liberty
Garett Jones' top catchphrase is, "If only there were a vast empirical literature on X."  When you're well-aware of the vast empirical literature to which he's alluding, it's funny.  Whenever you discover a new-to-you vast empirical literature, though, it's humbling.  The world's packed with vast empirical literatures.  Anytime you open your mouth in earnest, you're probably running afoul of one of them. 

The Power of Distributed Practice: https://www.econlib.org/archives/2015/09/the_power_of_di.html
basically: spaced repetition works
spearhead  cracker-econ  org:econlib  aphorism  social-science  education  study  summary  psychology  econotariat  evidence-based  intervention  null-result  input-output  multi  studying  retention  distribution  time  sequential  practice  commentary  cost-benefit  notetaking 
december 2016 by nhaliday
Why Constant Learners All Embrace the 5-Hour Rule – The Mission – Medium
better than the title suggests, eg, Ben Franklins personal routine looks a lot like what I arrived at independently
growth  akrasia  advice  vulgar  habit  org:med  productivity  learning  creative  wire-guided  practice  time-use  studying  time  investing 
august 2016 by nhaliday
soft question - How do you not forget old math? - MathOverflow
Terry Tao:
I find that blogging about material that I would otherwise forget eventually is extremely valuable in this regard. (I end up consulting my own blog posts on a regular basis.) EDIT: and now I remember I already wrote on this topic: terrytao.wordpress.com/career-advice/write-down-what-youve-d‌​one

The only way to cope with this loss of memory I know is to do some reading on systematic basis. Of course, if you read one paper in algebraic geometry (or whatever else) a month (or even two months), you may not remember the exact content of all of them by the end of the year but, since all mathematicians in one field use pretty much the same tricks and draw from pretty much the same general knowledge, you'll keep the core things in your memory no matter what you read (provided it is not patented junk, of course) and this is about as much as you can hope for.

Relating abstract things to "real life stuff" (and vice versa) is automatic when you work as a mathematician. For me, the proof of the Chacon-Ornstein ergodic theorem is just a sandpile moving over a pit with the sand falling down after every shift. I often tell my students that every individual term in the sequence doesn't matter at all for the limit but somehow together they determine it like no individual human is of any real importance while together they keep this civilization running, etc. No special effort is needed here and, moreover, if the analogy is not natural but contrived, it'll not be helpful or memorable. The standard mnemonic techniques are pretty useless in math. IMHO (the famous "foil" rule for the multiplication of sums of two terms is inferior to the natural "pair each term in the first sum with each term in the second sum" and to the picture of a rectangle tiled with smaller rectangles, though, of course, the foil rule sounds way more sexy).

One thing that I don't think the other respondents have emphasized enough is that you should work on prioritizing what you choose to study and remember.

Timothy Chow:
As others have said, forgetting lots of stuff is inevitable. But there are ways you can mitigate the damage of this information loss. I find that a useful technique is to try to organize your knowledge hierarchically. Start by coming up with a big picture, and make sure you understand and remember that picture thoroughly. Then drill down to the next level of detail, and work on remembering that. For example, if I were trying to remember everything in a particular book, I might start by memorizing the table of contents, and then I'd work on remembering the theorem statements, and then finally the proofs. (Don't take this illustration too literally; it's better to come up with your own conceptual hierarchy than to slavishly follow the formal hierarchy of a published text. But I do think that a hierarchical approach is valuable.)

Organizing your knowledge like this helps you prioritize. You can then consciously decide that certain large swaths of knowledge are not worth your time at the moment, and just keep a "stub" in memory to remind you that that body of knowledge exists, should you ever need to dive into it. In areas of higher priority, you can plunge more deeply. By making sure you thoroughly internalize the top levels of the hierarchy, you reduce the risk of losing sight of entire areas of important knowledge. Generally it's less catastrophic to forget the details than to forget about a whole region of the big picture, because you can often revisit the details as long as you know what details you need to dig up. (This is fortunate since the details are the most memory-intensive.)

Having a hierarchy also helps you accrue new knowledge. Often when you encounter something new, you can relate it to something you already know, and file it in the same branch of your mental tree.
thinking  math  growth  advice  expert  q-n-a  🎓  long-term  tradeoffs  scholar  overflow  soft-question  gowers  mathtariat  ground-up  hi-order-bits  intuition  synthesis  visual-understanding  decision-making  scholar-pack  cartoons  lens  big-picture  ergodic  nibble  zooming  trees  fedja  reflection  retention  meta:research  wisdom  skeleton  practice  prioritizing  concrete  s:***  info-dynamics  knowledge  studying  the-trenches  chart  expert-experience  quixotic  elegance  heavyweights 
june 2016 by nhaliday
How to pass a programming interview - Triplebyte
Mostly intuitive (eg, I had also planned to interview in reverse order and use Python but mention C++ experience), but still very good advice. Summoning/faking enthusiasm will prob be hardest part for me.
programming  career  jobs  tech  recruiting  advice  checklists  working-stiff  interview-prep  system-design  minimum-viable  pls  jvm  python  c(pp)  practice  education  signaling  judgement  prioritizing  list  top-n  metabuch  objektbuch  🖥  transitions  techtariat  org:com 
march 2016 by nhaliday

bundles : disciplinegrowthng

related tags

ability-competence  accretion  advanced  advice  aggregator  akrasia  albion  algorithms  anglo  aphorism  art  big-picture  biodet  books  brain-scan  britain  c(pp)  c:***  canada  career  cartoons  chart  checklists  cocktail  cog-psych  commentary  comparison  concrete  contest  contrarianism  core-rats  cost-benefit  cracker-econ  creative  critique  data  data-structures  database  decision-making  dimensionality  discipline  discussion  distribution  divide-and-conquer  driving  eastern-europe  econotariat  education  elegance  enhancement  ergodic  error  evidence-based  expert  expert-experience  exploratory  extratricky  fedja  fitsci  flexibility  foreign-lang  games  generalization  gowers  graph-theory  ground-up  growth  guessing  guide  habit  heavyweights  hi-order-bits  hmm  hn  info-dynamics  info-foraging  inhibition  init  input-output  intelligence  intervention  interview-prep  intuition  investing  iq  iteration-recursion  jobs  journos-pundits  judgement  jvm  kaggle  knowledge  labor  language  learning  lens  lesswrong  let-me-see  links  list  long-term  machine-learning  marginal  math  math.CO  math.CT  mathtariat  meta-analysis  meta:research  metabuch  mindful  minimum-viable  multi  music  music-theory  neuro  neuro-nitgrit  neurons  news  nibble  nootropics  nostalgia  notetaking  null-result  objektbuch  oly  oly-programming  optimization  ORFE  org:bleg  org:com  org:econlib  org:mag  org:med  org:nat  organization  overflow  pdf  philosophy  play  pls  practice  preprint  presentation  prioritizing  problem-solving  productivity  programming  psych-architecture  psychology  puzzles  python  q-n-a  quixotic  ratty  rec-math  recommendations  recruiting  reflection  regularizer  reinforcement  research  retention  review  roadmap  roots  russia  s:***  scholar  scholar-pack  sequential  signaling  simulation  skeleton  sleuthin  social-psych  social-science  soft-question  software  spearhead  speed  sports  stackex  stats  stories  strategy  strings  study  studying  stylized-facts  success  summary  synthesis  system-design  tactics  teaching  tech  techtariat  the-monster  the-trenches  thinking  time  time-use  tools  top-n  tradeoffs  transitions  transportation  trees  tricki  tricks  tutorial  tutoring  unit  usaco-ioi  variance-components  video  visual-understanding  visualization  vulgar  wire-guided  wisdom  workflow  working-stiff  yoga  zooming  🎓  👳  🖥 

Copy this bookmark: