
动态规划
文章平均质量分 50
henuzxy
已经成为刷题过千的男人,即将成为cf 1900分的男人。
展开
-
leetcode 1320. Minimum Distance to Type a Word Using Two Fingers (dp O(N) Solution)
You have a keyboard layout as shown above in the XY plane, where each English uppercase letter is located at some coordinate, for example, the letter A is located at coordinate (0,0), the letter B is...原创 2020-01-31 00:26:49 · 872 阅读 · 0 评论 -
L2-014. 列车调度(Dilworth定理)
Dilworth定理 :对于一个偏序集,其最少链划分数等于其最长反链的长度。 理论上的证明,可以参考http://lam8da.github.io/2010/03/17/dilworth-theorem-about-chain-and-anti-chain/和google代码很简单就是nlogn求最长上升子序列 代码如下:#include<bits/stdc++.h>u...原创 2018-03-04 22:04:44 · 230 阅读 · 0 评论 -
codeforces 997F Consecutive Subsequence (dp)
题意就是让你找一个最长的公差为1的等差数列,然后输出他们的下标。思路:用一个map表示到当前这个数的最大长度为多少,则有如下递推公式 mp[a[i]]=mp[a[i]−1]+1mp[a[i]]=mp[a[i]−1]+1mp[a[i]] = mp[a[i]-1] + 1然后用一个pre记录一下前序就行了。 代码如下:#include<iostream>#incl...原创 2018-05-07 19:05:29 · 463 阅读 · 0 评论 -
2018 计蒜之道 初赛 第二场 A. 淘宝的推荐系统
非常容易想到dp的一个题目,因为n的总和时小于6*1e5的,且0<=d<=100,所以我们对于每个p[i]寻找所有的绝对值范围内的数,查看他们的序列。 dp[i] 表示到i的最长序列数。 所以就有dp[p[i]]=max(dp[p[i]],dp[p[i]−j],dp[p[i]+j]);dp[p[i]]=max(dp[p[i]],dp[p[i]−j],dp[p[i]+j]);...原创 2018-06-05 13:29:06 · 274 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第三场)A PACM Team ( 多权值的 01背包)
链接对应题意: 给你一个背包是P,A,C,M对应四种样式大小。然后每个物品都有p[i],a[i],c[i],m[i],g[i],前面四个都是不同的重量权值,g[i]是它的价值,问你用该背包都够存放物品的最大价值,最后输出背包中的个数和物品序号。简单说就是一个用多种W(质量)的一个01背包,直接按照01背包的方式写代码就行了,不过注意降一层数组,然后路径还原记录物品就行了代码如下:...原创 2018-07-26 17:30:54 · 237 阅读 · 0 评论 -
牛客练习赛26 B 烟花 (概率dp)
链接:https://www.nowcoder.com/acm/contest/180/B 来源:牛客网小a有个烟花,每个烟花代表着互不相同的颜色,对于第个烟花,它有的概率点燃,现在小a要去点燃它们,他想知道产生颜色的期望个数 及 产生恰好产生种颜色的概率输入描述: 第一行两个整数 接下来一行个数,第个数表示第个烟花被点燃的概率 输出描述: 输出有两行 第一行表示产生不同颜色的...原创 2018-09-09 10:34:52 · 281 阅读 · 0 评论 -
leetcode 494. 目标和 (动态规划)
给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例 1:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释:-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1...原创 2019-05-13 13:29:33 · 598 阅读 · 0 评论 -
2019第十届蓝桥杯大赛C++B组 试题 B: 质数拆分
【问题描述】将 2019 拆分为若干个两两不同的质数之和,一共有多少种不同的方法? 注意交换顺序视为同一种方法,例如 2 + 2017 = 2019 与 2017 + 2 = 2019 视为同一种方法。题目其实不难,自己比赛的时候也是想到做法了,结果算出来的数贼大,感觉自己算错了。。。哎。。做法:(可能不是最佳的做法)先获得2019内的所有素数,然后就是一个从N个数里面凑成M的个数的题目了...原创 2019-06-06 11:24:26 · 4216 阅读 · 2 评论 -
leetcode 334. 递增的三元子序列 (dp)
给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例 1:输入: [1,...原创 2019-08-13 17:05:16 · 159 阅读 · 0 评论 -
POJ-1065 Wooden Sticks 动态规划之求下降子序列的个数。
有N根木棍等待处理。机器在处理第一根木棍时需要准备1分钟,此后遇到长宽都不大于前一根木棍的木棍就不需要时间准备,反之则需要1分钟重新准备。比如木棍按照(3,3)、(1,3)、(1,4)、(2,3)的顺序进入,共需要准备3分钟 Input 第一行是T,表示测试数据个数。测试数据的第一行是N(1 <= N <= 5000)此后一行是 l1 , w1 , l2 , w2 ,…, ln ,...原创 2018-02-11 21:09:40 · 465 阅读 · 0 评论 -
POJ-2385 Apple Catching(动态规划)
It is a little known fact that cows love apples. Farmer John has two apple trees (which are conveniently numbered 1 and 2) in his field, each full of apples. Bessie cannot reach the apples when they a原创 2018-01-30 11:55:24 · 426 阅读 · 0 评论 -
2018年全国多校算法寒假训练营练习比赛(第二场)B TaoTao要吃鸡(01背包 + 路径还原)
链接:https://www.nowcoder.com/acm/contest/74/B 来源:牛客网Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包 之后可以多携带h(h为0代表没有装备背包)重量的东西。玩了几天 taotao发现了一个BUG,当装备背包之后,如果可携带重量没有满,就 可以原创 2018-01-29 17:14:55 · 406 阅读 · 0 评论 -
ZOJ-3872Beauty of Array (动态规划)
Edward has an array A with N integers. He defines the beauty of an array as the summation of all distinct integers in the array. Now Edward wants to know the summation of the beauty of all contiguous s原创 2017-04-10 21:11:53 · 1243 阅读 · 1 评论 -
河南工业“玲珑杯”最大字段和
这是一道类似DP的题,不过非dp的方法也能做,比赛时总是无法确定区域的扫描,真是菜啊。 题目描述一个大小为n的数组a1到an(?10^4≤ai≤10^4)。请你找出一个连续子段,使子段长度为奇数,且子段和最大。输入第一行为T(1≤T≤5),代表数据组数。 之后每组数据,第一行为n(1≤n≤10^5),代表数组长度。 之后一行n个数,代表a1到an。输出每组数据输出一行,表示满足要求的子段和最大原创 2017-05-06 21:33:27 · 270 阅读 · 0 评论 -
POJ 3280 Cheapest Palindrome (将一个字符串变为回文串的最小代价) 区间dp
题意:给你一个字符串,对于每个字符添加或删除都要付出一定代价,问你把这个字符串变为回文串的最小代价是什么。首先构造数组 dp[i][j]表示从i到j是回文串所花费的代价,因为添加一个字符和删除一个字符对于回文串是等价的,所以取二者代价更小的就行。len是字符串的长度。则dp的范围是第一层 i 从len-1到0,第二层是从i+1到len-1。这样当构造dp[i][j]为回文串时。只能从dp[i+原创 2018-02-01 16:11:46 · 1207 阅读 · 0 评论 -
POJ 1742 Coins(多重背包可行性问题)
People in Silverland use coins.They have coins of value A1,A2,A3…An Silverland dollar.One day Tony opened his money-box and found there were some coins.He decided to buy a very nice watch in a nearby原创 2018-02-02 14:22:17 · 341 阅读 · 1 评论 -
POJ 3181Dollar Dayz (完全背包求方法数,高精度dp)
题目链接题意:很容易看懂,一家商店有K种物品,价值分别是1到K,都有无数件,你有N元钱,问你花光N元钱的方法有多少种.很容易想到 dp[i][j] 表示前i种物品可买J元的方法数。 则有以下地推公式。 if(j >= i) dp[i][j]=dp[i−1][j]+dp[i][j−i];" role="presentation">dp[i][j]=dp[i−原创 2018-02-03 12:50:51 · 302 阅读 · 0 评论 -
动态规划之最长公共子序列
好久没有刷过dp的题了,发现自己都快忘完了给定两个字符串s和t,求这个两个字符串最长的公共子序列的长度。这个问题也被称为LCS问题。 定义数组dp[MAX][MAX]; dp[i][j] 代表s的前i个和t的前j个的最长公共子序列的长度。 递推式如下: 当s[i] == t[j]时 d[i+1][j+1] = dp[i][j] + 1; 当s[i] != t[j]时 dp[i原创 2018-01-29 13:27:44 · 314 阅读 · 0 评论 -
动态规划之 01背包(一维,二维)
例题 HDU 2602 Bone Collector 传送门Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went t原创 2017-08-16 17:17:48 · 402 阅读 · 0 评论 -
动态规划之完全背包
链接不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前. 死亡骑士:”我要买道具!” 地精商人:”我们这里有三种道具,血瓶150块一个,魔法药200块一个,无敌药水350块一个.” 死亡骑士:”好的,给我一个血瓶.” 说完他掏出那张N元的大钞递给地精商人. 地精商人:”我忘原创 2018-01-29 15:36:42 · 210 阅读 · 0 评论 -
POJ-1163(The Triangle)动态规划基础题
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5(Figure 1) Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top an原创 2017-04-08 17:07:05 · 1648 阅读 · 0 评论