05 2015 档案
摘要:**复数**关于复数的一些常用知识和运算法则**定义与表示**首先令$i^2=-1$复数是指能写成$a+bi$的数,其中$a$是实部,$b$是虚部,$i$为虚数单位。**四则运算**$$(a+bi)+(c+di)=(a+c)+(b+d)i$$$$(a+bi)-(c+di)=(a-c)+(b-d)i$...
阅读全文
摘要:这是一个未被验证过正确性的判断有根树同构的哈希函数。可以记忆化搜索或者dfs求得。f(u)表示以u为根的子树的哈希值。size(u)表示以u为根的子树的大小。son(u)表示u的儿子数量。chi表示u的第i个儿子。p为种子。O(n)。typedef unsigned long long ull;#d...
阅读全文
摘要:1、交换律 A∪B=B∪A,A∩B=B∩A;2、结合律 A∪(B∪C)=(A∪B)∪C, A∩(B∩C)=(A∩B)∩C;3、分配律 A∪(B∩C)=(A∪C)∩(B∪C), A∩(B∪C)=(A∩C)∪(B∩C),4、同一律 A∪∅=A,A∩U=A, A∪U=U,A∩∅=∅...
阅读全文
摘要:一、一般多项式除法二、综合除法(一般多项式除以形如x-a的多项式)非常好证明,除了最高次项,被除式的每一项系数都可以被分解为两部分,x*商的较低一项、a*商的同次项。因此用【被除式的第i项系数】减去【a*商的第i项系数】即为商的第i-1项系数。三、综合除法(除数中x的系数不为1)四、综合除法(一般)...
阅读全文
摘要:很像背包。这种在一个数轴上进行操作的题常常需要对区间排序。f[i][j]表示距离到i时,花费为j时的权值之和。f[x[i]+l[i]][j+c[i]]=max{f[x[i]][j]+w[i]}(1#include#includeusing namespace std;struct Line{int ...
阅读全文
摘要:显然#includeusing namespace std;int n,ans;int sqr(int x){return x*x;}int main(){ scanf("%d",&n); for(int i=0;i*i<=n;++i) for(int j=0;j*j+i*i<=n;++j) ...
阅读全文
摘要:分开维护树的入栈序和出栈序,用两棵线段树。回答时就是用一颗的减去另一棵的。#include#includeusing namespace std;typedef long long ll;#define N 100001ll sumv[2][N>1)); sumv[o][rt>1); d...
阅读全文
摘要:设f[u]为从度数0到u的路径条数,f2[u]为从u到n的路径条数。ans=max{f[x[i]]*f2[y[i]]}(1#include#includeusing namespace std;#define N 5001typedef long long ll;#define M 50001int...
阅读全文
摘要:f[i]=min{f[i+1]+1,f[i+len[j]+cant]+cant}(for i=L-1 downto 0)(1#include#includeusing namespace std;int n,m;string s,words[601];int f[302];int main(){ s...
阅读全文
摘要:http://hzwer.com/2831.html#include#include#includeusing namespace std;typedef long long ll;typedef vector vec;typedef vector mat;ll n,MOD;mat operator...
阅读全文
摘要:对操作序列分块,每S次暴力重建主席树。当S=sqrt(n*log(n))时,复杂度为O(m*sqrt(n*log(n)))。在线的。#include#include#includeusing namespace std;#define N 500001#define M 200001struct P...
阅读全文
摘要:样例输入4 20 1 1 00 0 1 00 0 0 11 0 0 0样例输出6#include#includeusing namespace std;typedef vector vec;typedef vector mat;int n,m;mat operator * (const mat &a...
阅读全文
摘要:题目大意:F[0]=0F[1]=1F[n+2]=F[n+1]+F[n]求F[n] mod 104。F[n+2]F[n+1]=1110*F[n+1]F[n]记这个矩阵为A,则有:F[n+1]F[n]=An*F[1]F[0]=An*10然后可以快速幂#include#includeusing names...
阅读全文
摘要:状压DP裸题,将({当前车票集合},当前顶点)这样一个二元组当成状态,然后 边权/马匹 当成边长,跑最短路或者DAG上的DP即可。#include#include#includeusing namespace std;typedef double db;#define INF 2147483647....
阅读全文
摘要:#include#includeusing namespace std;#define N 10001int n,m,a[N],f[N][501];int main(){ scanf("%d%d",&n,&m); for(int i=1;ij) f[i][0]=max(f[i][0],f[i-j][...
阅读全文
摘要:f(i,j)表示当前牛的集合为i,最后一个牛为j时的方案数。f(i∪{k},k)+=f(i,j) //k∉i&&j∈iinit:f({i},i)=1 //0#includeusing namespace std;typedef long long ll;#define N 17int n,m,a...
阅读全文
摘要:给定一张带权有向图,要求从顶点0出发,经过每个结点恰好一次后再返回0,求边权和的最小值。2#include#includeusing namespace std;#define N 16#define INF 214748364#define M 250int n,m;int v[M>v[i]&1)...
阅读全文
摘要:考虑向一个集合里添加一个数,它们的gcd要么不变,要么变成原gcd的一个约数。因此不同的gcd只有log个。所以对于每个位置,维护一个表,存储从这个位置向前所有的不同的gcd及其初始位置,然后暴力更新答案,反正这个表不会很长。#include#include#includeusing namespa...
阅读全文