当年中二,零碎模板
0x01gmath
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<iomanip>
#include<sstream>
#include<cmath>
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<bitset>
#include<list>
using namespace std;
typedef long long LL;
typedef long double LD;
#define fst first
#define sec second
#define mp make_pair
const int N = 1e5, inf = 1e9;
int readint(){
int x=0, op=1; char ch = getchar();
while(ch < '0' || ch > '9'){ if(ch=='-')op=-1; ch = getchar(); }
while(ch >= '0' && ch <= '9'){ x=x*10+ch-'0'; ch = getchar(); }
return x*op;
}
int pri[N];
void get_prime(int n){
pri[1] = 1;
for(int i = 2; i*i <= n; i++)if(!pri[i])
for(int j = 2*i; j <= n; j+=i)
pri[j] = 1;
}
LL gcd(LL a, LL b){ return b==0 ? a : gcd(b,a%b); }
LL lcm(LL a, LL b){ return a/gcd(a,b)*b; }
LL exgcd(LL a, LL b, LL &x, LL &y){
if(!b){
x = 1, y = 0;
return a;
}
LL r = exgcd(b, a%b, x, y);
LL t = x;
x = y;
y = t-a/b*y;
return r;
}
LL mul(LL a, LL b, LL p){
LL x = 0;
while(b){
if(b&1)x=(x+a)%p;
a = (a<<1)%p;
b >>= 1;
}
return x;
}
LL mul(LL a, LL b){
LL x = 0;
while(b){
if(b&1)x += a;
a <<= 1;
b >>= 1;
}
return x;
}
LL pow(LL a, LL b, LL p){
LL x = 1;
while(b){
if(b&1)x = mul(x,a,p)%p;
a = mul(a,a,p)%p;
b >>= 1;
}
return x%p;
}
LL pow(LL a, LL b){
LL x = 1;
while(b){
if(b&1)x = mul(x,a);
a = mul(a,a);
b >>= 1;
}
return x;
}
struct Point{ double x, y; };
typedef Point Vector;
struct Segment{ Point p1, p2; };
typedef Segment Line;
class Circle{
public: Point c; double r;
Circle(Point c = Point(), double r = 0.0):c(c),r(r){}
};
int swap(int &a, int &b){ int t = a; a = b; b = t; }
void BubbleSort(int a[], int n){
for(int i = 1; i < n; i++){
for(int j = n; j > i; j--)
if(a[j] < a[j-1])swap(a[j],a[j-1]);
}
}
void InsertSort(int a[], int n){
for(int i = 2; i <= n; i++){
int j = i-1, k = a[i];
while(j>=1 && k<a[j]){
a[j+1] = a[j];
j--;
}
a[j+1] = k;
}
}
void SelecSort(int a[], int n){
for(int i = 1; i <= n; i++){
int index = i;
for(int j = i+1; j <= n; j++)
if(a[j] < a[index])index = j;
swap(a[i],a[index]);
}
}
void QuickSort(int a[], int n, int l, int r){
if(l > r)return ;
int k = a[l];
int i = l, j = r;
while(i < j){
while(i<j && a[j]>=k)j--;
while(i<j && a[i]<=k)i++;
if(i < j)swap(a[i],a[j]);
}
a[l] = a[i];
a[i] = k;
QuickSort(a,n,l,i-1);
QuickSort(a,n,i+1,r);
}
struct UnionFindSet{
int fa[N];
UnionFindSet(int n){
for(int i = 1; i <= n; i++)fa[i] = i;
}
int find(int x){ return fa[x]==x ? x : fa[x]=find(fa[x]); }
void merge(int u, int v){
int x = find(u), y = find(v);
if(x != y)fa[x] = y;
}
int query(int u, int v){
return find(u) == find(v);
}
};
struct UndirectedEdge{
int u, v, w;
UndirectedEdge(){}
UndirectedEdge(int u, int v, int w): u(u),v(v),w(w){}
bool operator < (const UndirectedEdge & other)const{
return w < other.w;
}
};
struct Kruskal{
int n, m;
UndirectedEdge edges[N];
inline int kruskal(){
int sum = 0, count = 0;
UnionFindSet ufs(n);
std::sort(edges, edges+m);
for(int i = 1; i <= m; i++){
if(ufs.find(edges[i].u) != ufs.find(edges[i].v)){
ufs.merge(edges[i].u,edges[i].v);
sum += edges[i].w;
count++;
if(count == n-1) break;
}
}
return sum;
}
};
namespace Kosaraju{
int n, m;
vector<int>G[N], rG[N];
vector<int>vs, cmp[N];
int vis[N], book[N], cnt;
void dfs(int u){
if(vis[u])return ;
vis[u] = 1;
for(int i = 0; i < G[u].size(); i++)dfs(G[u][i]);
vs.push_back(u);
}
void rdfs(int u){
if(book[u])return ;
book[u] = cnt;
cmp[cnt].push_back(u);
for(int i = 0; i < rG[u].size(); i++)rdfs(rG[u][i]);
}
};
struct Bigint{
vector<int>s;
int is_minus;
Bigint(long long num = 0, int ok = 1){ *this = num; is_minus = ok;}
Bigint operator = (long long num){
s.clear();
do{
s.push_back(num%10);
num /= 10;
}while(num > 0);
return *this;
}
Bigint operator = (const string& str){
s.clear();
for(int i = str.size()-1; i >= 0; i--)
if(str[i] == '-')is_minus = -1;
else s.push_back(str[i]-'0');
}
Bigint operator + (const Bigint& b)const{
Bigint c; c.s.clear();
Bigint n = *this, m = b;
if(n.is_minus==-1 && m.is_minus==1){
c = m-n;
}else if(n.is_minus==1 && m.is_minus==-1){
c = n-m;
}else {
if(n.is_minus==-1 && m.is_minus==-1) c.is_minus = -1;
int x = 0, len = max(n.s.size(),m.s.size());
for(int i = 0; i < len; i++){
if(len >= n.s.size())n.s.push_back(0);
if(len >= m.s.size())m.s.push_back(0);
c.s.push_back(n.s[i]+m.s[i]+x);
x = c.s[i]/10;
c.s[i] %= 10;
}
if(x)c.s.push_back(x);
len = c.s.size()-1;
while(c.s[len]==0 && len>0)len--;
c.s.resize(len+1);
}
return c;
}
Bigint operator - (const Bigint& b)const{
Bigint n = *this, m = b;
int ok = 1;
if(n.s.size()<m.s.size() || n.s.size()==m.s.size()&&n.s<m.s){
swap(n.s, m.s);
ok = -1;
}
Bigint c; c.s.clear();
int len = max(n.s.size(), m.s.size());
n.s.resize(len); m.s.resize(len); c.s.resize(len);
for(int i = 0; i < len; i++){
if(n.s[i] < m.s[i]){
n.s[i] += 10;
n.s[i+1]--;
}
c.s[i] = n.s[i]-m.s[i];
}
len--;
while(c.s[len]==0 && len>0)len--;
c.s.resize(len+1);
c.is_minus = ok;
return c;
}
Bigint operator * (const Bigint& b)const{
Bigint n = *this, m = b;
n.s.insert(n.s.begin(),0); m.s.insert(m.s.begin(), 0);
Bigint c; c.s.clear();
if(n.is_minus==-1 && m.is_minus==1)c.is_minus = -1;
if(n.is_minus==1 && m.is_minus==-1)c.is_minus = -1;
c.s.resize(n.s.size()+m.s.size());
for(int i = 1; i < n.s.size(); i++){
int x = 0;
for(int j = 1; j < m.s.size(); j++){
c.s[i+j-1] += n.s[i]*m.s[j] + x;
x = c.s[i+j-1]/10;
c.s[i+j-1] %= 10;
}
c.s[i+m.s.size()-1] = x;
}
c.s.erase(c.s.begin());
int len = c.s.size();
while(c.s[len]==0 && len>0) len--;
c.s.resize(len+1);
return c;
}
};
istream& operator >> (istream &in, Bigint& x){
string s;
if(in>>s) x = s;
return in;
}
ostream& operator << (ostream &out, const Bigint& x){
if(x.is_minus == -1)out<<-1*x.s[x.s.size()-1];
else out<<x.s[x.s.size()-1];
for(int i = x.s.size()-2; i >= 0; i--)out<<x.s[i];
return out;
}
0x02STL
#include<iostream>
#include<set>
#include<map>
#include<vector>
#include<string>
#include<bitset>
using namespace std;
void setting(){
set<int>myset;
myset.insert(233);
myset.erase(233);
myset.count(233);
myset.clear();
myset.insert(233); myset.insert(322);
set<int>::iterator it;
set<int>::reverse_iterator rit;
for(it = myset.begin(); it != myset.end(); it++){
cout<<*it<<" ";
}
cout<<"\n";
for(rit = myset.rbegin(); rit != myset.rend(); rit++){
cout<<*rit<<" ";
}
cout<<"\n";
cout<< (myset.find(233)==myset.begin()) <<" \n";
cout<< *myset.lower_bound(234)<<"\n";
cout<< *myset.upper_bound(233)<<"\n";
}
void maping(){
map<int,int>mymap;
mymap[5] = 7;
map<int,int>::iterator it = mymap.begin();
cout<<(it->first)<<" "<<(it->second)<<"\n";
}
void bitsetting(){
}
void stringing(){
string str = "123456789"; char ch[110]="233";
str = string(ch);
str = string(5,'c');
string s1 = str;
str.size();
str.substr(0, 2);
}
int main(){
stringing();
cout<<"Hello World"<<endl;
return 0;
}
0x03框架什么的
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<iomanip>
#include<sstream>
#include<cmath>
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<bitset>
#include<list>
using namespace std;
typedef long long LL;
typedef long double LD;
#define fst first
#define sec second
#define mp make_pair
const int N = 1e5, inf = 1e9;
int readint(){
int x=0, op=1; char ch = getchar();
while(ch < '0' || ch > '9'){ if(ch=='-')op=-1; ch = getchar(); }
while(ch >= '0' && ch <= '9'){ x=x*10+ch-'0'; ch = getchar(); }
return x*op;
}
int main(){
cout<<"Hello World"<<endl;
return 0;
}