A.金币
vector<int> v;//动态数组的声明
v.push_back(e);//动态数组尾插函数
v.size();//动态数组的大小
B.文字处理软件
string s;//字符串的声明
s=s1+s2;//字符串的赋值与拼接
sub=s.substr(begin,len);//子串函数
s.insert(pos,str);//插入函数
found=s.find(str);//查找子串函数
C.字典排序
算法:预处理-排序
s1>s2;//字符串的比较(字典序)
vector<string> v;//字符串数组的声明
sort(v.begin(),v.end());//字符串数组排序(字典序)
D.[模板]字符串哈希
map<string,int> mp;//map的声明(string-int键值对)
mp[s]++;//本题作为s的计数(如果第一次出现,会先默认为0)
mp.size();//map中键值对个数
E.明明的随机数
set<int> st;//集合的声明(int类型)
st.insert(e);//集合的插入
for(auto i:st){
}//容器的遍历(范围遍历,vector,map,set,string均适用)
F.[ABC183C] Travel
算法:枚举
next_permutation(v.begin(),v.end())//从v的开始到结束,生成下一个字典序的排列,如果已经是最大的字典序,返回false
G.[模板]队列
应用:可用于BFS!!!
queue<int> q;//队列的声明
q.push(e);//入队
q.pop();//出队
q.front();//取队头元素
q.empty();//判断队列是否为空
q.size();//获取队列大小
H.[模板]堆
priority_queue<int> PQ;//大根堆声明
priority_queue<int, vector<int>, greater<int>> Q;//小根堆声明
q.push(e);//入堆
q.pop();//出堆(最值)
I.家谱
应用:map可以用于图论!!!(比什么链表节点XXX表示法啥的好用多了)
fa.find(e);//查找函数,返回map中e的迭代器,如果没有,返回fa.end(),vector,map,set,string均可用
J. [CCC2021 J5/S2] Modern Art
算法:直接分析-规律性-周期
K.矩阵乘法
算法:数学-线性代数
L.[ABC346C] Σ
算法:相关问题-正难则反
n=unique(v.begin(),v.end())-v.begin();//去重函数,前提是序列要先有序,返回的是去重后指向最后一个元素的迭代器,减去v.begin()之后就是去重后的元素个数
M.A-B 数对
算法:相关问题-预处理(关联问题)
N.[ABC345C] One Time Swap
算法:相关问题-正难则反;数学-排列组合
O.合并果子
算法:子问题-贪心(哈夫曼树);相关问题-预处理-数据结构
q.top();//获取堆顶元素(最值)
P.[ABC353C] Sigma Problem
算法:子问题-分治-二分(其实有STL);子问题-分类处理
int p=lower_bound(v.begin(),v.end(),x)-v.begin();//返回指向第一个不小于x的迭代器,减去v.begin()之后就是索引,前提是序列必须有序!因此set,map均可使用,因为这两种容器本身有序
Q.集合
算法:纯思维;数学-数列/集合论
st.find(e);//返回集合中指向e的迭代器,如果没有返回st.end()
我使用的代码模板
#include<bits/stdc++.h>//万能头
#define endl '\n'//换行符代替endl,速度更快
#define int int long long//int作为long long
#define pb push_back//pb缩写代替push_back
#define bs bitset//二进制操作位图
#define val(a) (a<'a' ? (a-'A'+'a') : a)//大写字母转换函数
using namespace std;//命名空间
typedef pair<char,int> PCI;//char-int 对
typedef pair<int,int> PII;//int-int 对
typedef priority_queue<int> PQ;//优先队列(大根堆)
typedef priority_queue<int, vector<int>, greater<int>> Q;//优先队列(小根堆)
const int N = 2e5+10, MAX = 1e9, INF = -1e9;//数组最大值,最大值,最小值(随题意修改)
signed main()//因为int代替long long,主函数用signed代替
{
ios::sync_with_stdio(false);
cin.tie(0);//解除限制,读写速度更快
return 0;
}