Inspirational!
I plan to mention it a little later. The latter: What is effective training?
I want to explain my understanding.
Many acmer beginners have been told that they want to do more questions. If they do more than 500 questions, they will be changed. In fact, this is neither a sufficient condition nor a necessary condition.
In my opinion, in general, the gap in the Ability of College Students in our general schools will not be too large. In this case, training and learning methods are particularly important.
In fact, the 500 question is just a sign, and only indicates that you do ACM-ICPC has a certain time,
What is the purpose of our training? I think there are four points
1. improve programming capability
2. Learning Algorithms, (Reading and reading papers, including verifying some questions)
3. Be prepared to face the coming challenges(Familiar with Question Types and adjusting mentality)
4. Inspiring thinking.
Here are four purposes: From the Perspective of training, the importance gradually decreases; why?
Because the above factors are the foundation behind the scenes. But the subsequent purpose. I think the first three will ensure that you will lose the questions you can do, even if the problem is never done, you can also lose the questions that are moderately difficult.
Questions that require certain difficulty of thinking must be based on the previous three and are post-training, and can only be adjusted occasionally in the middle. Of course, my mind is terrible, and I have no right to speak. You can despise me.
Here I want to talk about the 2nd point.
For algorithms, I found that many weak school acmer players do not focus on algorithm learning.
Some of the points to be discussed below may be quite old-fashioned, but I would like to explain them to you in comparison with my own example at 035.
<1> algorithm learning is an aspect to be promoted or promoted in the ACM competition.
I remember passing by someone's blog. He said that he met Dijkstra while playing the game. He didn't make it out, and then commented ): I don't have to spend time figuring out this algorithm. "This" may mean that it is not practical, right? So I don't want to comment on it (it's also a discussion about science and engineering ). But at least one thing needs to be clear: ACM-ICPC competition about computer science, computer science is the algorithm science, computer algorithm Dijkstra has an important practical and enlightening significance, therefore, you must take the test in the competition.
To win the prize, you must learn this algorithm. You may think that you have a high IQ, but the ACM-ICPC competition itself is not an intelligence competition, the competition is to let you learn these things, so if you do not want to learn, I think there is no need to participate. Speaking of this, it may be a little far away from the question, but I hope the above analysis can draw a basic conclusion: if you do not want to learn algorithms well, there is no need to come to the competition.
<2> it is difficult to use templates.
Now many of our weak school ACM-ICPC players rely on templates, to be honest, I am also very dependent, but at least I know a little, this is wrong, in a sense, this is a manifestation that you have not understood algorithms. It also seriously affects the encoding speed. I have seen huicpc035 in the competition, he has never seen templates, all on-site knock, once there was a picture of the strong connectivity component + contraction point + dyeing + What's the question, I did it in their machine room, And I copied the template. The result was a total of one and a half hours. After 035 made it clear that the algorithm was complete, it was estimated that it would be over 30 minutes. By the way, let's gossip about him: Kevin and I used to get a nickname for him when I went to the lake training team. He typed a male (he should not know ). The reason is that he is very loud and fast when he knocks on the keyboard.
I don't think it is a waste of time to knock on the Code. A cow once said: because there may be different errors in every knock, it is a good habit to not use a template. When I first learned the dancing Link, I typed out the code, and then I referred to the previous code for the following questions. Later, I basically copied the Code directly. Now, when someone asks me about the dancing link algorithm or related questions, I am confused.
Therefore, it is not good to use a template. Sometimes you may use a template for some reason, but at least you need to know that this is wrong and you have the opportunity to correct it.
<3> deep learning required
Talents like acrush, NLP, ahyangyi... and so on from the National Team cannot say what is the comparability between us and them. But their learning method should still be worth learning, their learning method of course we do not get the words and deeds, but from their papers in the national team training and their trajectory after the ACM-ICPC, it can be reflected. That is: deep learning.
In fact, this may not be powerful enough for me, because I am also lacking in this aspect. I will try my best to explain my thoughts.
First of all, I think acmer should not stay at the code implementation level, but should have a clear understanding of algorithm ideas and have better logic in correctness analysis. Because the implementation of code on the Internet may overwrite the conciseness, aesthetics, and ideas of the algorithm itself. Therefore, we lose some understanding of the algorithm as a whole. For example, some Dijkstra algorithms are not directly modeled based on dijskstra, but you need to modify the algorithm. If you do not really understand the algorithm, you will not be able to understand it.
Why do I always talk about the Dijkstra algorithm, because many people only know that the template is used, and the template is not good. In the Dijkstra implementation I see, only the code of czyuan_acm is well written. It doesn't mean anything else is wrong, but there is indeed a problem and it is opportunistic.
Therefore, we need to read papers and books, especially English books, to find out its essence. On the other hand, only in this way can you learn something beyond ACM-ICPC, give you some inspiration-otherwise you will quickly forget it.
As far as I know, 035 has read at least dozens of training team papers, orzorzorz, and cut out examples.
<4> independent thinking
I am also ashamed of this because I lack independent thinking. I will not search for problem-solving reports if I have many questions, so my data search capability has become very strong. 035 and many Daniel do much better than me in this regard. when they encounter problems, they are not very eager to come up with the questions. They may come up with questions again at intervals, one day I figured it out, and then there was basically no problem with this type of questions.
However, I am more "vanity". I don't want to think too much about the questions I have done, so I want to try to speed up the AC as much as possible, so I am eager to read the problem-solving report, this leads to a problem that is not mentioned in the report on solving important things, And I ignore them without thinking about it. In this way, I still won't do it. When I discuss a problem with 035, I don't usually look for him directly for code, but when he doesn't understand it, I 'd like to ask me more about the general idea, instead of the Code.
At the end of last year's ACM division, I found that 035's hard work capability had obviously exceeded my level. Looking at his current questions is already quite abnormal, and almost all of them are less than 100 AC. I have basically no idea about these questions. Even worse, the problem solving report cannot be found. 035 the current status reminds me of a person. I don't know if everyone knows it or not: wangfangbob, his ability to cut BT questions is also shameful.
<5> make meaningful questions
1. Do not use water questions. The water questions here are defined as: the practice can be seen at a glance, and the implementation in the middle is expected to have no too many questions.
2. It is a question that can strengthen your recent learning.
3. You won't, but you should have questions.
At the same time, it is said that some less representative questions can be done, because the competition is not helpful. (Of course, the purpose of my participation in the competition is very utilitarian, and non-utilitarian people are not talking about it.) just now, I compared my number on poj with his number, he is AC, but I am not AC, it is basically a problem. I am AC, he is not AC, it is generally a water problem, see I want to cry, 5555.
One more point: a large number of AC users do not necessarily mean water problems. For example, there are only a few AC users in the field competition, this type of question is often a good question that is difficult to think and difficult to code. This kind of question should be done seriously. A senior said: there are only so many typical questions, one less.
<6> estimate the time required for a certain training.
I think the network stream I learned is an example. I started learning the network stream two months before the competition, and I started learning the cost flow one month ago. But for me, the network stream thinking developed over the past two months is still insufficient (although many questions have been made). In particular, such questions are often used as medium and difficult questions and won't allow you to access them casually. Therefore, the network stream in the Beijing Division was not coming up at the time-it is utilitarian to say that learning the network stream has not achieved good results.
So now, I can skip the network flow. If you want to learn something that is more difficult, and you must do a good job of it, you should study it early and comprehensively. You must train for a long time to cultivate this kind of thinking. For example, if you do not study calculus at ordinary times, just a week before the test, I think it is very difficult to score 90 points.
Of course, this depends on my personal situation. My understanding should be a medium level, and I should be able to learn more quickly if I am a cow.
<7> degree of training
I sometimes brush up all night. I don't know if huicpc035 has this habit, but I didn't see him all night.
In my opinion, it is still not good to brush the body all night or do questions for too long. Why are we so enthusiastic about doing this? We are interested, but a person's success depends not only on interest, but also on self-control. This is the same as playing games. Games are so interesting that we often stay up all night-ICPC questions are too interesting, so sometimes they stay up all night. In addition, most of the time, because the AC cannot be a question, it is necessary to get angry with the anger to go to bed, so if you are not careful, it will be all night.
As a matter of fact, it doesn't necessarily work well if you stay up all night. It just shows that your interest is very high. Overnight training may disrupt your schedule, disrupt your biological clock, and affect your short-term or mid-term training plans. In addition, when you are tired, you often only have the desire to answer an AC question, but have completely lost the aura of an AC question. So, I suggest, acmer must be reasonable arrangement of work and rest, can control, this is not only good for you to do ACM-ICPC.
In short, effective training is very important. Only through effective training can you get what you deserve to participate in this competition.
In addition to 035, another thing worthy of everyone's learning is Richard XX. I also admire him. I don't think he is a genius. I think he makes himself excellent with all-round efforts, you can see his learning history through his blog.
Finally, let's talk about hard training. I mainly want to say this to the ACM team in our school:
Objectively speaking, many famous schools in our school are listed on the list (I am more advanced than water ). It's actually pretty clever, but it's not as clever as acrush, right? The sgu is fully occupied! ACM is not an intelligence test. You can skip it without doing anything. Of course, I'm not saying how many questions must be done, but if you think you can use them all at once, in probability, You're 90% wrong. I'm a engineering student, I believe in probability, not miracle.
I think 035 is worth learning. I like to talk about it. Sometimes, when talking about a question, I often accidentally talk about other topics, 035 is determined not to talk about things in disorder. Apart from discussing QQ, I usually observe it as a cruel training. In retrospect, I regret it. The time spent on QQ and the Internet is used to learn new things, and the result may be better.
ACM-ICPC is not the whole of university life, nor the whole of algorithm, you can spend time to do other research, do projects, or take part in student work (I prefer acmer that has a well-planned life and career); but if you did not invest all of your time in ICPC, then in your ACM-ICPC career, only regret.