This book can be used as an experiment and reference book for algorithm design courses, as well as a training manual for programming contests. It contains 247 problems selected from ACM-ICPC programming contests and other programming contests. There's detailed analysis for each problem. All problems, and test datum for most of problems will be provided online. The content will follow usual algorithms syllabus, and problem-solving strategies will be introduced in analyses and solutions to problem cases. For students in computer-related majors, contestants and programmers, this book can polish their programming and problem-solving skills with familarity of algorithms and mathematics.