07 2020 档案

摘要:因为是有标号计数,考虑用指数型生成函数来解决。 设有标号荒漠的生成函数为 F(x),有标号仙人掌的生成函数为 f(x),因为荒漠是仙人掌所组成的集合,得: F(x)=exp(f(x)) 解决有标号仙人掌的计数问题后,就能解决有标号荒漠的计数问题。 先在仙人掌上确定 阅读全文 »
posted @ 2020-07-31 10:09 lhm_liu 阅读(284) 评论(0) 推荐(1) 编辑
摘要:对于一种权值的生成树的存在性,可以将其转化为该权值的生成树个数的计数问题。 先考虑运算若不是位运算,是加法的情况,要怎么处理。对于边权为 v 的一条边,将其边权赋为 xv,然后应用矩阵树定理,若所得行列式的第 i 次项系数不为 0,即生成树个数不为 0,就说明存在边 阅读全文 »
posted @ 2020-07-30 00:24 lhm_liu 阅读(144) 评论(0) 推荐(0) 编辑
摘要:先考虑最小值,因为树是二分图,所以可以进行黑白染色,将其分成左右部图,让左部图向右部图连边即可构造最小值,为 n1。 对于最大值,最优情况一定是以一个点为中心,其各个子树内边的状态为要么该点能到达子树内的每个点,即外向,要么子树内的每个点能到达该点,即内向,且该点为树的重心。 可以简单的进 阅读全文 »
posted @ 2020-07-29 19:47 lhm_liu 阅读(232) 评论(0) 推荐(0) 编辑
摘要:对于至少 a 个,不超过 b 个的限制,可以先求出限制不超过 b 个的方案数,然后减去限制不超过 a1 个的方案数,即为答案。 对第 i 个糖果罐列出其的生成函数,得: \[ f_i(x)=\sum_{j=0}^{m_i} x^j = \frac{1-x^{ 阅读全文 »
posted @ 2020-07-29 08:40 lhm_liu 阅读(204) 评论(0) 推荐(0) 编辑
摘要:给定 n 个点,求 f(x) 由拉格朗日插值法得 f(x)=i=0nyiijxxjxixj code: for(int i=1;i<=n;++i) { ll 阅读全文 »
posted @ 2020-07-28 16:13 lhm_liu 阅读(227) 评论(0) 推荐(0) 编辑
摘要:先考虑外向树的情况,那么对于每个节点,该节点都是其子树内第一个抽到的。假设 W 都已确定,sum 为所有 W 的和,sxx 子树内 W 的和,得最终答案为: \[ \prod_{x=1}^n \frac{W_x}{sum} \sum_{i=0} 阅读全文 »
posted @ 2020-07-28 08:32 lhm_liu 阅读(252) 评论(0) 推荐(1) 编辑
摘要:一个州不合法为其内部有欧拉回路,即图连通且每个点度数都为偶数。 n 很小,考虑用状压 DP 解决本题,设 fS 为集合 S 的答案,gS 为集合 Sw 和的 p 次方。 得转移方程为: \[ f_S= \frac{1}{g_S 阅读全文 »
posted @ 2020-07-27 07:59 lhm_liu 阅读(216) 评论(0) 推荐(0) 编辑
摘要:若从 xy 的任意一条路径经过了一个点双连通分量,则从 xy 一定可以经过该点双连通分量中的每一个点。 用广义圆方树来维护一般无向图,每个方点的权值为其相邻的圆点的权值的最小值,然后可以用树剖来修改和查询。 但是这样修改的复杂度是不正确的,若一个圆点相邻有 阅读全文 »
posted @ 2020-07-25 11:38 lhm_liu 阅读(215) 评论(0) 推荐(0) 编辑
摘要:对于本题这样带修的树上路径问题,考虑用动态点分治来解决。 将题目中给的式子变形得: valx+valydisx,yvalydisx,yvalx阅读全文 »
posted @ 2020-07-25 08:37 lhm_liu 阅读(326) 评论(0) 推荐(0) 编辑
摘要:首先发现每个叶子节点的权值都有可能成为最终根节点的权值,观察题目中给出的式子: i=1miViDi2 发现只要算出每个权值被根节点取到的概率 Di,然后就能计算答案。 设 fx,i 为节点 x 取到第 i 小权值的概率, 阅读全文 »
posted @ 2020-07-23 10:04 lhm_liu 阅读(432) 评论(0) 推荐(1) 编辑
摘要:每次询问是关于 x 所在的连通块,所以考虑用点分树来解决本题。 点分树上每个节点所对应的子树,都是原树中的一个连通块。询问中给定 x 和区间 [l,r],其就已经确定了原树的一个连通块,所以可以在点分树上找到最大的一个子树包含该连通块,统计其内部合法点的个数即可。 首先处理出 阅读全文 »
posted @ 2020-07-22 08:23 lhm_liu 阅读(244) 评论(0) 推荐(0) 编辑
摘要:一个比较直接的想法就是对每个点进行拆点,拆成入点和出点,限制放在入点和出点相连的边上,然后跑最大费用最大流即可。 但是这样复杂度无法接受,所以考虑模拟费用流来解决本题。 发现 H 都大于等于该节点的度数,所以从根节点出发,一定可以到达所有节点。 先考虑以根节点为起点和终点的答案,首先可以遍历 阅读全文 »
posted @ 2020-07-21 09:59 lhm_liu 阅读(249) 评论(0) 推荐(0) 编辑
摘要:考虑用动态点分治来解决像本题这样带修的树上路径问题。 首先对原树进行点分治,建出点分树,在点分树每个节点上用动态开点线段树来维护以该节点为起点,到其点分树子树中每个节点的利润。 查询时只需在点分树上当前所在节点往上跳父亲,在其到点分树根节点的链上的每个节点的线段树上查询。跳到一个节点时,在线段树上查 阅读全文 »
posted @ 2020-07-20 19:17 lhm_liu 阅读(257) 评论(0) 推荐(0) 编辑
摘要:首先考虑题目的性质,不难发现光盘的花费是一个凸函数。当生产 0 张光盘时,其花费为 0,随着光盘生产数的增加,最优情况肯定是先选择工厂便宜的时刻,所以花费会增长越来越快,因此其为一个下凸的凸函数。 采用 WQS 二分来优化掉生产出 k 张光盘的限制,然后可以通过二分图带权匹配 阅读全文 »
posted @ 2020-07-18 15:09 lhm_liu 阅读(286) 评论(0) 推荐(0) 编辑
摘要:首先考虑题目的性质,发现点向区间连的边为双向边,所以也就可以从一个点向右跳到区间包含该点的点,如图所示: 但事实上向后跳其实是不优的,可以有更好的方法来节省花费: 因此我们发现一个点跳到其前一个区间的花费为 1,且在跳跃过程中不会向右跳,同时我们还证明了一个点向左的花费单调递增。 但是从起点进行 阅读全文 »
posted @ 2020-07-17 22:06 lhm_liu 阅读(387) 评论(0) 推荐(1) 编辑
摘要:考虑用数位 DP 来统计数字串个数,用 SAM 来实现子串的匹配。 设状态 f(pos,cur,lenth,lim,flag),表示数位的位数,在 SAM 上的节点,匹配的长度,是否有最高位限制,是否已经满足要求。 在 dfs 转移时,若当前节点能接着匹配枚举 阅读全文 »
posted @ 2020-07-15 07:45 lhm_liu 阅读(328) 评论(0) 推荐(0) 编辑
摘要:考虑到先手和后手都使用最优策略,所以可以像对抗搜索一样,设 val 为先手收益减去后手收益的值。那么先手想让 val 尽可能大,后手想让 val 尽可能小。 继续分析题目性质,发现取石子的过程可以转化为两端分别有一个栈,可以从栈顶取石子,中间有若干个双端队列,可以从其两端取石 阅读全文 »
posted @ 2020-07-14 17:19 lhm_liu 阅读(242) 评论(0) 推荐(0) 编辑
摘要:首先我们知道 n 个点的树有 n1 条边,因此对于森林来说,其点数减边数即为树的个数。那么对于普通的图,求出其任意一个生成树森林,森林中树的个数即为原图中连通块的个数,也就是点数减边数。 因此问题就转化为了如何快速求出一个图的生成树森林的边数。 考虑用 LCT 来维护原图的 阅读全文 »
posted @ 2020-07-13 20:34 lhm_liu 阅读(206) 评论(0) 推荐(0) 编辑
摘要:概念 回文树可以用来处理一个字符串中所有的回文子串。一个串的本质不同回文子串个数最多为 n 个。 一个字符串的回文树由两棵树组成,一个维护所有长度为奇数的回文子串,一个维护所有长度为偶数的回文子串。树上除根节点外的每个节点都表示串中的一个回文子串。 len: 节点对应的回文子串长度。 阅读全文 »
posted @ 2020-07-13 14:36 lhm_liu 阅读(957) 评论(0) 推荐(1) 编辑
摘要:考虑到年份数很小,只有 6,所以可以 26 来枚举子集,确定流量指数对应相同的位置,然后通过哈希和排序来计算相同的方案数。 但是这样计算出的是大于等于子集元素个数的方案数,所以还需要通过容斥来得到恰好为 k 的方案数。设子集元素个数为 i,相同个数恰好为 i 的方案 阅读全文 »
posted @ 2020-07-12 12:08 lhm_liu 阅读(165) 评论(0) 推荐(0) 编辑
摘要:先考虑只有一维的情况,要求支持区间加和求区间 gcd,根据 gcd 的性质,发现: gcd(a1,a2,a3,an)=gcd(ai,a2a1,a3a2,anan1) 其中 ai 为原序列 \( 阅读全文 »
posted @ 2020-07-10 10:55 lhm_liu 阅读(450) 评论(0) 推荐(0) 编辑
摘要:通过建最小割树 (GomoryHu Tree) 来快速求解无向图中两点间的最小割。 最小割树中的一条边的权值,为其两端点的最小割,那么任意两点之间的最小割即为路径上的最小值。 通过递归建树即可。 code: void build(int l,int r) { if(l==r) r 阅读全文 »
posted @ 2020-07-08 22:17 lhm_liu 阅读(219) 评论(0) 推荐(0) 编辑
摘要:首先将操作倒序,把删边转化为加边。先考虑若边是无向边,条件为连通,要怎么处理。 可以用并查集来维护连通性,对每个连通块维护一颗权值线段树,连通块的合并用线段树合并来实现,线段树同时也支持了修改点权。 然后再考虑对于有向边和强连通分量要怎么做。无向边的作用是使两个连通块成为一个连通块,有向边的作用是使 阅读全文 »
posted @ 2020-07-07 22:32 lhm_liu 阅读(295) 评论(0) 推荐(0) 编辑
摘要:先考虑对于一个序列,能使其可以删空的的修改次数。 首先可以发现,序列的排列顺序是没有影响的,所以可以将所有数放到桶里来处理。 尝试对一个没有经过修改的可以删空的序列来进行删数,一开始删去所有的n,然后序列长度变为x1,删去所有的x1,然后序列长度变为x2,删去所有的x2阅读全文 »
posted @ 2020-07-06 23:54 lhm_liu 阅读(283) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示