04 2018 档案
摘要:树状数组求第k大值 思路有一点想ST表 将求第k大变为求第(tot-k+1)小的数,tr[i]统计小于等于i的数的总数 每次不断逼近,若当前[ans,ans+(1<<i)]在范围内,则加上,否则直接到下一次循环 过程中的一个地方要注意(详见代码注释)
阅读全文
摘要:时间比较:SBT:无旋treap:splay:treap 这道题是看着别人的板子大的,思路不难,但过程里有很多细节要注意 首先是treap 然后是splay 3.无旋treap /************************************************************
阅读全文
摘要:题目大意:给定矩阵A,求A + A^2 + A^3 + … + A^k的结果(两个矩阵相加就是对应位置分别相加)。输出的数据mod m。k<=10^9。 这道题两次二分,相当经典。首先我们知道,A^i可以二分求出。然后我们需要对整个题目的数据规模k进行二分。比如,当k=6时,有: A + A^2 +
阅读全文
摘要:描述 组合数C_n^mCnm表示的是从n个物品中选出m个物品的方案数。举个例子,从(1, 2, 3)三个物品中选择两个物品可以有(1, 2), (1, 3), (2, 3)这三种选择方法。根据组合数的定义,我们可以给出计算组合数的一般公式: C_n^m = \frac{n!}{m!(n-m)!}C
阅读全文
摘要:原来以为是树上DP,后来发现中序遍历的连续性,就变成区间动规了 f[i][j]表示从i到j能取得的分数最大值,rt[i][j]表示取得最大值是该段区间的根
阅读全文
摘要:期望DP和概率DP Fi,j×Fi,j× (1−pi+1)j−>Fi+1,j(1−pi+1)j−>Fi+1,j 1−(1−pi+1)j−>Fi+1,j−1 #include<cstdio> #include<cctype> #include<cstring> using namespace std;
阅读全文
摘要:树链剖分: fa[ ]父亲节点;son[ ]重儿子节点;siz[ ]以该点为根的子树的大小; id[ ]该点在两次dfs后形成序列中的位置;dep[ ]该点深度; wt[ ]两次dfs后形成的序列;top[ ]该点所在链的链头 1.dfs1先求出每个点的深度,父亲节点和以该点为根的子树的大小,并找到
阅读全文
摘要:先读入所有数据,离散一遍 从1-n给每个点建立一颗线段树,若询问区间l-r的第k大,则只要让【第r棵树一段前缀区间内点的个数】-【第l-1棵树一段前缀区间内的点的个数】=k(实际上有可能不是等于,而是大于等于,因为可能存在多个相同的数),该区间最后一个数即为答案
阅读全文
摘要:主席树 为什么说本题是福利呢?因为这是一道非常直白的可持久化线段树的练习题,目的并不是虐人,而是指导你入门可持久化数据结构。 线段树有个非常经典的应用是处理RMQ问题,即区间最大/最小值询问问题。现在我们把这个问题可持久化一下: Q k l r 查询数列在第k个版本时,区间[l, r]上的最大值 M
阅读全文
摘要:二分在q位置上的数。其他数若大于它,则为1,否则为0,最后若该位上的数为0,则区间右移l,否则左移r check过程中用线段树维护,降序升序可以用区间复制实现
阅读全文
摘要:最小费用最大流模板题 思路和网络流的EK算法类似, 1.建正向边,反向边(反向边流量为0,花费为负数:走反向边即取消上次走过后增加的值,因此如此定义) 2.用spfa增广,找到流量大于0且由花费决定的最小dis[ t ],接着回溯,找到能通过的最大流量(minn) 3.ansflow+=minn;a
阅读全文
摘要:悬线法左右推,推出面积最大 这里有一篇好的博文有助理解 https://blog.csdn.net/twtsa/article/details/8120269
阅读全文
摘要:lca问题 1.树链剖分 2.tarjan算法 遍历一棵树,不断更新当前节点子节点的父亲。。。具体可看代码,不难 3.dfs+倍增
阅读全文

浙公网安备 33010602011771号