Get Time
Know your hero: yuhch123

By innocentboy
TopCoder Member

Yu Huacheng, known at TopCoder by his handle yuhch123, has the honor of being the second target after ahyangyi while still studying in Hangzhou No. 2 high school. He has also been awarded a gold medal at both the CNOI 2007 (Chinese National Olympiad in Informatics) and the Hua Luogeng Cup (a popular mathematics challenge in China). In addition, he's also a member of the Chinese National Training Team for the IOI. Yu seems to have good company, both on TopCoder and in China; all 3 targets from China at the time of this interview - ACRush, OpenGL, and yuhch123 are from the same Zhejiang province. Let's get to know him better in his own words.

Q: When did you start programming?
A: I learned Logo in Grade 4. But at that time I couldn't even understand recursion. I could just write a short program which could only make the turtle draw very simple things. When I was in Grade 6, I attended a programming class in which they taught Pascal. One year later I started to learn algorithms. I think it was at this time that I really started programming.

Q: How did you learn about TopCoder? What attracted you to TopCoder?

A: The programming class that I attended in Grade 6 lasted until Senior 1 (Grade 10). sghao126 was the teacher when I was in Junior 3(Grade 9), and he told us about TopCoder. TopCoder's just, interesting, and unique competing rules attracted me a lot :). It provides me with good opportunities to improve my coding skills. (It's disappointing that I didn't figure out it until last year :( )

Q: What is(are) your proudest TopCoder moment(s)?
A: It was SRM 393. I worked out the hard which had only 3 submissions passed system test. And I was the fastest of them. It was the first time that I had the fastest time on some problem, although I was second fastest 3 times before. (All of them were Div-1 hard. Probably because there were less passed-system-test submissions, it was easier to get some good place :) )

Q: What was the toughest part you had to overcome in order to become a target?
A: It was programming accuracy I think.

Q: What was your reaction when you saw your name as a target?
A: I became a target at TCO round 3. I felt I got tonsillitis and some fever that afternoon. So when I saw it, I thought "Am I dreaming? It seems not. It's a hallucination because of the fever? Probably yes." After 0.5 second, I realized it was not a hallucination. :P

Q: What is your next goal on TopCoder?
A: Keeping the target, and break 3200 if possible.

Q: What kind of problems do you enjoy solving the most?
A: Math problems. For example, SRM 387's Div I hard and SRM 377's Div I hard.

Q: Given a chance to change one rule in TopCoder, what would you change to make it more interesting?
A: If some problem has less than 10 (or some other number) submissions, everyone can challenge them. If there are few submissions, the challenges on that problem will also be few. It makes a chance for anyone whose program fails in very few cases to pass system test. The problem setters can't always know every mistake contestants make.

Q: I notice many Chinese high school coders are doing great on TopCoder. Do you have a huge community of programmers where you can help each other solve problems and improve?
A: Every year we have the National Olympiad in Informatics (Summer Camp) in summer holidays and the Winter Camp in winter holidays. The NOI lays stress on competing while the Winter Camp lays stress on training. During the Winter Camp, we have some classes for about 1 week, and all national training team members prepare a 8-minute (it was 15 minutes before) lecture to share something with others. Both in the Summer Camp and the Winter Camp, we exchange contact information which is more important I think.

We can discuss problems after the Camps, its time isn't O(1) while the time to discuss during the Camp is. :P

Q: Who are the other TopCoder members to influence you the most?
A: XuChuan, sghao126, gy (they taught me in the programming class), SpaceFlyer and LiuYuChen(they're my school mates, and we often discussed problems). Moreover sghao126 let me know the importance of coding skill. Thanks to all of them :).

Q: What are other places apart from TopCoder where you solve problems for practicing?
A: Apart from TopCoder I usually go for Ural [ed: as of writing, yuhch123 has completed over 400 problems at Timus], SGU and SPOJ.

SIDE NOTE: Here are the links to yuhch123's profiles on Ural, SGU and SPOJ -

  1. On Timus Online Judge
  2. On SGU
  3. On SPOJ

Q: How do you practice to improve your programming skills? What advice would you like to give for the beginners to improve?
A: Algorithm skill is more important than coding skill. I usually solve problems at online judges to improve algorithm skill, and attend SRMs to improve coding skill. (Although algorithm skill is more important than the latter, but the difference of importance between them isn't that large. So do not leave TopCoder. :P )

Trying to solve problems on your own is also important. During the process, one can learn how to design test data (especially tricky ones), how to find the bug quickly and so on. I will not ask others unless I really can't solve it.

Q: What do you do for fun other than programming?
A: I usually play table tennis and run a middle distance running most days of the week.

Q: What University are you planning to attend in future? What is your dream ACM ICPC team :) ?
A: I will attend Tsinghua University this September. I'm not sure if I will compete in ACM ICPC competitions.

Q: What is it that you don't like about ACM ICPC competitions?
A: Probably it will take too much time to practice and make me miss some important things. (If I attend it in the future, then it's because I don't want to miss some other important things. :))

Q: What according to you is more important to excel in competitions - practice or theoretical knowledge?
A: I think if in the competition one is allowed to use pre-written code, theoretical knowledge is more important, otherwise practical knowledge. For example, in OI competitions (Olympiad in Informatics), one can't use any information other than that in the test paper and in the brain. So it's not very possible to write something extremely difficult to code but with relatively good efficiency, such as Voronoi diagrams, dynamic trees and so on. They perform well in theory while bad in practice. But in the ICPC style competitions, it's the opposite. You can just type whatever data structures and base algorithms following the paper without considering what if I make any mistakes and can't find it.

Q: Would you like to recommend any books/research papers/articles on algorithms which you have found interesting?
A: The well-known Introduction to Algorithms (CLRS) is an extraordinarily good book. It introduces a lot of usual data structures and algorithms, and almost all of them have a great use in competitions. Moreover TAOCP (The Art Of Computer Programming) and Concrete Mathematics from Donald Knuth are great. But it's pity that I haven't had enough time to read them fully. :(