Блог пользователя bashkort

Автор bashkort, 10 месяцев назад, По-английски

https://www.benkuhn.net/thinkrealhard/

When I started programming professionally, I was really excited about figuring out how to become a better programmer. (I still am!) So I asked a lot of people, “how can I become a better programmer?” But nobody gave me very satisfactory answers. They would tell me to play around with obscure programming languages, or study algorithms, or read papers, or do a bunch of other stuff that felt tangential and didn’t really move the needle.

In retrospect, I wish those people had just told me “think real hard.” I was looking for an easy way out—One Weird Trick to Programming Better—but programming is too hard for that.

That’s my preferred reading of the Feynman Algorithm: there is no one weird trick.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +234
  • Проголосовать: не нравится

Автор bashkort, 14 месяцев назад, По-английски
  • Проголосовать: нравится
  • +124
  • Проголосовать: не нравится

Автор bashkort, 16 месяцев назад, По-английски

This post assumes you're super ambitious.

But don't take any advice too seriously -- we're all different. This is simply what worked for me and might work for you. Choose your own path.

Useful Links

How do I start?

Advice: join a great community (school, club, ...), try solving problems, and find someone who can answer your silly questions.

I wouldn't have started CP if not for my school. Of course I love solving problems, but there's a thing I love too -- competing (and winning :D). Initially, CP was just an interesting way to try to win my classmates. Only as I've explored the subject deeper I started to love it for its own sake.

Do you really love competitive programming?

Be honest with yourself here. No need to do it if you don't love it. Though make sure not to give up while you're a novice, try to get some understanding of what competitive programming (CP) really is.

Rule of thumb: you love something truly if you enjoy even the parts that others find strange. Debugging, for example.

My level is X. What should I practice?

See what I did when I was at your level:

Do you need math?

Informatics is a part of maths, mostly similar to combinatorics. You need basic maths, and the more -- the better.

I did some math until 7th grade (qualified for national junior math olympiad), though didn't practice too seriously. Later on I was worrying I've quit too early, but now I am sure I quit on time -- if I would have continued doing math in 8th grade, I might not have qualified for the IOI the following year.

On Talent vs Determination

Too much is said on the topic, I don't want to dive deep here. I genuinely believe that we severely underestimate ourselves, and anyone (with enough time and effort) can achieve anything.

Even if you feel you don't perform well at CP, remember that the real IQ test is the ability to get what you want from life. Probably being better than others on codeforces is not your end goal.

When to read editorials?

Find this fine line yourself. I used to be at the far end of the spectrum here -- didn't read editorials at all, as every editorial felt like a lost battle to a problem.

One of the cons of the approach is that I have hundreds of problems that I've tried to solve, but that were left for better times that never came :D. They are marked with yellow in my OI Checklist.

Now I try to read the editorials for the problems I know I won't be coming back to.

How not to worry?

You have to worry. Worrying is simply caring about the result. If you are 100% sure in yourself, you'll start to slack off -- skipping upsolving, editorials, etc. Be 99% sure in yourself.

If you don't worry, you work as usual. And ordinary effort never leads to extraordinary results.

Motivation vs Discipline

They are inseparable. Motivation comes from "motive". What's your motive for practicing CP? If it's genuine, discipline will follow.

In my case, I wanted to get to IOI so bad that I quit all social media, games, and youtube. Didn't come back :)

Further watch: 3b1b's commencement speech.

How not to burn out?

I don't believe in burnout. You might burn out solving Millennium Prize problems without making progress for decades. You can't burn out doing CP for just 3-4 years and tracking your progress easily.

And even if you got tired, it may be because 1) you've found something more interesting, or 2) you didn't really like CP in the first place, or 3) you're not seeing the progress. If that's the case, maybe you should really try something new.

What if I have no progress?

If you are working hard enough and there's no improvement, just wait -- often progress comes in leaps. The rating might stand still for a year, and then jump 100 points in one contest. See the rating graphs of bashkort, never_giveup, allvik66, green_gold_dog, ...

Rule of thumb: track progress in months, not days.

How much to practice?

Rule: In any field, you can't do great things if you're not thinking about it in the shower. credits

I practiced only when I wanted to. In other words, always :) Walking back home -- thinking about a problem. Showering -- thinking about a problem. Half-asleep -- thinking about a problem.

How to set goals?

Rule of thumb: if you are not embarrassed to say your goal out loud to your friends, the goal is not ambitious enough.

Another rule of thumb: if you don't fail at least 50% of your goals, they are not ambitious enough.

Last rule of thumb: set goals such that if successful, will make the rest of your career look like a footnote.

How to find a great community?

Get to a great (boarding) school. Or leverage the biggest advantage over prior generations -- the internet. Find friends, join serves, etc.

Be weird

Even if you are in a great community, be weird. Most of what people around you believe and do is wrong. credits

Read blogs

A large part of my practice was reading codeforces blogs and finding novel tricks. If I was starting again, I'd just read the whole Codeforces Catalog. Here's the funniest trick I've found :)

Know yourself. Self-analysis

Know your areas of genius and weak spots. Get better at the former and try to eliminate the latter. I keep a diary to help me analyze that.

What's after competitive programming?

This is just the first step. Make sure CP is not the last cool thing you do.

"The ability to play chess is the sign of a gentleman. The ability to play chess well is the sign of a wasted life" -- Paul Morphy.

AMA

If you have any interesting questions that weren't answered, write them in the comments. I might answer them if I have time :)


If advice here helped you, I'd love to hear about it (you may PM me :D). A lot of the ideas mentioned were found by reading various essays -- mostly at paulgraham.com/articles.html. In particular, if you want to do great things, make sure to read paulgraham.com/greatwork.html

Other advice on CP you may find useful: Um_nik's, Radewoosh's, ...

Полный текст и комментарии »

  • Проголосовать: нравится
  • +390
  • Проголосовать: не нравится

Автор bashkort, 21 месяц назад, перевод, По-английски

Hi everyone! Codeforces Month Of Blog Posts Pt. II has ended at 15th of November. Sorry for the delay of the results!

Overall, we (together with orz and artew) raffled $800! I've chosen 6 blogs to be named winners, and here they are: TeaTime, Iura_Shch, asdasdqwer, CelioPassos, catalystgma win $150 each and cadmiumky wins $50, congrats!

Here are the links and brief reviews of each winner blogs!

Sorry for those who wasn't able to win this time! Make sure to check out every blog in the comment section of the announcement!

Thanks everyone for taking part in the challenge! Hope you liked it :D

Полный текст и комментарии »

  • Проголосовать: нравится
  • +212
  • Проголосовать: не нравится

Автор bashkort, история, 2 года назад, По-русски

TL;DR: Опубликуйте интересный блог на Codeforces до 15 октября и выиграйте $800+1!

UPD: Мы решили продлить конкурс до 15 ноября!

Этот блог вдохновлен месяцем блогов на Codeforces от peltorator.

Привет всем! Прошлый конкурс помог мне тогда, когда я больше всего в этом нуждался. Так что теперь я хочу отплатить сообществу обратно — организовать Codeforces Month Of Blog Posts еще раз!

Вступление

Мое мнение о блогах совпадает с мнением peltorator'а — я большой фанат Codeforces, он почти что заменяет мне социальные сети, а блоги — одна из лучших его частей! Многие люди ждут лучшего времени для публикации своих блогов, откладывают его на потом — теперь это время пришло!

Правила и сроки

Правила просты:

1. Опубликуйте что-нибудь на Codeforces (с переводом на английский язык) не ранее 10 сентября (00:02 UTC) 2024 года. Мы ищем новые идеи / новые взгляды на темы, которые мы ещё не видели — всё на ваше усмотрение. Это может быть даже что-то вроде этого комментария! — Думаю, вы поняли идею: напишите что-нибудь креативное. Если подумать, то одним из лучших постов прошлого конкурса был, наверное, его анонс :D

2. Отправьте мне личное сообщение до 15 ноября (00:02 UTC) 2024 года со ссылкой на ваш пост на Codeforces. Я буду благодарен, если вы также включите в начало своего поста пояснение в одно предложение, объясняющее, что вы участвуете в даном конкурсе, чтобы больше людей могли узнать об этом и поучаствовать.

Призы!

Победитель получит денежный приз — 350+1 долларов! Участник, занявший второе место, получит 250 долларов! Третье место получит 150 долларов! Четвертое получит 50 долларав :)

Если вы готовы увеличить бюджет для победителей — также пишите мне в личные сообщения :D

Процесс выбора победителя пока не определен, я могу придумать два варианта: выбрать победителя самостоятельно, либо выиграет блог, набравший наибольшее количество лайков. Пишите свое мнение в комментариях

Аутро

Поехали! Надеюсь, будет хотя бы один отличный блог, так что моя инициатива не останется бесполезной :D

801$ — это не маленькая сумма, поэтому я верю в вас, сделайте что-то новое, сделайте что-то, что нужно людям!

Может быть, стоит проводить подобные конкурсы ежегодно? Что-то вроде «Codeforces Year of Blog Posts»? Пишите ваши идеи в разделе комментариев!

P.S: Загляните в LI2 Contests — бесплатный курс по информатике!

UPD1: Мой хороший друг решил дать дополнительные $200 для победителя! Он настоял на том, чтобы остаться анонимным D:

UPD2: Остался один месяц! Кроме того, давайте поблагодарим artew за приз в $100 за третье место.

UPD3: Осталось меньше месяца! Кроме того, давайте поблагодарим orz за увеличение призового фонда на $200, которое мы решили равномерно распределить — теперь и четвертое место получит приз!.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +479
  • Проголосовать: не нравится

Автор bashkort, 2 года назад, По-английски

Hi everyone!

I'm thrilled to invite you to the LI2 Contest — free collection of high-quality contests to master every topic — here, on Codeforces! Group Link! Click here!

Current avialibale list of topics:

Loops; Prefix Sums; Sortings; Binary Search; Recursion; Sweepline; Two Pointers; Linear Data Structers (stack, queue, etc); Graphs, DFS, BFS; Dynamic Programming; DSU; Shortest Paths; Minimum Spanning Tree; Greedy; ...

Why this course?

I believe that finding high-quality problems is the hardest part of practice, especially when you are only getting your feet wet with competitive programming.

There are many lectures and articles, but not so many open collections of problems for each topic.

Time-tested

I guarantee you that this course is time-tested, I used it myself.

LI2 is short for Boarding Lyceum №2 in Kazan — the school I study in. So we've been using this course for years and I can proudly say that we are one of the best schools for studying informatics in Russia, alongside with several other schools in Kazan, Chelyabinsk, Moscow and St. Petersburg.

Some notable people that completed the course from our school are: bashkort, Nutella3000, asafiul, isirazeev, M_bolshakov, Rip_robot, nocap, Pavarishko, lishy2 and many many more!

How To Practise Competitive Programming — The Russian Way

There are two main "How To Practise Competitive Programming" blogs that I really love: Radewoosh's and Um_nik's.

I agree with them both, but want to present the other way that is used in Russia. So here's a brief carrer of a competitive programmer in Russia:

  1. Get into a great school (optional, but much recommended)
  2. Start doing CP in school and/or at weekly held lectures + contests sponsored by big tech companies (like Yandex & Tinkoff)
  3. Attend CP camps in Sirius or camps like SIS — Summer Informatics School.
  4. Solve problems provided by these camps and tech companies
  5. Win a prize medal at the Russian OI
  6. Go to any university you want

As you see, almost all of them are very lucky that they have mentors who provide them high-quality contests. They don't have to worry about what problems to solve. Believe me, I'm an IOI gold medalist from Russia and know the system extremely well.

And these contests (in the LI2 group) are taken from the camps mentioned above, isn't it great?

As a side note, if you don't want your problem to be here, please, contact me right away. To be honest, I believe that they are not kept in secret since everyone in Russia knows them, but still, if you have any disagreement with me sharing your problems — PM me.

Announcement and Discussion For Each Contest

There's an announcement for each contest in the group's blog section. In the blog you will find lectures & artices suggested by me, as well as disucussion in the comment secion under every blog, where you can help each other!

Articles and Lectures include links to pashka's youtube lectures, usaco.guide articles and some cp-algorithms.com articles.

I believe that usaco.guide is one of the best, if not the best, place to study algorithms and solve problems. But I don't see any problem in using both usaco.guide and this course, the more the better!

Additional Practise

But let's be honest, you won't get anywhere without additional practise. It can be codeforces contest or previous olympiads. When I started completing the course, I was practising on past Russian olympiads. Without them I wouldn't get anywhere. So you also need to find other ways to practise additionally not just topic-based contests. Codeforces Rounds are a great way to practise!

For reference, this is my raiting graph when I started completing the course:

What to do now?

Get into the group by clickling on this link. Solve the problems and get better, share the group with your friends!

If you have any suggestions, please, let me know in the comments!

Thanks!

I didn't make the course myself, I only translalted it and published it.

  1. Huge thanks to MikeMirzayanov for making this hole thing possible!
  2. Huge thanks to ilsaf13, the informatics teacher in our school, for maintaining this hole thing and helping us with our CP journey!
  3. All of the people who prepared problems over the years!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +152
  • Проголосовать: не нравится

Автор bashkort, 3 года назад, По-английски

Hello everyone! As you might know, IOI 2023 will start at the 28-th of August in Szeged. Let's share your predictions here!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +138
  • Проголосовать: не нравится

Автор bashkort, история, 5 лет назад, По-русски

Здравствуйте! Дан неориентированный граф. У меня возник вопрос:

Если есть вершины U и V и они в одной компоненте рёберной двусвязанности, а так же ребро E, которое так же в этой компоненте, то правда ли то, что есть путь, в котором ни одно ребро не встречается два раза, идущий из U в V и проходящий через ребро E?

Полный текст и комментарии »

  • Проголосовать: нравится
  • +3
  • Проголосовать: не нравится