上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 16 下一页
摘要: 一道不怎么简单的dp题 我们定义状态f[i][j][k][val](其中val∈{0,1})表示A串的前i个字符,分成k段,与B串的前j个字符匹配,并且A[i]选/不选的方案数。 那么我们考虑状态的转移, 当a[i]==b[j]时,f[i][j][k][1]可以从f[i-1][j-1][k-1][0 阅读全文
posted @ 2019-06-24 19:53 AD_shl 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 最短路的扩展题。 在没堵车之前,他会按照这张图的最短路走,所以我们跑一下dijkstra求一遍不堵车情况下的最短路,同时记录最短路径上每一个点的前驱。 考虑堵车的情况,我们枚举每一条边作为堵车的边,并标记。再跑一边dijkstra求一遍除这条堵车边的最短路,更新答案。 我们枚举每一条边作为堵车的边, 阅读全文
posted @ 2019-06-24 16:51 AD_shl 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 这是一道细节理解和处理的题目,我们需要建立坐标系,并且将每个视图中的位置正确转化成坐标系中的位置,注意每个视图是从正方体内部看到的。 为了处理每个位置有哪几种光线,我们可以将三条光线状压为三位二进制数,最后统计即可。 1 #include <iostream> 2 #include <cstdio> 阅读全文
posted @ 2019-06-21 20:00 AD_shl 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 这是一道状压dp的入门练习题 我们可以预处理出每一行国王的合法摆放方案,然后进行dp。 我们定义f[i][j][k]表示前i行,第i行的状态为j且使用了k个国王的合法方案数,那么存在 f[i][j][k]=∑f[i-1][j'][k'],其中j&j'=0,j&j'<<1=0,j&j'>>1=0 注意 阅读全文
posted @ 2019-06-20 19:00 AD_shl 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 纯搜索题 一开始思路比较混乱,但是仔细想想便能得出正解。 我们预处理出每一棵子树的大小、每一层的儿子们,之后进行一次dfs,暴力枚举删除每一棵子树,同时更新答案,同时注意标记是否删除。搜索完成后回溯。最终就能得出答案。 1 #include <bits/stdc++.h> 2 using names 阅读全文
posted @ 2019-06-19 21:19 AD_shl 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 一道关于优先队列的搜索题。 我们建立一个小根堆,将开始确定的值放进去,然后进行bfs。 对于每个点,向上下左右四个方向扩展,并且更新答案,同时将没入队的节点入队即可。 最后,我们得到了一个搜索完成的图,我们判断一下合法性,输出答案即可。 这道题有一个坑点:输入可能重复同一节点但权值不同,这种情况应当 阅读全文
posted @ 2019-06-19 15:37 AD_shl 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 贪心题,我们使用邻项交换的方法求解。 我们假设当前有两个相邻的人分别为1,2,他们的左右手的数字分别为a,b,假设1之前的人的左手的数字之积为x,那么当前的答案为 我们将这两个人的位置交换,显然,这两个人位置的交换不会影响其他的人的答案,那么交换后的答案为 我们假设以上四个数分别为k1,k2,k3, 阅读全文
posted @ 2019-06-17 21:14 AD_shl 阅读(231) 评论(0) 推荐(0) 编辑
摘要: dfs+dp 我们要在一个大矩阵中选出一个小矩阵使得小矩阵的分值最小 所以我们先用dfs枚举选哪些行,再在dfs选的行的基础上对列进行dp,最后更新答案即可。 具体地,我们先通过dfs枚举r行,然后计算两个数组:sum[i][j]表示在当前dfs确定的行的状态下,第i列和第j列相邻时产生的分值。s[ 阅读全文
posted @ 2019-06-15 21:12 AD_shl 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 模板来源:codevs 5429 根据背包问题的相关状态转移方程,我们不难写出朴素的算法 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace s 阅读全文
posted @ 2019-06-08 20:48 AD_shl 阅读(874) 评论(0) 推荐(1) 编辑
摘要: 本人是NOIP2017的亲历者,两年前这道题我在考场上随便打了个二分暴力,就草草结束了 如今在做这道题,便能简单的AC了 我采用的思路是二分答案,然后用dp判断答案的可行性。定义f[i]表示到i这个格子最大的分数,如果为一个极小值则可以认为这个点无法到达;x[i]表示i的位置,g表示当前二分的答案。 阅读全文
posted @ 2019-06-08 15:38 AD_shl 阅读(553) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 16 下一页