How can I solve the SPOJ bitmap problem

Four years at the university, my major is computers,
But everyone knows that the school's courses and majors are not so coherent and form a system.
The university has basic Java, computer theory, internet technology, JSP, and C language courses.
But the knowledge points aren't enough for it to be an advanced relationship, and there's not a big project to do.

Today I'm going to share how to learn technology for free in school and get some coding skills.

Programming books

This is a book I read in college.

Design pattern

Here's a quick introduction:Design patternIt is a generally repeatable solution to common software design problems. It can speed up the development process by providing proven development examples

Head first design pattern

Head First Design Pattern, an introductory book, is very readable, from simple to deep!
There are 14 chapters. Each chapter contains several design patterns that completely cover all 23 design patterns of the four-person version

Zen of Design Patterns (2nd Edition)

Zen of Design Patterns (2nd edition) An introductory book in which you can learn in a concise way which design patterns are available.
is very interesting and easy to understand, but the explanation is extremely strict and thorough. In-depth interpretation of 6 design principles and precise definitions, application methods and best practices of 28 design patterns.

Objective-C Programming: Analyze iOS Design Patterns

Objective-C Programming Method: Analyzing iOS Design Patterns Simply put, the structure of this book is clear and easy to understand. Excellent value for money. A must-have book for optimizing Objective-C programming practice.

Big Talk Design Pattern

Big conversation about design patterns Through dialogue between veterans and newbies, we learn more about the meaning of design patterns and what they should look like. Summary of 23 design samples. Too many examples, some programming basics are required.

Tip: The Dahua book series has just been updated on my online disk. If interested, you can download them from the online disk.


Design_patterns introduces many design patterns, you can make a reference, and there are plenty of external links that anyone can learn for free!

In fact, there are many things to be said about design patterns, not just those mentioned in the book. We also apply design patterns in our usual coding process, which can not only improve development efficiency but also give us a perfect programming idea. System.

I still want to say a few wordsDesign pattern This is a very important part. If used well, you can make your project structure clearer, streamline your code, and reduce communication costs. Lots of people don't take it seriously. I believe that through the basic books above, you can get a general understanding of the magic of design patterns!

Basic ability

Learning to program is like building a building. All you have to do is lay the foundation in order for you to move forward. A good foundation is the foundation for growth. We have to be stable and stable step by step!

About the cultivation

Self-cultivation of the programmer

Programmer Self-Cultivation A very good basic book, containing many basic theories and knowledge, can greatly improve your understanding of hardware software.
This book describes various events that occur while compiling, linking, and running an application. Use simple pictures to explain complex theoretical knowledge, very nice, highly recommended!

How the network is connected

Establishing a connection to the network Start with the browser entry and learn step by step how to assign the IP address via DNS, the TCP / IP working principle, the network card driver, the firewall and the cache server with pictures and text and that Explain the whole picture of the network.

How does the program work?

How does the program work? Based on the internal structure of the computer, the binary file, the memory, the data compression, the operating system, the assembly language, the C language basis and the relationship between the operating system and the program are explained step by step. Let us understand what happened behind the opening of the program ~

How is the computer running?

How does a computer run? By studying the nature of computers, engineers are becoming more interested in computers. You can quickly grasp the essentials and use them flexibly when confronted with the latest complex technologies.

This is a series of books that you know by the name. They are based on the most basic theory and practice to teach you the principles of computers, cell phones and intelligent hardware. From hardware to software, they are explained very clearly with pictures and texts and are highly recommended! 👍

Detailed TCP / IP Volume 1: Protocol

Detailed TCP / IP Volume 1: Protocol If you wave your hands three times, four handshakes, why such a scheme and what TCP / IP means, you will understand what you need if you look at it.

Modern operating system (3rd edition of the original book)

The modern operating system (the third edition of the original book) includes Windows Vista and the latest Linux / UNIX operating system. Many examples are given. It can also be involved in university courses. Read the entire book like a novel!

Deep understanding of computer systems (3rd edition of the original book)

The in-depth understanding of computer systems (the third edition of the original book) is geared towards little knowledge suitable for some advanced and advanced programmers. You can understand a lot of knowledge that you never even thought of, and there are plenty of references out there on source code analysis

Programming Skills Challenge: 57 programmer skills test questions

Programming Skills Challenge: 57 Programming Skills Test Questions How will you solve problems when you run into problems? It can improve the basic programmer's skills and is very interesting.

About machine learning

Quick Start Python Programming: Automate tedious work

Python Programming Quick Start: Automate tedious work. Python is an interpreted, object-oriented, high-level programming language with dynamic data types. In addition to providing a basic understanding of Python, this book also contains many examples of improvements. It's a very good Python Introductory Book.

Python Network Programming (3rd Edition)

Python Network Programming (3rd Edition) A comprehensive introduction to the latest SSL support in Python3, writing asynchronous I / O loops, using the Flask framework to configure URLs in Python code, cross-site scripting and Cross-Site-Request-Forgery-Attack-Website-Principles and -Protection-Methods etc.

Python network data collection

Python Network Data Collection The first part focuses on the basic principles of network data collection: using Python to request information from a network server, performing basic server response processing, and automated interaction with the website. The second part explains how you can use web crawlers to test websites, automate processing, and access the network in other ways.

Machine learning

As an important branch of artificial intelligence, machine learning covers all aspects of the basics of machine learning as far as possible in terms of content. This book is an introductory book, but this book is more suitable for undergraduate and graduate students in science and engineering who are in their third year or above, as well as students with similar backgrounds who are interested in machine learning.

Via JavaScript

JavaScript Advanced Programming (3rd Edition)

JavaScript Advanced Programming (3rd Edition) This book is the latest edition of JavaScript's super bestseller. ECMAScript 5 and HTML5 both won the standards battle by formally adding a large number of proprietary implementations and client-side extensions to the specification, while also adding many new features to JavaScript that are suitable for future development.

JavaScript You Did Not Know (Volume 1)

The JavaScript You Didn't Know (Volume 1) The JavaScript You Didn't Know series is designed to enable the inexplicable JavaScript developers to take the challenge of digging deep into the language and figuring out the purpose of each component of JavaScript. This book introduces two themes in the series: "Scope and Closure" and "This and Object Prototype". After mastering this knowledge, you can easily understand it regardless of technology, framework and popular vocabulary.

Tip: As a series of books, I will not list them individually, they can be downloaded onto my online disk

JavaScript language essence

The Essence of the JavaScript Language This book distinguishes the good and bad properties by analyzing the JavaScript language to extract the subordinates of JavaScript that are more reliable, readable, and maintainable than the entire language. Set this up so that you can use it to create really scalable and efficient code.

Learn JavaScript the easy way

Learn JavaScript in Simple Language "JavaScript in Simple Language (Photocopy)" guides you through the exciting process of creating interactive web pages. What do you learn from "Understanding JavaScript (Photocopy Edition)"? So, are you ready to take the plunge from writing static web pages with HTML and CSS to writing dynamic web application scripts? Here is the starting point.

Programming website

** TopCoder ** Please enter the title bcdef

TopCoder is one of the first competitive online programming platforms. It presents many algorithm challenges. Users can use the editor on the platform to complete the challenges right away.

The platform will offer its most popular single round games several times a month. Competition requires users to compete with others within a certain period of time to see who can solve the problem faster.

TopCoder's top users are very competitive programmers and regularly participate in various competitions. These users can also publish some articles on programming competitions, algorithms, math, etc. through the ALGORITHMS WEEKLY BY PETR MITRICHEV blog platform.

** Code byte ** Please enter the title bcdef

Coderbyte offers 200+ coding problems. Challengers can use any of the 10 programming languages ​​to solve directly online (see this example). The difficulty of these challenges varies.

In addition, Coderbyte offers numerous algorithm tutorials, introductory videos and courses to prepare for interviews. Unlike HackerRank and other websites, users can view solutions provided by other challengers instead of CoderbyteofficiallyPosted.

** Project Euler ** Please enter the title bcde

The Euler project presents many challenges in the fields of computer science and mathematics. The content of the challenge generally requires the challenger to write a small program to provide a solution to a particular math formula or equation.

Since programming is not supported directly in the editor, the user must first write the solution on his computer and then make it available on the website.

** HackerRank ** Please enter the title bcdef

HackerRank offers challenges in many different areas such as algorithms, math, SQL, functional programming, artificial intelligence and so on. Challengers can complete all challenges directly online (see this example).

HackerRank has set up a discussion and leadership committee for each challenge. Most of the challenges come from an editorial that explains other challenges and how to proceed when proposing solutions.

With the exception of this editorial, you cannot currently see any solutions from other users on HackerRank.

HackerRank also assists users with submitting applications. By solving the coding problems initiated by the company, challengers also have an opportunity to get a job.

CodeChef Please enter the title bcdef

CodeChef is a programming competition website in India that has hundreds of challenges.

Challengers can program through the online editor and view the classified challenges that are appropriate for them according to their programming ability (see this example).

CodeChef has a huge programming community that helps the forum, is responsible for writing tutorials, and will also take part in CodeChef coding competitions.

** CodeEval ** enter the title bcdef

CodeEval is similar to HackerRank and also offers many challenges that have been initiated by companies. If you can handle these challenges well, you still have a chance of getting a job.

Companies can create challenges and run competitive contests to recruit new employees. Challengers can view the current list of challenges here.


Codewars offers many coding challenges that are submitted and worked on by its own community.

Challengers can complete the challenge directly online in the editor in multiple languages. Users can also view the discussions for each challenge and other users' solutions.

** LeetCode **

Please enter the title

LeetCode is a very popular online rating system. It contains 190 challenge questions that challengers can use to technically prepare for the interview.

Challengers can complete the challenge directly online in 9 programming languages. Although the website does not support viewing other users' solutions, users can provide statistics for their solutions, such as: B. How fast the code runs compared to other users.

They also have a mock interview area specially prepared for interviews. This is a coding contest they run. There are some articles that will help users better understand certain issues.

** SPOJ **

Sphere Online Judge (SPOJ) is an online grading system that features more than 20,000 programming challenges.

Challengers can submit the code directly through the online editor. SPOJ also ran its own competition and has its own section where users can discuss coding issues. They don't currently offer any official solutions or editorials like other websites do.

** CodinGame ** enter the title bcdef

CodinGame is a little different from other sites in that not only does it complete the coding task in the editor, but it allows the challenger to play the game.

Interview questions and e-books


DOC document


Interview questions

** Since I organized too much, only part of it will be published here. You can trust me privately if you want.

Blog site

The days I've spent
Short book
Chinese open source community

Program the learning route

Front end:



It's only a partial mind map that I drew and I'm posting a lot of details for space reasons. You can get it by private message.

Some open source e-books

Flutter practical e-book

This project isFlutter Chinese Net Flutter Actual Combat open source e-book project, the first Chinese book to systematically introduce Flutter technologyIt is one of the open source projects initiated by the Chinese Flutter community. It is designed to help developers learn about Flutter systematically and step by step.

The author said, "As more and more well-known companies use Flutter in their own business applications, this new technology from Flutter has gradually entered the field of vision of mobile device developers around the world, especially when Google held the IO conference in 2018. After the first preview version was released, there has been a wave of learning from Flutter in China.

To make this new technology easier for Chinese developers to understand, we, Flutter Chinese Network, launched the Flutter Translation Project and the Flutter Open Source Project before and after. The main job of the former is to translate official Flutter documents and the latter is mainly to develop some commonly used documents. Package to enrich the Flutter ecosystem and improve development efficiency by developers. To date, the results of these two events are still good! ""

Project introduction

This project is an open source e-book project from Flutter Chinese Net "Flutter Actual Combat".

The official website address is:

GitHub address

Chinese deep learning with TensorFlow 2.0

Because that is aBased on the official version of TensorFlow 2.0ofChineseDeep Learning Open Source Book.

Also includes e-books and supporting source code.

Without further ado, let's take a look at this popular book!

Introduction to Deep Source Open Source Books

This book contains a total of 15 chapters.

From the perspective of the composition of the catalog chapters, theory and programming are not separated independently of one another, but with increasing difficulty.Step by stepDistributed arrangementof.

Can be roughly divided intoFour parts

The first part is chapters 1-3. It mainly introduces the preliminary knowledge of artificial intelligence and raises related questions.

The second part is chapter 4-5. Mainly introduce the associated foundation of TensorFlow to pave the way for the implementation of the algorithms below.

The third part is chapters 6-9. Mainly introduce core theory and general neural network knowledge to understand the essence of deep learning.

The fourth part is chapters 10-15. Mainly introduce common algorithms and models.

In addition, the content layout in each chapter is alsoCombination of theory and actual struggle

In this repo, the author also gave the source code and data according to the chapter, but also said at the same time:

Time is quick and the source code has not been fully organized.

Interested readers can follow the update of this repo.

Using the example of the "regression problem", the author gave the corresponding data and .py files.

Getting started is easier from a code point of view.

The address of the electronic version of this book is as follows: % AD% A6% E4% B9% A0% E3% 80% 8B% E3% 80% 91.pdf

Python data science

Python advanced

Big company technology blog

On the occasion of the Spring Festival 2019, we have again selected 114 technical dry goods and created an e-book with more than 1,200 pages that can be presented to everyone.

This e-book has 7 main sections including Front-End, Back-End, System, Algorithm, Testing, Operation and Maintenance, and Engineering Growth. Questions and Analysis If you encounter any errors or problems while reading, please scan the QR code at the bottom of the article and communicate with us using the official WeChat account. You are also welcome to pass it on to colleagues and friends who have the same interests to learn and grow together.

I downloaded it. Students who like it can get it privately.

Alibaba Technology New Year

1. "Alibaba Technical Reference Atlas"

These atlases offer a panoramic view of Ali's technology. They are divided into two volumes: R&D and Algorithms to clearly explain the bigger picture of Ali's business ecology: including cultural entertainment (Youku, Tudou, etc.), core e-commerce businesses (Tmall, Taobao, Village, Amoy, etc.) , local life (Standard German card, Hema, etc.), payment and financial services (Ant Financial), intelligent logistics (cainiao), marketing (Ali Mama), cloud computing (Ali Cloud), etc.

If you want to join Ali to get into technology but are confused by hundreds of technical positions in different departments, this atlas will clear the fog for you and clearly show the main direction, technological innovation and breakthroughs of each business unit, development path, etc.

If you want to understand the latest technology trends in the industry, technical directors from Ali Artificial Intelligence Laboratory, Tmall, Taobao, Cainiao and other departments will also conduct state-of-the-art technical analysis to show Ali's accumulation and development direction in various fields.

Free download portal:

"Ali Technical Reference Atlas Algorithms"

"Alibaba Technical Reference Atlas Research and Development"

2. "More than code"

Have a question like this: "How can programmers who write business code every day become a technical expert and start writing technical code?" Today, Li Yunhua, a senior wireless development expert from Ali, systematically clarified his own thinking and understanding, hoping to help more students make fewer detours.

Although the dream of becoming a technical expert is very beautiful, it requires a lot of effort. Whether it's doing more, doing better, or doing sports, it takes time and energy. The process can be very difficult or boring. I want to emphasize here. Here: I've talked about some methodological things, but what really matters is our passion and interest in technology!

Free download portal:

"More than code"

3rd "Alibaba Machine Intelligence Computer Vision Technology Selection-Top Conference CVPR 2018 Papers"

CVPR (Conference on Computer Vision and Pattern Recognition) is one of the top conferences in the field of computer vision. With the popularity of visual AI, the number of participants has increased dramatically in recent years. The 2018 CVPR Conference took place June 18-22 in Salt Lake City, Utah, USA. More than 3,300 papers were submitted to this conference and 979 were accepted (acceptance rate is approximately 29%), including 70 oral papers and 224 spotlight papers. The number of participants reached 6,500.

The future computer vision technology must be the joint further development of theoretical research and data practice. It is hoped that this collection of theses can be a source of inspiration, contribute to science and industry, and collectively promote the development of computer vision technology.

Free download portal

"Selecting Alibaba Machine Intelligence Computer Vision Technology"

4. "Selected Alibaba Machine Intelligence Technology"

In early 2018, a week before the Chinese New Year, the highly anticipated AAAI 2018 Artificial Intelligence Academic Conference officially took place, which also marked the start of a new year of global academic conferences.

Now, Alibaba has officially launched the Alibaba Machine Intelligence Technology Collection, which contains a number of excellent AAAI papers and is available for industry to download. This book focuses on the latest research from Alibaba, including NLP, search recommendation, social networking, basic algorithms, deep learning, and other directions. I hope to discuss and exchange ideas with researchers and colleagues who are dedicated to researching AI technology.

Free download portal:

"Selecting Ali Machine Intelligence Technology"

5. "Alibaba Java Development Manual"

"Java Development Manual" is the collective summary of the knowledge and experience of the technical team at Alibaba Group. It has undergone extensive testing and continuous improvement. After its release to the industry, many community developers have actively participated and worked together to improve the system. Organized chemically in a book.

From the Java developer's point of view, this manual is divided into seven dimensions: programming log, exception log, unit test, security log, MySQL database, construction structure, and design log. The blood of the software system flows between the lines of code. The improvement in quality is to step on as few pits as possible, eliminate repeated pits, and effectively improve the stability of the system, the efficiency of coding, and the quality of the coding.

Free download portal:

"Alibaba Java Development Manual"

6. "2017 Alibaba Technology Annual Collection"

2017, in the history of technological development, has to be a special year: Ke Jie and AlphaGo's breathtaking battle, unmanned experience of opening coffee shops, AI designer "Lu Ban" turned out to be investing hundreds of billions in three years Dollar. The Moran Academy was officially established ...

From nearly 300 articles published during the year, we selected 65 and put together this set of the "2017 Alibaba Technology Annual Selection", which is divided into two volumes with a total of more than 600 pages. This collection covers a number of popular technology areas: algorithms, machine learning, big data, databases, middleware, operations and maintenance, security, mobile development, etc. The content of the article covers technical architecture, core algorithms, solutions, and other dry goods. Whether you are a computer professional, a researcher at a scientific research facility, or an IT practitioner entering society, I believe you can benefit from it.

Free download portal:

"2017 Alibaba Technology Annual Collection"

"2017 Alibaba Technology Annual Collection Part 2"

7. "Reinforcement Learning Technology Development and Business Innovation in Alibaba"

Current machine learning algorithms can be divided into supervised learning, unsupervised learning, and reinforcement learning. The difference between reinforcement learning and other learning methods is that reinforcement learning is the intelligent system learning from the environment to action mapping in order to maximize the value of the reward signal function. If a certain action strategy of the agent results in a positive reward for the environment, the tendency of the agent to develop that action strategy in the future will increase. Reinforcement learning is the learning paradigm that most closely approximates the nature of animal learning in the natural world. However, it has been almost half a century since reinforcement learning was introduced. The application scenarios are still very limited. Large-scale problems will explode in difficult-to-compute dimensionality, so the examples we see often are all a relatively simplified scene.

The future development of in-depth learning must be the continuous deepening of the double connection between theoretical research and practical application. I hope that this e-book can serve as an introduction, contribute to industry and science, and together promote the greater development of intensive learning.

Free download portal:

"Technological development and business innovation of reinforcement learning in Alibaba"

8. "Nine Year Double 11: Internet Technology Super Project"

Alibaba's Double 11 is a global collaboration of business, technology, data and intelligence. It is a corporate company collaboration and technology collaboration. It is a real super project of the internet world technology.

On November 11, 2017 at 10:00 p.m., Alibaba Group's CTO Zhang Jianfeng (nickname: Xing Dian) joined forces with the Shanghai Double 11 Media Center to share the Alibaba’s breakthroughs and successes with more than 700 Chinese and overseas media reporters. Introducing Technology in Double 11 Said "Ali Double 11 is a True World Internet Technology Super Project."

Data intelligence and machine intelligence have been integrated into every aspect of the entire system: all product recommendation, entire transaction linking, and all decision-making are done with machine intelligence. We hope to make technology a foundation of integrative benefit that the whole society can share facilities, thereby lowering the innovation cost of the whole society and improving the innovation efficiency of the whole society.

Free download portal:

"Nine Years Double 11: Super Project Internet Technology"

9. "Alibaba Android Development Manual"

"Alibaba Android Development Manual" is a summary of the key findings and experiences of the Alibaba Group's key Android development teams. It systematically organizes the long-term development iteration and optimization experiences of Taobao, Tmall, Xianyu, Dingding and other apps in one book. Lead Android developers to develop the app more efficiently and with higher quality, and present products with good user experience, high performance, good stability and high security.

This manual is divided into Java language specifications (according to the "Alibaba Java Development Manual") from a developer point of view, naming and using Android resource files, Android basic components, user interface and layout, process, thread and message communication, files and databases. Bitmap, Drawable and Animation, Security and Other Nine Parts, "Alibaba Android Development Manual" as an important part of Alibaba development protocol, our goal is:

  • Take preventive measures, improve quality awareness, reduce failure rates and maintenance costs.
  • Unify standards and improve collaboration efficiency.
  • Strive for great craftsmanship and polish high quality codes.

Free download portal:

"Alibaba Android Development Guide"

10. "In-depth study of the principle of Android hot repair technology"

With the popularity of wireless internet in various fields, we have again seen the cyclical law of development of platform technology of computer operating systems, from the rise of an operating system, to the prosperity of applications and developers on the platform, to security field technology Gradually apply in the field of daily application research and - development and finally enter the smooth development or decline.

As an inconspicuous sign that the platform has indeed reached its peak, the security technology is gradually being integrated into the area of ​​application research and development. This phenomenon has been verified several times on Windows, Linux and Android. Take thermal repair technology as an example. As an iconic derivative of security technology, it marks the beginning of a new phase in platform development that also means the prosperity of the application market and application developers as it enters the application field and becomes popular, the game's thought, research and development mode also has the second half of the game.

Free download portal:

"In-depth research into the principle of Android hot repair technology"

Write at the end

I wish you could learn more in the four years of college than capital for your first job after graduation, come on!