摘要: 首先用倍增法解决一道求区间最大值问题,算是倍增的入门了。 其实也算是一种dp,不过大家把这个二维dp数组叫做ST表。 ST表数组:f[i][j],表示区间【i,i+2j-1】的最大值。这个区间的大小是2j个数。 ST表的初始化:f[i][0]=a[i]。(显然这是区间大小为1的时候) ST表的递推过 阅读全文
posted @ 2018-07-02 20:02 hzhuan 阅读(1743) 评论(0) 推荐(1) 编辑
摘要: 思想和可持久化trie一模一样,在历史版本的基础上构建新版本,即只增加发生改变的那条路径。 代码是用可持久化线段树实现的主席树,并通过了poj2104/hdu2665两个求区间第k大题 阅读全文
posted @ 2018-07-02 09:18 hzhuan 阅读(142) 评论(0) 推荐(0) 编辑
摘要: https://www.nowcoder.com/acm/contest/104/H 题目大意:给你n个数,m个询问,每个询问为给出L,R,X。 问[L,R]中的哪个数与X异或值最大,输出这个最大值。 可持久化trie的模板题,下面简说一下: 1,根据异或的特征,将数都转换成二进制,自然越是高位与X 阅读全文
posted @ 2018-06-30 10:40 hzhuan 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 先转换成求简单路径(一条链)的数目,然后每条路径一个状态。 为了避免重复,枚举起点,其他的点的序号都需要比起点大。 dp[s][j],s表示点集,j表示终点,s点集中最小的序号作为起点。 状态转移:dp[ s | i ][ i ] += dp[ s ][ j ] (if j->i有边 && s不包含 阅读全文
posted @ 2018-06-15 09:57 hzhuan 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 题解:NTT、二项式定理 再逆FFT求出系数ans[i],本题即可解了 另:采用FFT的话,复数既不方便,误差也很大。 从FFT到NTT: 由费马小定理可知 gp-1%p=1 (p为质数) 所以利用这个性质来对应单位复数根乘方的周期性,即 代码: 阅读全文
posted @ 2018-05-31 21:04 hzhuan 阅读(169) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-05-30 21:44 hzhuan 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 显然是最小割的经典应用“二者选一” 这里有一个用其他算法不好解决的地方,选择了v,则必须选择所有的u,而对于这个直接建好v指向u的边,容量设为正无穷即可。(即该边不可被割) 源点指向某个知识点,边容量为收益大小,这个点再指向汇点,边容量为损失大小。 对于每个点,要么选(切断与汇点的联系),要么不选( 阅读全文
posted @ 2018-05-07 19:16 hzhuan 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 假如是一个凸型函数,如何寻找最值呢? 发现图中斜率是单调递减的,二分找到斜率为0的点?(似乎在这个图中,是可行的) 下面介绍一种普遍求凹凸型函数的做法——三分法 如图,mid=(left+right)/2,mmid=(mid+right)/2 如果,f(mid)< f(mmid),则[left,mi 阅读全文
posted @ 2018-05-05 11:48 hzhuan 阅读(848) 评论(0) 推荐(2) 编辑
摘要: Dinic算法: while(能够分层) { 分层; dfs增广; } 分层:即源点为0层,能一步到达的点为第一层,二步到达的点为第二层......(边容量为0即为不可达)。 dfs增广:按照层次从源点搜索一条可行流到汇点,减去可行流得到残余网络,然后回溯,接着在残余网络上寻找可行流,直到回溯到0层 阅读全文
posted @ 2018-04-30 16:48 hzhuan 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 一、哈希表 www.cnblogs.com/lnu161403214/p/8858236.html O(1)的查找效率,使其在查重和判等价方面用处极大 二、树与二叉树 树的实现:邻接表法(VECTOR) 二叉排序树:左子节点小于自身,右子节点大于自身,中序遍历后即得到升序数列。 哈夫曼二叉树:将信息 阅读全文
posted @ 2018-04-25 19:38 hzhuan 阅读(112) 评论(0) 推荐(0) 编辑