📄 base.h
字号:
#ifndef _BASE_H
#define _BASE_H
template <class T>
int _find(const T& t,int l,int r,const vector<T>& v)
{
if(t < v[l] || t > v[r])
return -1;
int i = (l + r) / 2;
if(t == v[i])
return i;
else if(t < v[i])
return _find(t,l,i-1,v);
else
return _find(t,i+1,r,v);
}
template <class T>
int Find(const T& t,const vector<T>& v)
{
return _find(t,0,v.size()-1,v);
}
template <class T>
void _iore(const T& t,int l,int r,vector<T>& v)
{
if(t<v[l])
{
v.insert(v.begin()+l,t);
return;
}
else if(t>v[r])
{
v.insert(v.begin()+r+1,t);
return;
}
int i = (l + r) / 2;
if(t == v[i])
v.erase(v.begin()+i);
else if(t < v[i])
_iore(t,l,i-1,v);
else
_iore(t,i+1,r,v);
}
template <class T>
void InsertOrErase(const T& t,vector<T>& v)
{
if(v.size() == 0)
{
v.push_back(t);
}
else
{
_iore(t,0,v.size()-1,v);
}
}
template <class T>
int _insert(const T& t,int l,int r,vector<T>& v)
{
if(t<v[l])
{
v.insert(v.begin()+l,t);
return l;
}
else if(t>v[r])
{
v.insert(v.begin()+r+1,t);
return r+1;
}
int i = (l + r) / 2;
if(t == v[i])
return -1;
else if(t < v[i])
return _insert(t,l,i-1,v);
else
return _insert(t,i+1,r,v);
}
template <class T>
int Insert(const T& t,vector<T>& v)
{
if(v.size() == 0)
{
v.push_back(t);
return 0;
}
else
{
return _insert(t,0,v.size()-1,v);
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -