动态规划
文章平均质量分 62
UndyingPanda
一名在读cs大学僧,感谢关注!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[动态规划] 删除并获得点数
我们知道,如果我们选择了nums[i],那么我们就不能选择nums[i]-1和nums[i]+1,而题目要求我们获得最大点数,所以我们也应当选择所有的与nums[i]相等的那些数,也就是说假如与nums[i]相等的数有x个,那么我们就可以得到x * nums[i]个点数。这样我们创建一个dp数组,dp[i]表示到第i个位置的时候,我们隔位选座(也就是说我们如果选了sum[c],那么我们就不能选它相邻位置的sum[c-1] 和 sum[c+1]) 能够得到的最大点数。之后,删除 2 获得 2 个点数。原创 2024-09-08 11:03:08 · 580 阅读 · 1 评论 -
[动态规划] 电影院选座
这是一道很典型的动态规划题目,我们可以规定一个二维的dp数组,dp[i][j]表示到第i个位置,安排了j个人后座位的最大可能舒适度总和。那么,考虑到“取或不取”的原则,dp[i][j]的第i个座位,我们可以选择安排人坐,那么我们只要在前i-1个位置安排j-1个人即可,如果说我们不安排人坐,那么我们就要在前i-2人位置安排j-1个人(此处i-1个位置已经不能坐人了),所以我们很容易地得到递推公式dp[i][j]=max{dp[i-1][j],dp[i-1][j-1]+confort[i]}。原创 2024-08-28 20:28:01 · 836 阅读 · 0 评论 -
[动态规划 & 状态压缩] 课程大作业
描述小明是北京大学信息科学技术学院三年级本科生。他喜欢参加各式各样的校园社团。这个学期就要结束了,每个课程大作业的截止时间也快到了,可是小明还没有开始做。每一门课程都有一个课程大作业,每个课程大作业都有截止时间。如果提交时间超过截止时间X天,那么他将会被扣掉X分。对于每个大作业,小明要花费一天或者若干天来完成。他不能同时做多个大作业,只有他完成了当前的项目,才可以开始一个新的项目。小明希望你可以帮助他规划出一个最好的办法(完成大作业的顺序)来减少扣分。输入输入包含若干测试样例。原创 2024-07-08 13:59:05 · 1127 阅读 · 0 评论 -
[动态规划] Charm Bracelet
描述N(1 ≤NiWi(1 ≤WiDi(1 ≤DiM(1 ≤M≤ 12,880).输入输出样例输入4 61 42 63 122 7样例输出23。原创 2024-07-08 10:32:56 · 995 阅读 · 0 评论 -
[动态规划] 硬币
描述宇航员Bob有一天来到火星上,他有收集硬币的习惯。于是他将火星上所有面值的硬币都收集起来了,一共有n种,每种只有一个:面值分别为a1,a2… an。Bob在机场看到了一个特别喜欢的礼物,想买来送给朋友Alice,这个礼物的价格是X元。Bob很想知道为了买这个礼物他的哪些硬币是必须被使用的,即Bob必须放弃收集好的哪些硬币种类。飞机场不提供找零,只接受恰好X元。输入第一行包含两个正整数n和x。第二行从小到大为n个正整数a1, a2, a3 … an (1原创 2024-07-02 12:40:27 · 621 阅读 · 1 评论 -
[动态规划] UNIMODAL PALINDROMIC DECOMPOSITIONS
描述1: (1)输入输出样例输入2345678102324131213920样例输出2 23 24 45 36 77 58 1110 1723 10424 19992 331143提示N < 250。原创 2024-06-28 13:49:00 · 1259 阅读 · 0 评论 -
[动态规划]怪盗基德的滑翔翼
描述怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。不得已,怪盗基德只能操作受损的滑翔翼逃脱。假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同。初始时,怪盗基德可以在任何一幢建筑的顶端。原创 2024-06-20 17:01:55 · 689 阅读 · 0 评论 -
[动态规划&位运算]表达式的期望值
描述给定如下表达式:其中Ai(0原创 2024-06-19 23:17:54 · 1202 阅读 · 0 评论 -
[动态规划] 最佳加法表达式
描述给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值。例如,在1234中摆放1个加号,最好的摆法就是12+34,和为36输入有不超过15组数据每组数据两行。第一行是整数m,表示有m个加号要放( 0原创 2024-06-19 13:13:05 · 819 阅读 · 0 评论 -
[动态规划] 滑雪
描述Michael喜欢滑雪这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。输入。原创 2024-06-19 10:41:07 · 705 阅读 · 0 评论 -
[动态规划] 最大上升子序列和
我们可以遍历前面的a[i],如果a[i]原创 2024-05-16 15:16:10 · 535 阅读 · 0 评论 -
[动态规划] 计算字符串距离
比如对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g”的方式来达到目的。无论增加还是减少“g”,我们都仅仅需要一次操作。我们把这个操作所需要的次数定义为两个字符串的距离。给定任意两个字符串,写出一个算法来计算出他们的距离。第一行有一个整数n。表示测试数据的组数,接下来共n行,每行两个字符串,用空格隔开。表示要计算距离的两个字符串字符串长度不超过1000。针对每一组测试数据输出一个整数,值为两个字符串的距离。3ab ab104。原创 2024-05-16 19:52:46 · 461 阅读 · 0 评论 -
[动态规划] 股票买卖
我们可以定义两个数组pre和after,pre[i]表示到第i天我们可以买卖一次股票得到的最大利润,after[i]表示从第i天往后我们可以买卖一次股票得到的最大利润,最后我们再遍历一遍结果取最大值即可。接下来的每组数据,第一行是一个整数 N (1原创 2024-05-16 21:55:00 · 367 阅读 · 0 评论 -
[动态规划] 数字组合
先介绍一种暴力枚举的方法吧,观察可知全部的情况最多只有2^20,也即1024*1024次,这完全是计算机可以接受的程度,于是我们直接枚举全部情况并且判断即可。输入的第一行是两个正整数n和t,用空格隔开,其中1原创 2024-05-16 23:16:36 · 542 阅读 · 0 评论 -
[动态规划] 完美覆盖
我们先计算一个n=2的时候,这是最小的单元(n=1的时候很明显,不可能被完全覆盖,或者从n必须为偶数理解)。比如n=4的时候,如果我们只是计算3*dp[2],那实际上我们在n=2,3这两列可以横着放多米诺牌。所以我们还需要考虑dp[i-4],即我们空出四列出来,然后计算dp[i-4]*2,然后保持这两列横着放,继续i-=2,因为我们刚刚使用了dp[i-4],这是没有考虑i-4和i-5列横着放并且i-3和i-2列横着放的情况。针对每一行的 n 值,输出 3 乘 n 棋盘的不同的完美覆盖的总数。原创 2024-05-13 21:48:58 · 898 阅读 · 0 评论 -
[动态规划] 分解因数
给出一个正整数a,要求分解成若干个正整数的乘积,即a = a1 * a2 * a3 * ... * an,并且1 < a1原创 2024-05-13 20:42:39 · 419 阅读 · 0 评论
分享