上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页
摘要: 题目链接 题解 $d$数组Dijkstra预处理即可。然后建反向图,dp。 状态:$dp[i][j]$表示第i个节点是否(\(j=1/0\))已使用2操作时的答案。 转移方程: \[ dp[v][0]=min(dp[v][0],dp[u][0]),dp[v][1]=min(dp[v][1],dp[u 阅读全文
posted @ 2021-03-25 22:21 violet_holmes 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 由于数据范围无法枚举$n$量级的次数,只得处理每个障碍物对答案的影响。可以发现,每个障碍物所在列的另一个方格无法被$2\times 1$的矩形覆盖,只能将矩形横过来,而这会使两行的覆盖错位(由左向右考虑)。这时我们需要下一个障碍物将其纠正,当相邻两障碍物同行且下标差为偶数,或异行且下 阅读全文
posted @ 2021-03-25 22:20 violet_holmes 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 贪心呐,策略是由倒数第二层节点向上递归,将所有未交换的子节点与递归到的节点互换。若根节点未移动,则将其与任意子节点互换即可。 简单证明:节点$i$一定需要和与它一条边即可相邻的节点(父结点或子节点)交换。设节点$i$深度为$d_i$,且$d_$及以下的节点全部处理完毕(也就是只剩下它 阅读全文
posted @ 2021-03-25 22:19 violet_holmes 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 易得$a$中的元素均在$s$中存在,但倘若原样照搬会产生其他的$gcd$值,因此需要删去或增添些元素。因为删除元素影响的$gcd$值也许不止当前观测的一个,题解作者并未想到删除元素的算法,便尝试增添元素。推导可知,设$a$序列最小值为$mina$,若存在$a_i$满足$a_i% mi 阅读全文
posted @ 2021-03-22 22:32 violet_holmes 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 设$a_i$表示节点$i$被覆盖次数,用差分求出。可以发现,如果存在节点$i$使得$a_>a_i,a_{i+1}>a_i$则一定不存在被所有线段覆盖的节点($i$一定会把两边的线段断开),因此最长单峰子序列(先单调不降后单调不升)的长度即为答案。正反2次求LIS,记录$l_i,r_i 阅读全文
posted @ 2021-03-20 20:43 violet_holmes 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 模板题:HDU1712 讲解 模型:给定n件物品,其中第i种物品体积为v[i],价值为w[i]。将这些物品划分为k组,每组物品最多选1件。求总体积不超过m的前提下,物品最大总价值。 思路:既然每组只可选一件,可以将其视作一件物品,但决策时需循环组内物品取最优。 伪代码: for ( 1 ≤ i ≤ 阅读全文
posted @ 2021-03-20 20:41 violet_holmes 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 ⭐:将转移条件倒推也是回溯dp路径的方法之一 可以发现,标签为1,3的节点与标签为2的节点各自互不相邻,由此想到二分图。将该图黑白染色(若无法染色则判断不可行),对于每个连通块1,3为其中一种颜色,2为其中一种颜色,如果存在大小为$n2$(或者$n3+n1$)的独立集则判断可行。连通 阅读全文
posted @ 2021-03-20 20:39 violet_holmes 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 ⭐:试图达到或超过某目标值的dp可以考虑背包。 将高度视作体积,吃掉所延长的生命时间视作价值,井高视作背包容量,此题即可转化为一个类背包问题。因为我们是依时间由小到大的顺序对垃圾进行决策的,因此所找到的第一个可以达到井高的垃圾,其时间一定为最短时间。 状态:$dp[i]$表示当前垃圾 阅读全文
posted @ 2021-03-15 22:25 violet_holmes 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 ⭐:①可以将整除的条件转化为余数为$0$。②枚举左右端点可以找寻单调性,尝试固定一端二分另一端。 暴力的话枚举左右端点,然后$O(n)$求乘积余数,总时间复杂度为$O(n^3)\(。其中区间乘积求余可以使用线段树维护,又可发现,若区间\)[i,j]$的乘积可以被$k$整除,则对于$j 阅读全文
posted @ 2021-03-13 19:12 violet_holmes 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题解 ⭐:单调栈可以维护$[1,i]$中大于或小于$a_i$的元素。 由于数据范围枚举左右端点并不现实,因此想到求出每个元素对于答案的贡献。设$[1,i)\(中最后一个\)>a_i$的数为$l$,$(i,n]\(中第一个\)>a_i$的数为$r$,$(r,l)$即为$a_i$作为最大值的最 阅读全文
posted @ 2021-03-13 19:11 violet_holmes 阅读(48) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页