- 博客(10)
- 收藏
- 关注
原创 莫比乌斯反演
莫比乌斯反演大都是处理(运用这个式子的题目始终没见过,见过了再说)和(最常用的公式) ,说白了莫比乌斯反演就是加快和简化容斥集合的演算的作用,在数论中比较重要。 莫比乌斯反演的比较重要的性质: 对于u(d): (1)若,那么 (2)若,均为互异素数,那么 (3)其它情况下 还有如下一些性质: (1)对任意正整数有
2015-07-30 10:27:34 504
原创 树型dp入门小节
做了几道树型dp的入门题,稍微总结一下 hdu1520:http://acm.hdu.edu.cn/showproblem.php?pid=1520(入门) 题意:每个人有一些活跃值,员工和上司关系组成一棵树,树上如果父亲来了,向下相邻的儿子就来不了,问最大的活跃值总和(题意略坑,可能不止一棵树) 用dp[i][0]表示当前点没来的最大值,dp[i][1]表示当前点来了的最大
2015-07-27 18:21:06 342
原创 最小费用最大流模板
typedef long long ll; const int maxn = 1000005; const int INF = 0x3f3f3f3f; const int e_maxn = 200000 * 4; const int v_maxn = 15000; struct ppp { int v,nex,cap,flow,c; }e[e_maxn]; int head[v_maxn],pr
2015-07-27 13:53:36 330
原创 最大流模板
#include #define mem(a,b) memset(a,b,sizeof(a)) #define For(a,b,c) for(int a = b;a <= c;a++) using namespace std; typedef long long ll; const int maxn = 1000005; const int INF = 0x3f3f3f3f; const int
2015-07-27 10:08:14 320
原创 线性筛选素数(欧拉筛选)
bool ok[maxn];//自然数表 int prime[maxn];//素数数组 int tol;//素数长度 void make_prime() { tol = 0; for(int i = 2;i < maxn;i++){ if(!ok[i])prime[tol++] = i; for(int j = 0;j < tol;j++){ if(i * prime[j] >=
2015-07-26 09:48:32 501
原创 单调队列--优化dp
单调队列的定义:一种严格单调的队列(严格递增或者递减),其中队列中元素的位置也有一定的递增递减的性质。队首位置保存的是最优解,接着次优解。。 单调队列的维护(假设队列为严格递增队列): 1.新插入一个数到队尾(此时还没有插入),比较当前队尾的数和当前插入的数,如果当前插入的数小于队尾的数,弹出队尾的数。。。继续比较队尾的数和当前插入的数,直到队尾的数小于当前插入的数为止,在队尾插入当前
2015-07-24 18:41:50 413
原创 LCA(最近公共祖先) 离线法(tarjan算法)
题目的来源是hiho题库的1067 http://hihocoder.com/problemset/problem/1067 具体做法: dfs整棵树,对与每个节点进入的时候先标记为1,退出该节点的时候将该节点标记为2,没被扫描过的标记为0 由此可知,对于扫到的某个点在询问中要求它和另外一个点的最近公共祖先. 如果另外一个点的标记为0,说明没有被扫描到过,那么继续搜索. 如
2015-07-22 19:20:44 370
原创 st函数--区间最大最小值
st函数可以处理区间的最大和最小值的问题,预处理时间需要O(nlgn)的时间,查询时间可以达到O(1)。 void make_st()//st预处理 { for(int i = 1;i <= n;i++){ minn[i][0] = ori[i]; maxx[i][0] = ori[i]; } for(int j = 1;(1 << j) <= n;j++)//递推求区间最
2015-07-21 20:28:30 1130
转载 反素数的总结
反素数的定义:对于任何正整数,其约数个数记为,例如,如果某个正整数满足:对任意的正整 数,都有,那么称为反素数。 从反素数的定义中可以看出两个性质: (1)一个反素数的所有质因子必然是从2开始的连续若干个质数,因为反素数是保证约数个数为的这个数尽量小 (2)同样的道理,如果,那么必有
2015-07-21 10:54:21 342
原创 凸包模板
struct Node { int x,y; Node(int _x = 0,int _y = 0):x(_x),y(_y){} bool operator return x == b.x ? y } Node operator - (Node b){ return Node(x - b.x,y -
2015-07-14 18:29:00 253
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人