摘要: 题意: 戳这里查看 分析: 我们发现题目里面每一个建立的基站可能会对之前的状态有所影响,所以我们在设计DP状态时需要将这种影响消除掉 我们设$f[i][j]$表示在第$i$个村庄修建第$j$个基站且不考虑对$[i+1,n]$个村庄的影响时的最小费用 转移方程就是 \(f[i][j]=min(f[k] 阅读全文
posted @ 2020-10-21 10:43 youth518 阅读(139) 评论(0) 推荐(0)
摘要: 题意: 戳这里查看 分析: 由于这是一个无限大的完全二叉树,所以不合法的方案仅存在于跳到根节点的父亲这一种,且由于指令会无限重复,所以我们必须保证指令会使得离开被标记的子树的时候,所有被标记的点已经全部访问完,因为我们不会折返回去向上跳的 那么我们考虑枚举它是经过哪条路径,从哪个点离开整颗子树的,只 阅读全文
posted @ 2020-10-21 10:24 youth518 阅读(195) 评论(0) 推荐(0)
摘要: 题意: 给定一张$n$个点,$m$条有向边的图,标记其中$k$个点,求这$k$个点之间的两两最短路的最小值 范围&性质:$1\le k, n\le 105,1\le m\le 5\times 105$ 分析: 暴力 暴力将关键点分成$A,B$两个集合,超级源向$A$集合每一个点连一条边权为0的边,$ 阅读全文
posted @ 2020-10-20 22:31 youth518 阅读(95) 评论(0) 推荐(0)
摘要: 题意: 给定一张无向图,起点和终点,可以选择其中$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 阅读(103) 评论(0) 推荐(0)
摘要: 虚树就是将树上我们需要的关键信息,浓缩到一颗新的树上,这棵树上除了关键点还有任意一对关键点的$lca$的信息 建立: 这里介绍利用单调栈的做法,首先我们要明确一个目的,我们要用单调栈来维护一条虚树上的链。也就是一个栈里相邻的两个节点在虚树上也是相邻的,而且栈是从底部到栈首单调递增的(指的是栈中节点 阅读全文
posted @ 2020-10-20 22:07 youth518 阅读(96) 评论(0) 推荐(0)
摘要: 点分治可以解决树上大规模路径问题 过程 : 每次找出重心,处理出所有跨过重心的信息,例如将一条长$k$的路径拆成两条跨过重心的链,然后递归处理,只会递归$O(log_n)$层,总复杂度为$O(nlog_n)$ 小 \(trick\) : 将每层处理的节点放入队列里,然后弹出队列清空,直接$memse 阅读全文
posted @ 2020-10-20 21:53 youth518 阅读(99) 评论(0) 推荐(0)
摘要: 题意: 有点复杂,自行浏览吧 题目链接 分析: 我们发现DP转移时需要记录以下几个信息: 打饭队列的队首是谁,上一个打饭的是谁,队列前$b[i]$个人的状态 然后我们根据这些信息设立DP状态,记$f[i][j][k]$表示该第$i$个人打饭(等价于前$i-1$个人已经买完饭)此时队列前7个人的状态是 阅读全文
posted @ 2020-10-20 21:00 youth518 阅读(70) 评论(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 阅读(113) 评论(0) 推荐(0)
摘要: 抱灵技巧 不用\(namespace\)或者\(c++11\)的话,变量名不能定义\(y1\) 求逆元时\(inv[0]\)一定要初始化为\(1\),不然组合数会出锅 杜教筛数论分块\(l\)要初始化为2 线性筛莫比乌斯函数的时候\(mu[i]=1\) 一定要计算程序内存是否过大,实在不会的话可以利 阅读全文
posted @ 2020-10-15 21:42 youth518 阅读(122) 评论(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 阅读(95) 评论(0) 推荐(0)