待补充……
1-1 General Problem Solving Techniques
1、位运算
1 2 3
| i = (i - 1) & s; i &= (i - 1); i & (-i);
|
2、scanf类正则表达式
1 2 3
| "%[a-z]" "%[abc]" "%[^a]"
|
3、next_permutation函数
函数返回值为bool类型,当排序后的序列为升序时,返回false;其他时候,返回true。可以通过如下方式枚举全排列。
1 2 3 4
| sort(a.begin(), a.end()); do { func(); } while (next_permutation(a.begin(), a.end()));
|
4、set.rbegin()反向迭代器
set.rbegin()是反向迭代器(reverse_iterator),不能用于set.erase()。需要加*取值删除或只是用set.base()获取对应的正向迭代器。
1 2
| s.erase(*s.rbegin()); s.erase((++rit).base());
|
1-2 Designing Efficient Algorithms
1-3 Dynamic Programming