摘要:"题目" 直接爆搜,每次将两个可以合并也就是正整数的值合并,然后删去任意一个值。中途需要注意得点是,在dfs中,temp数千万不要开全局变量。还有一点就是因为原题要满足结果输出要先输出大数,后输出小数,但还是尽量少用swap,尤其是在有temp保存值的时候,还是少用swap 阅读全文
posted @ 2019-11-11 20:42 刘文尧 阅读 (4) 评论 (0) 编辑
摘要:"题目" 状压DP或者随机化贪心,DFS也能过,但需要掌握很多的搜索剪枝技巧。 本题的搜索剪枝技巧主要采用了减少重复的计算和最优化剪枝。 减少重复计算 由于原图被分为了两块,一块是已经被挖掘的点,一块是还未被挖掘的点。我们考虑每次枚举下一个要加上的点的时候,肯定要找到未被挖掘的点。为了枚举的时候快速 阅读全文
posted @ 2019-11-11 18:14 刘文尧 阅读 (3) 评论 (0) 编辑
摘要:$Tarjan$算法 $Tarjan$求强连通分量 概念: 如果两个顶点互相可达,则它们是 强连通 的。如果一幅有向图中任意两个顶点都是强连通的,则这幅有向图也是强连通的。 强连通分量就是图中具有连通性的一个最大子集,一般可以用来缩点,即相互到达的一堆点可以将他们有用的信息统一到一个点上去。求解强连 阅读全文
posted @ 2019-11-10 21:35 刘文尧 阅读 (6) 评论 (0) 编辑
摘要:"题目" 因为该题需要求解方案数,因此我们不能用计数题的常用方法,即用递推来解决,类似于动态规划的思想。 我们用$dp[i][j][h][o]$表示第一个串枚举到了$i$,第二个串枚举到了$j$,$A$中取了$h$串,$o$表示选不选当前第i位的方案数。 可以得出以下的状态转移: 如果此位不选择的话 阅读全文
posted @ 2019-11-10 11:26 刘文尧 阅读 (7) 评论 (0) 编辑
摘要:"题目" 首先考虑二分,然后发现最小长度越大的话,赛道就越少。所以可以用最终的赛道个数来判断长度是否合理。问题转化为给定一个长度,问最多有多少条互不重叠路径比这个给定长度大。 考虑贪心,毕竟贪心也是二分check函数的常用做法。原图毕竟为一棵树,每条路径都由一个端点一个终点和他们的$LCA$之间的连 阅读全文
posted @ 2019-11-09 18:50 刘文尧 阅读 (5) 评论 (0) 编辑
摘要:"题目" 题意简化一下就是找题目给定的n个数最多能消掉多少个,我们用个tong[i]来记录i这个数值能不能用小于等于i的货币组合起来,等于1意味着他只能由自己本身的货币组成,等于2说明他可以被其他货币组成(此时的数不一定是货币,但等于2的货币不能要),最后只需要统计一下n个数里有几个tong等于1即 阅读全文
posted @ 2019-11-09 16:18 刘文尧 阅读 (3) 评论 (0) 编辑
摘要:"题目" 悬线法的思想——即扫描线的思想,每个矩阵必定是由两个障碍来构成左右边界或者上下边界。 如果此两个障碍组成了左右边界,枚举这两个障碍中途更新这两个障碍之间的矩阵上下边界,并且更新最大值。 考虑如何线性求出两个障碍的矩阵上下边界, 我们可以把障碍按x坐标排序,然后对于每个障碍,都找x比他大的障 阅读全文
posted @ 2019-11-09 09:50 刘文尧 阅读 (8) 评论 (0) 编辑
摘要:"题目" $DP$ 设状态$dp[i]$为$i$位置放了斑点牛,前$i$个位置能得到的最多的牛。 有方程$dp[i]=max(dp[j]+1,dp[i])$,而我们并不知道什么$j$可以使$i$不在区间内 由于$i$位置放了牛,又因为$i$所在的区间只能放一个,$j$不能跟$i$同属于一个区间,又因 阅读全文
posted @ 2019-11-09 08:33 刘文尧 阅读 (9) 评论 (0) 编辑
摘要:"题目" 数位$DP$ 数位$DP$一般用于对满足一个什么条件的数的个数进行计数,且该数的数据范围很大的问题进行求解。这种题的状态一般都跟长度、限制条件、最高位上的数有关。 本题的状态为:$dp[i][j]$为长度为$i$的,最高位为$j$的$windy$数个数。 此状态有个非常简单的递推式,$dp 阅读全文
posted @ 2019-11-08 15:36 刘文尧 阅读 (4) 评论 (0) 编辑
摘要:"题目" 差分约束+判正环 差分约束: 给定几个形如$a_i b_i=c_i$的不等式。 一般问题都会问$a_i b_j$的最小值或最大值,或者是否所有条件都满足。 松弛操作$dis[now] dis[to]y=c);加入原题要问b a的最大值,则转化到图中就是x到y的最小值因为最大值要所有路径都要 阅读全文
posted @ 2019-11-07 17:02 刘文尧 阅读 (5) 评论 (0) 编辑