HUST算法实验
文章平均质量分 57
Sanchez·J
这个作者很懒,什么都没留下…
展开
-
算法实验T16——POJ2228 Naptime
求这头牛能恢复的体力最大值。原创 2024-01-09 12:01:07 · 335 阅读 · 0 评论 -
算法实验T15——POJ1636 Prison rearrangement
也就是过去的和过来的人数相等,不好思考。我们先考虑过去的和过来的可以不等的情况,原问题就是一个子问题。我们会发现,现在这个问题具有最优子结构,于是考虑用DP求解。题目大意: 有两个监狱,每个监狱里面有 n 个囚犯,现在希望交换 n / 2 对囚犯。那么如果保证这个条件,希望尽可能多的交换囚犯。我们用图来存储这种 “不能呆在一起” 的关系,有这种关系就连一条无向边。最后我们从大到小找第一个为1的DP[i][i]对应的i即为答案。分别表示第 i 个连通分量中,在第一个监狱和第二个监狱的分别有多少人。原创 2024-01-06 17:35:54 · 952 阅读 · 0 评论 -
算法实验T14——POJ 1185炮兵阵地
以上其实就完成了状态压缩,现在我们可以用串的运算来翻译约束条件,设a[0...n-1]表示每一行的地形状态,设 S、L、LL依次表示第 i 行、第(i - 1)行、第(i - 2)行炮兵安置状态。而对于炮兵的安置方案,对于每一个位置,也是放和不放两个状态,我们也可以转化为二进制串,1表示放炮兵。最后的答案就是最后一行的倒数第二行的所有状态中DP[L][S][n-1]最大的一个。那么对于每一行,我们枚举其前两行和当前行的所有符合约束的状态,有状态转移方程。一行内的炮不能相距小于2个距离,等价翻译为。原创 2024-01-02 19:30:00 · 1247 阅读 · 0 评论 -
算法实验T13——POJ1088 滑雪
这道题是二维下的最长下降子序列,可以用类似的动态规划解决。用二维数组DP[][],DP[i][j]表示以(i,j)处为止的最长下降序列。先将每个点 m[i][j]其中nx, ny为该点周围四个点之一的坐标。,这样可以保证无后效性,状态转移方程为。原创 2024-01-01 20:17:18 · 331 阅读 · 0 评论 -
算法实验T12——POJ1050 To the Max
先考虑其一维的类似问题:最大连续子数组和问题,也就是在一个数组中找和最大的子数组,这个问题通常采用动态规划解决,状态转移方程式为。,其中DP[i]表示以下标结尾的最大连续子数组和,最终的答案是DP[0~n-1]中最大的一个。这道题其实可以很巧妙地往一维转化。如何将二维转化为一维?将二维的其中一维固定,求一个最大为 100*100 矩阵中的子矩阵中元素之和的最大值。原创 2024-01-01 17:33:37 · 437 阅读 · 0 评论 -
算法实验T11——POJ3579 Median
那么对于0~n-1的每一个i,lower_bound(a + i + 1, a + n, a[i] + middle) - a就是与a[i]差值小于middle的数的总数,再用n去减,得到的就是与a[i]差值大于等于middle的数的总数,全部加起来就是差值绝对值大于等于middle的总数。取L 为最小差值,R为最大差值,每次对mid检查,如果对于当前的mid有半数以上的差值比mid大,则L++;给出一个数列,然后计算数列里各个数之间的差值的绝对值,形成一个新数列,求新数列的中位数。原创 2024-01-01 11:55:25 · 370 阅读 · 0 评论 -
算法实验T10——POJ3269 Building A New Barn
先抛开约束,那么可以x,y方向分别中位数求解,得最优的位置。这时候看这里是不是牛的位置,如果不是,那么这就是答案。已知 N 头牛的位置,问牛舍建在哪里,牛到牛舍的距离和最小(不能建在牛的位置)。由此,对于x或y方向,如果点的个数是奇数,那么。分别从 x 方向和 y 方向如此考虑即可。如果是,考虑往旁边移动,很类似的中位数求解的变型。原创 2023-12-31 11:55:58 · 355 阅读 · 1 评论 -
算法实验T9——POJ1723 SOLDIERS
这个问题中稍有不同,y方向需要移到同一高度,与上述是一样的,但还需保证x方向连续排列。确实如此,假设先按这种方案移动,使其中两个点的对应的点交换,那么一定会在中间产生一段交叠区域,即多余花费。当 n 为奇数时,a只能是取最中间那个点的位置(假设取最中间那个点右边相距为 d 的位置,那么有。的最小值,为了向中位数方法的方向靠近,我们在每个绝对值里提出一个相同的值(因为在可以用中位数方法的问题中,一些士兵站在矩阵的一些方格内,现要把他们移动到一横排,并连续地排成一队,问最少需 要移动多少步。原创 2023-12-31 10:49:46 · 644 阅读 · 1 评论 -
算法实验选做1——POJ2506 Tiling
可以用三个变量辗转递推节省空间。这道题的关键其实在于高精度,相当于一道高精度模板题。求用 2 × 1 和 2 × 2 的瓷砖构成 2 × n 的长方形的种数。原创 2023-12-30 21:12:16 · 450 阅读 · 1 评论 -
算法实验T8——POJ3233 Matrix Power Series
但直接就和的话还是会有很多重复计算,可以分奇偶讨论k,对S二分:即k为偶数时,,由此可实现二分求解,重复利用子问题的解。已知一个 n * n 的矩阵 A,计算。对于单个矩阵的幂想到采用。,S 的值对 m 取模。原创 2023-12-30 17:20:46 · 354 阅读 · 1 评论 -
算法实验T7——POJ3714 Raid
这里我们已经得到了一个解mi(两子问题中更优的解),那么可以根据这个解来剪枝:由于我们已经按x坐标排序,那么对于那些到最中间点的x方向距离(即。而题中只有一点不同,就是点分为了两种类型,求的是一种类型(士兵)到另一种类型(发电站)最小距离,不能直接套用上述解法。其实只需要将相同类型的点之间的距离预设为无穷大,这样就可以消除类型差异的影响,把两种点当成一种来处理。)已经大于mi的点,其和另外一部分中任何一个点的距离一定大于mi,无需再考虑。有两组坐标,一组是 n 个发电站的坐标,一组是 n 个士兵的坐标。原创 2023-12-30 10:57:28 · 447 阅读 · 1 评论 -
算法实验T6——POJ2503 Babelfish
输入一个字典,字典格式为 n 行“英语 外语”的对照表。然后是若干个外语单词,让你翻 译,输出它们对应的英语单词。如果字典中不存在这个单词,则输出“eh”。原创 2023-12-29 21:02:49 · 374 阅读 · 1 评论 -
算法实验T5——POJ 2366 Sacrament of the sum
由有序联想到二分,遍历其中一个序列,对于遍历的每一个数 x,在另一个序列二分搜索(10000 - x),时间复杂度O(nlogn)。已知两个给定的序列,一个升序排列,一个降序排列,在这两个序列中各找一个数,它们加 起来恰好等于 10000。原创 2023-12-28 07:50:35 · 404 阅读 · 1 评论 -
算法实验T4——POJ3295 Tautology
输入由 p、q、r、s、t、K、A、N、C、E 共 10 个字母组成的逻辑表达式, 其中 p、q、r、s、t 的值为 1(true)或 0(false),即逻辑变量;现在要做的就是对于每一种取值情况计算该表达式,如果所有情况结果都是真则是永真式。计算采用栈来实现:栈存储数值,遍历表达式,首先,注意到只有5个逻辑变量,因此取值情况一共 2^5 = 32 种,可以直接用5个循环嵌套讨论出所有取值情况。问这个逻辑表达式是否为永真式。原创 2023-12-26 16:02:35 · 345 阅读 · 0 评论 -
算法实验T3——POJ1753 Flip Game
可以发现,对于每一个格子,其实只有主动翻转一次和不主动翻转两种情况,因为主动翻转两次效果会完全抵消。因为是求最少步数,我们可以从0次到16次枚举,对于每一种主动翻转次数,枚举出所有情况,对每一种情况模拟构造检查是否是解,如果是,则当前主动翻转次数就是最终解。有 4*4 的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑 -> 白或者白 -> 黑)时,其周围上下左右(如果存在的话)的格子的颜色也被反转,问至少反转几个格子可以使 4 * 4 的正方形变为纯白或者纯黑?原创 2023-12-26 07:39:16 · 478 阅读 · 0 评论 -
算法实验T2——POJ1005 I Think I Need a Houseboat
,现在的任务是给定一个坐标,求出该坐标 在哪一年年底会被河水侵蚀。假设给定的坐标到圆心的距离不会等于半圆的半径。,因此半圆面积不会正好是每年增长的面积的整数倍,故年数就是半圆面积除以增长速度的整数部分加1。第一行输入坐标个数,第二行开始输入坐标,每个坐标占一行,每个坐标由横坐标和纵。密西西比河岸某处陆地因为河水侵蚀,每年陆地面积都在减少,每年减少。刚好淹到(x, y)时,半圆的面积为。减少的陆地面积呈半圆形,即该半圆形面积以每年。坐标组成,坐标值为浮点数,单位为英里。,半圆形的圆心坐标为(原创 2023-12-26 09:20:47 · 340 阅读 · 0 评论 -
算法实验T1——POJ1000 A+B Problem
【代码】算法实验T1——POJ1000 A+B Problem。原创 2023-12-26 09:14:50 · 401 阅读 · 0 评论