一些心得:
- 
WSL 只是写写题的话还是蛮好用的。 
- 
Python里用functools.lru_cache进行dp的话要设置最大递归深度sys.setrecursionlimit.
- 
C++中用lambda捕获类内元素时,应该设置别名或者直接捕获this.class MyClass { int idx = 0; void test(vector<int>& vec) { auto foo = [& idx = idx]() { std::cout << vec[idx] << std::endl; }; auto bar = [&this]() { std::cout << vec[idx] << std::endl; }; } } 
- 
感觉 C++中for_each比for快。class MyClass { vector<vector<int>> G; void foo(vector<vector<int>>& edges) { for_each(vec.begin(), vec.end(), [& G = G](vector<int>& edge) { G[edge[0]].emplace_back(edge[1]); }); for (vector<int>&& edge: vec) G[edge[0]].emplace_back(edge[1]); } } 
- 
C++中push_back要进行一次拷贝,emplace_back不需要,但是push_back可以用列表初始化,而emplace_back只能调用构造函数,不过也因此可以不加参数。vector<int> foo() { using P = pair<int, int>; vector<P> vec; vec.push_back({0, 0}); // 通过 Vaild vec.emplace_back({0, 0}); // 报错 Invaild vec.push_back(0, 0); // 报错 Invaild vec.emplace_back(0, 0); // 通过 Vaild vec.push_back(); // 报错 Invaild vec.emplace_back(); // 通过 Vaild return {0, 0}; // 通过 Vaild } 
- 
C++中拼接字符串时用string的+=比stringstream要快。(惊了)
- 
C++17里的string_view是个好东西。
- 
C++中set有自带的lower_bound,返回的是大于等于而不是小于,不建议对set用std::lower_bound.
- 
C++中好像bitset<32>(num).count()比__builtin_popcount()要快。