acmTrick.md
算法竞赛的小技巧
STL篇
- count函数:
1 | count(a.begin(), a.end(), 1) 获取a中1出现的次数 |
- accumulate函数
1 | accumulate(a.begin(), a.end(), 0) 从0开始累加a中的元素 |
accumulate还可以自定义数据类型:
1 | vector<pair<ll, ll>> a; |
注意long long时的初始值要加上LL
- 组反向排序(从大到小)
1 | sort(a.rbegin(), a.rend()) |
- string类型find
1 | int a = s.find('1'); //找到第一个出现'1'的位置 |
找不到返回string::npos。示例用法:
1 | char c; |
- string类型substr
1 | s.substr(a); //截取s从位置a到末尾的子字符串 |
常用代码pieces
- 树的存储
1 | vector<vector<int>> g(n); |
- 交互题
1 | bool ask(你询问的内容){ |
min_element & max_element
1
2
3
4// 求下标
int idx = min_element(a.begin(), a.begin() + n) - a.begin();
// 求最值
int x = *min_element(a.begin(), a.end());
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ando's blog!