动态规划
dezhonger
这个作者很懒,什么都没留下…
展开
-
Leetcode1444
每次沿着水平或者垂直切一刀,将左边或上边的分给别人,剩余的保留,要求每次切出的必须包含至少一个字母'A',最后剩余的也必须包含字母'A',求有多少种切法思路:由于每次保留的都是右下角的那一块,我们设计这样的dp状态dp[i][j][k]表示剩余的左上角坐标是(i, j)当前共有k块的方法数状态转移是每次从水平切一刀,或者垂直切一刀。两块都必须包含字母'A',这个可以用二维前缀和来做 final int mod = 10_0000_0007; int[][...原创 2020-05-18 23:54:11 · 202 阅读 · 0 评论 -
Leetcode 629
题意题目链接从111到NNN一共NNN个数组成的一个数组,求逆序对为mmm的方法数有多少个思路动态规划定义dp[i][j]dp[i][j]dp[i][j]表示前iii个数(也就是111到iii)组成的数组中逆序对为jjj的方法数,考虑把数字i+1i+1i+1放置在数组的最前面,那么会增加iii个逆序对;如果放在第一个数之后,会增加i−1i-1i−1个逆序对,以此类推,如果放置在最后,那么...原创 2020-04-26 00:27:00 · 261 阅读 · 0 评论 -
Leetcode 446
给了一个数组,求等差数列有多少个,要求等差数列的长度至少为3. 比如:Input: [2, 4, 6, 8, 10]Output: 7Explanation:All arithmetic subsequence slices are:[2,4,6][4,6,8][6,8,10][2,4,6,8][4,6,8,10][2,4,6,8,10][2,6,10]数组长度N...原创 2020-03-01 16:21:30 · 222 阅读 · 0 评论 -
Leetcode837
参考了:https://zhuanlan.zhihu.com/p/86167813题意:初始是0点,每次可以从[1, W]中随机出一个数字,累加上去,直到自己的点数 > K, 求这个时候点数 <= N的概率我们使用动态规划来做:dp[i]表示我们达到点数为i的概率,注意到当 i >= K + W的时候 , dp[i] = 0,考虑dp[i]怎么求,点...原创 2020-02-09 19:52:43 · 439 阅读 · 0 评论 -
Leetcode808
有两个瓶子A和B分别有N毫升水,每次可以进行下面四种操作之一Serve100 ml of soup A and 0 ml of soup B Serve75 ml of soup A and 25ml of soup B Serve 50 ml of soup A and 50 ml of soup B Serve 25ml of soup A and 75ml of so...原创 2020-02-08 20:57:08 · 184 阅读 · 0 评论 -
Leetcode1223
给出每个点数不能连续出现的次数,求可能的方法数动态规划:dp(i, j, k)表示掷第i骰子的时候,是j点,并且j连续出现k次的方法数,dp(i, j, k) = dp(i - 1, j, k - 1) k > 1dp(i, j, k) = sum(dp(i - 1, j', x)), k =1, j != j', x是任意值第二个递推式编码的时候注意维...原创 2020-02-05 22:35:33 · 131 阅读 · 0 评论 -
Leetcode 801
给出两个数组,可以交换对应位置的数,问最少交换几次可以让两个数字都递增 ,题目保证存在有解。sol:dp解决,f[i]表示不交换第i位使前i位递增的最少交换次数,g[i]表示交换第i位使前i位递增的最少交换次数 public int minSwap(int[] A, int[] B) { //f[i] 不交换第i位的最小交换次数 //...原创 2020-01-29 03:11:23 · 204 阅读 · 0 评论 -
Leetcode688
在一个N×N的棋盘上(r, c)处有一个骑士,每一次等概率在棋盘上沿"马"字型跳,当跳了K次后,或者跳出棋盘就停止,问最后停在棋盘上的概率sol:dpdp[i][j][k]表示在第i次,在棋盘的(j, k)处的概率八个方向转移即可 public double knightProbability(int N, int K, int r, int c) { ...原创 2020-01-08 23:13:10 · 171 阅读 · 0 评论 -
Leetcode1301
一个网格,每个网格有个数字或者是障碍无法走过去,从右下角走到左上角,可以向左向上或斜着走一步,求出路径最大的和值和获得最大路径和的路径条数.动态规划:用两个dp数组分别维护最大的和,然后同时更新获得最大的和的路径数。具体看代码 private static final int[][] DIRS = new int[][]{{0, -1}, {-1, 0}, {-1, ...原创 2019-12-29 22:05:44 · 125 阅读 · 0 评论 -
Leetcode 1049 背包dp
https://leetcode-cn.com/problems/last-stone-weight-ii/注意到:其实等价于把石子分为两堆,求他们差的最小值,这就是一个裸的背包dp了 public int lastStoneWeightII(int[] stones) { int sum = Arrays.stream(stones).sum(); ...原创 2019-05-19 12:36:48 · 439 阅读 · 0 评论 -
bzoj2748 [HAOI2012]音量调节
Description一个吉他手准备参加一场演出。他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量。在演出开始之前,他已经做好了一个列表,里面写着在每首歌开始之前他想要改变的音量是多少。每一次改变音量,他可以选择调高也可以调低。音量用一个整数描述。输入文件中给定整数beginLevel,代表吉他刚开始的音量,以及整数maxLevel,代表吉他的最大音量。音量不能小...原创 2019-05-08 23:46:22 · 112 阅读 · 0 评论 -
LOJ1417
题目链接:https://www.luogu.org/problemnew/show/P1417复制一下别人的题解:如果没有b[i]这个属性的话就是明显的01背包问题。现在考虑相邻的两个物品x,y。假设现在已经耗费p的时间,那么分别列出先做x,y的代价:a[x]-(p+c[x])*b[x]+a[y]-(p+c[x]+c[y])*bya[y]-(p+c[y])*b[y...原创 2019-05-01 03:15:58 · 110 阅读 · 0 评论 -
LOJ1220 关路灯
题目链接:https://www.luogu.org/problemnew/show/P1220区间dp:dp[i][j][0/1]表示关闭区间[i,j]的最低消耗,第三维表示当前是在i位置还是在j位置举个例子:比如要计算dp[i][j][0](当前在i位置),那么可以由dp[i+1][j][0]转移过来或者由dp[i+1][j][1]转移过来如果由dp[i+1][...原创 2019-05-08 22:08:34 · 161 阅读 · 0 评论 -
LOJ1373 小a和uim之大逃离
题目链接:https://www.luogu.org/problemnew/show/P1373动态规划:dp[i][j][k][0/1] 表示在点(i, j)时,两人得分之差为k,第四维表示当时是a选还是b选 的方法数然后转移即可,方程看代码吧。注意到k先加一,题目实际上是要对k+1取模。#include <vector>#include <...原创 2019-05-04 02:38:29 · 104 阅读 · 0 评论 -
LOJ1005 矩阵取数游戏
题目链接:https://www.luogu.org/problemnew/show/P1005注意到每行是独立的,我们可以分别处理在求和。dp[i][j]表示当前区间为[i,j]的最大值,那么有如下方程cnt是当前取数的次数dp[i][j] = max(dp[i+1][j] + a[i] * pow(2, cnt), dp[i][j-1] + a[j] * pow(2...原创 2019-05-03 17:48:24 · 130 阅读 · 0 评论 -
LOJ1026 统计单词个数
题目链接:https://www.luogu.org/problemnew/show/P1026dp[i][j]表示前i个字母分为j份的单词个数预处理出s[i][j],表示从s[i, i+1, i+2...j]能分为的单词个数#include<iostream>#include<algorithm>#include<cstdio&g...原创 2019-05-03 16:43:25 · 185 阅读 · 0 评论 -
LOJ1541
题目链接:https://www.luogu.org/problemnew/show/P1541题解:dpdp[i][j][k][o] 表示用了i个类型1的卡片,j个类型2的卡片,3个类型3的卡片,4个类型4的卡片能获得的最大值.#include <vector>#include <list>#include <map>#incl...原创 2019-05-03 16:16:54 · 122 阅读 · 0 评论 -
LOJ1855
二维背包问题:#include <vector>#include <list>#include <map>#include <set>#include <deque>#include <queue>#include <stack>#include <bitset>#include ...原创 2019-05-02 20:25:25 · 78 阅读 · 0 评论