快速输入:
void cin_read_nosync()
{
freopen("data.txt","r",stdin);
std::ios::sync_with_stdio(false);
for (int i=0;i<MAXN;i++)
std::cin >> numbers[i];
}
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
lower_bound(k)返回一个迭代器,指向键不小于k的第一个元素
upper_bound(k)返回一个迭代器,指向键大于k的第一个元素
lower_bound(a + 1,a+ n + 1,x);//a[1]--a[n]排好序,<=x的第一个元素
_ _gcd(a,b);//没有中间空格,内置函数求公因子
S. substr(i,len);//取s[i]--s[i+len-1]的字符串
bool operator<(const AA&aa)const{}
unsigned long long 如果输入负数加上2^64,变成其补码、正数不变
sort(a,a+f);
f=unique(a,a+f)-a;数组去重
priority_queue <node> que;
multiset<int>s;
s.insert(x);
a=*s.begin();
s.erase(s.begin());
(1^2+2^2+...+n^2)=n(2*n+1)(n+1)/6;
1^3+2^3+3^3+……+n^3=[n(n+1)/2]^2;
三维的数组最大2^14=16384
-7%(-5)=-2;-7%5=-2;7%(-5)=2;
/*
余数的正负取决于被除数的符号,想想,完全正确,
让除数与被除数都是正数,相除取余,如果被除数是负的,*-1
*/
负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
欧拉回路,一笔画,多笔画,
几笔=每个连通集奇数度个数/2+欧拉回路集个数
无向图存在欧拉回路的充要条件
当且仅当这个图的所有顶点的度数是偶数,且该图是连通图。
无向图含有欧拉通路的充要条件
当且仅当这个图有零个或两个奇数度的结点,且该图是连通图。
有向图存在欧拉回路的充要条件
所有顶点的 入度 和 出度 的和是 偶数,且该图是连通图。
有向图含有欧拉通路的充要条件
起始点s的入度=出度-1,结束点t的出度=入度-1或两个点的入度=出度,且该图是连通图。
差分约束
每个关系有不等式 d[b]-d[a]<=v又有隐藏条件为 d[i]>=0
那么可以a--b建图了,直接用spfa求最短路,答案是1到n的最短路。
双连通
不存在割边割点