摘要: 题意: 给定一张无向图,起点和终点,可以选择其中$k$条边将其边权改为0,求从起点到终点的最小代价 数据范围&性质:$1\le n\le 104,q\le m\le 5\times 104,1\le k\le 10$ 分析: 没什么好说的,就是分层图裸题,只是我一直不知道有这么一种做法 简单说就是建 阅读全文
posted @ 2020-10-20 22:16 youth518 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 虚树就是将树上我们需要的关键信息,浓缩到一颗新的树上,这棵树上除了关键点还有任意一对关键点的$lca$的信息 建立: 这里介绍利用单调栈的做法,首先我们要明确一个目的,我们要用单调栈来维护一条虚树上的链。也就是一个栈里相邻的两个节点在虚树上也是相邻的,而且栈是从底部到栈首单调递增的(指的是栈中节点 阅读全文
posted @ 2020-10-20 22:07 youth518 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 点分治可以解决树上大规模路径问题 过程 : 每次找出重心,处理出所有跨过重心的信息,例如将一条长$k$的路径拆成两条跨过重心的链,然后递归处理,只会递归$O(log_n)$层,总复杂度为$O(nlog_n)$ 小 \(trick\) : 将每层处理的节点放入队列里,然后弹出队列清空,直接$memse 阅读全文
posted @ 2020-10-20 21:53 youth518 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题意: 有点复杂,自行浏览吧 题目链接 分析: 我们发现DP转移时需要记录以下几个信息: 打饭队列的队首是谁,上一个打饭的是谁,队列前$b[i]$个人的状态 然后我们根据这些信息设立DP状态,记$f[i][j][k]$表示该第$i$个人打饭(等价于前$i-1$个人已经买完饭)此时队列前7个人的状态是 阅读全文
posted @ 2020-10-20 21:00 youth518 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 题面: 给定$n,m$求$n$个节点的$m$叉树的形态有多少种 范围&性质:$1\le n,m\le 127$ 分析: DP做法 当$m$等于2时就是卡特兰数,详情见卡特兰数定义和递推式 那我们考虑像Catlan数一样枚举每个儿子的大小然后组合起来,所以设$f[i][j]$表示表示根节点有$i$个$ 阅读全文
posted @ 2020-10-15 22:14 youth518 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 抱灵技巧 不用\(namespace\)或者\(c++11\)的话,变量名不能定义\(y1\) 求逆元时\(inv[0]\)一定要初始化为\(1\),不然组合数会出锅 杜教筛数论分块\(l\)要初始化为2 线性筛莫比乌斯函数的时候\(mu[i]=1\) 一定要计算程序内存是否过大,实在不会的话可以利 阅读全文
posted @ 2020-10-15 21:42 youth518 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题意: 两个人从 \(2\) 到 \(n\) 共$n-1$个数字中各选一些(允许不选),使得选出来的两个集合中不存在一对数满足,\(x\in A,y\in B\) 且 \(gcd(x,y)\ne 1\),求合法的分配方案数 数据范围:\(1\le n\le 500\) 分析: 题目可以转化为选出两个 阅读全文
posted @ 2020-10-13 10:36 youth518 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定一张图,图上存在障碍点,两个人从$(1,1)\(出发,只能向上或向右走,走到\)(n,m)$且路径不相交的方案数 数据范围:$1\le n,m\le 3000$ 分析: 没什么好分析的,就是个裸题 前置芝士:LGV引理 $LGV$引理就是求解$n$组一一对应的起点到终点,且路径不相交的方 阅读全文
posted @ 2020-10-13 09:50 youth518 阅读(87) 评论(0) 推荐(0) 编辑
摘要: $LGV$引理可以用于在DAG上求解不相交路径方案数问题 定义: $\omega(P)$表示$P$这条路径上的边权之积,解决路径计数问题时通常设为1,据说也可以是生成函数 $e(u,v)$表示$u$到$v$的每一条路径上的$\omega$值之和,即$e(u,v)=\sum\omega(P)[P:u 阅读全文
posted @ 2020-10-13 09:40 youth518 阅读(741) 评论(1) 推荐(2) 编辑
摘要: 题意: 传送门 分析: 我们通过分析+手动模拟能够发现,蓝线的形态只有两种:$son[u][1]-u-son[u][2]$和$son[u]-u-fa[u]$对于每一个节点,要么是一个蓝线的中点,要么就是蓝线的端点,所以我们设$f[u][0]$表示$u$为蓝线端点时的答案,$f[u][1]$表示$u$ 阅读全文
posted @ 2020-10-06 08:49 youth518 阅读(70) 评论(0) 推荐(0) 编辑