
动态规划
洛师第一纯爱崔少
这个作者很懒,什么都没留下…
展开
-
A - 最长上升子序列
给出一个由 n(n\le 5000)n(n≤5000) 个不超过 10^6106 的正整数组成的序列。分别取出 11、22、33、44 即可。第一行,一个整数 nn,表示序列长度。第二行有 nn 个整数,表示这个序列。取出一些数字排在一起,这些数字是。最长上升子序列是指,从原序列中。这是一个简单的动规板子题。原创 2023-04-24 21:04:58 · 75 阅读 · 0 评论 -
开餐馆-dp01背包-动态规划
我们用一个整数序列 m_1, m_2, ... m_nm1,m2,...mn 来表示他们的相对位置。第 22 行: nn 个地点的位置 m_1 , m_2, ... m_n ( 1000000 > m_i > 0m1,m2,...mn(1000000>mi>0 且为整数, 升序排列);第 33 行: nn 个地点的餐馆利润 p_1 , p_2, ... p_n ( 1000 > p_i > 0p1,p2,...pn(1000>pi>0 且为整数)。标准的输入包含若干组测试数据。原创 2023-04-24 20:16:42 · 264 阅读 · 0 评论 -
Monkey and Banana
有nn种类型的砖块,每种类型的砖块都有无限个,第ii块砖块的长宽高分别用(x_i,y_i,z_i)(xi,yi,zi)来表示。在构建塔时,当且仅当A砖块的长和宽都分别小于B砖块的长和宽时,A砖块才能放到B砖块的上面。每个测试用例的第一行包含一个整数nn,代表不同种类的砖块数目n \leq 30n≤30。同时,由于砖块是可以旋转的,每个砖块的3条边可以组成6种不同的长宽高。接下来nn行,每行33个数,分别表示砖块的长宽高。你的任务是计算最高可以堆出的砖块们的高度。当n=0n=0的时候,程序结束。原创 2023-04-09 20:54:45 · 151 阅读 · 2 评论 -
拦截导弹-递减子序列-动态规划
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。第二行,输入k个正整数,表示k枚导弹的高度,按来袭导弹的袭击时间顺序给出,以空格分隔。第一行,输入雷达捕捉到的敌国导弹的数量k(k原创 2023-04-09 10:52:23 · 64 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping!-动态规划
它由一个棋盘(棋盘)和一些棋子(棋子)组成,所有棋子都用正整数或“开始”或“结束”标记。玩家从起点开始,最后必须跳入终点。在跳跃的过程中,玩家将访问路径中的棋子,但是每个人都必须从一个棋子跳到另一个棋子绝对大(你可以假定起点是最小的,终点是最大的)。一跳可以从一个棋子跳到另一个棋子,也可以跨越许多棋子,甚至你可以直接从起点跳到终点。在这种情况下你当然得零分一个运动员是胜利者,只要他能根据他的跳跃解决方案得到更大的分数。注意,你的分数来自于你跳跃路径中棋子的价值之和。你的任务是根据给定的棋子列表输出最大值。原创 2023-04-06 21:03:43 · 156 阅读 · 0 评论 -
Stock Exchange(LIS优化)-动态规划加二分
求最长上升子序列(LIS),由于数据范围比较大,普通的求最长上升子序列的方法时间复杂度为o(n^2),这里明显会超时,所以需要用时间复杂度为o(nlogn)的方法来优化。一定要手拟几个样例,演算一下,不然想不明白二分的过成;原创 2023-04-04 21:10:39 · 133 阅读 · 0 评论 -
Longest Ordered Subsequence-最长有序子序列-动态规划
xnk想要在家里造一个上楼的楼梯,众所周知,由于是上楼,而且xnk也不傻,一个楼梯的前一级肯定要小于下一级(即满足严格单调上升),由于xnk是x里村首富,当然要彰显自己的贵族气质,所以他希望楼梯越长越好。这个版本答案仍然时长时长很长,用二分好一些,用二分时长短一点,但我现在还不会,哈哈哈,会了再写个二分版本的。现在有n个木板(n原创 2023-04-03 20:18:51 · 135 阅读 · 0 评论 -
洛谷1176-路径统计2-动态规划递推
表示坐标(x, y)(x,y)上有障碍不能通过,且有1≤x, y≤n1≤x,y≤n,且x, yx,y至少有一个大于11,并请注意障碍坐标有可能相同。一个N \times NN×N的网格,你一开始在(1,1)(1,1),即左上角。每次只能移动到下方相邻的格子或者右方相邻的格子,问到达(N,N)(N,N),即右下角有多少种方法。对于100\%100%的数据,有N≤1000,M≤100000N≤1000,M≤100000。这个题需要先总结递推公式a[i][j]=a[i-1][j]+a[i][j-1],原创 2023-04-02 17:26:56 · 556 阅读 · 0 评论