
DP
correct!
It's better to burn out than to fade away.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CCPC 2020 广告投放
题目链接这是一个DP问题,状态表示:dp[i][j]dp[i][j]dp[i][j]表示,前i−1i-1i−1集都决策完毕后,到达第iii集且当前剩余观看人数为jjj时,最大收益很明显可以得到:① dp[i+1][j/d[i]]=max(dp[i+1][j/d[i]],dp[i][j]+p[i]×j)dp[i+1][j/d[i]]=max(dp[i+1][j/d[i]],dp[i][j]+p[i] \times j)dp[i+1][j/d[i]]=max(dp[i+1][j/d[i]],dp[i][j原创 2020-11-30 10:35:53 · 703 阅读 · 0 评论 -
牛牛的汉诺塔
前面一篇博文写了玄学的做法,今天说说正解首先看得出来原计算过程是一个递归的过程,相当于暴力求解,dfs超时就是因为包含了太多重复计算,而dp效率高在于去掉了重复计算,因此可以考虑将dfs改为记忆化搜索,直接在原给的代码中加入记忆化即可#include <bits/stdc++.h>#define mem(a, b) memset(a, b, sizeof a)using ...原创 2020-02-09 20:10:13 · 191 阅读 · 0 评论 -
FatMouse and Cheese
题目描述:有一种游戏是的玩法是这样的:有一个n*n的格子,每个格子有一个数字。遵循以下规则:1. 玩家每次可以由所在格子向上下左右四个方向进行直线移动,每次移动的距离不得超过m2. 玩家一开始在第一行第一列,并且已经获得该格子的分值3. 玩家获得每一次移动到的格子的分值4. 玩家下一次移动到达的格子的分值要比当前玩家所在的格子的分值要大。5. 游戏所有数字加起来也不大,...原创 2020-02-06 16:30:23 · 110 阅读 · 0 评论 -
2020牛客寒假算法基础集训营1 I nico和niconiconi
选nico都对惹题目描述nico平时最喜欢说的口头禅是niconiconi~。有一天nico在逛著名弹幕网站"niconico"的时候惊异的发现,n站上居然有很多她的鬼畜视频。其中有一个名为《让nico为你脑的视频吸引了她的注意。她点进去一看,就被洗脑了"niconicoh0niconico*^vvniconicoG(vniconiconiconiconiconicoG(vniconi...原创 2020-02-04 17:08:14 · 571 阅读 · 0 评论 -
杨老师的照相排列 (线性DP)
AC通道杨老师希望给他的班级拍一张合照。学生们将站成左端对齐的多排,靠后的排站的人数不能少于靠前的排。例如,12名学生(从后向前)可以排列成每排5,3,3,1人,如下所示:X X X X XX X XX X XX同时,杨老师希望同行学生身高从左到右依次降低,同列学生身高从后向前依次降低。还以12名学生为例,给学生们编号(号码越小代表身高越高)后,按照此规则可进行如...原创 2019-09-22 11:20:02 · 288 阅读 · 0 评论 -
LCIS (最长公共上升子序列)
AC通道题目含义就是求最长公共上升子序列首先考虑,最长公共上升子序列 = 最长上升子序列 + 最长公共子序列,可以通过LIS和LCS的思想去考虑本题目。定义状态:dp[i][j]表示A数组的前i个和B数组的前j个且以b[j]结尾的LCIS长度考虑状态转移:转移有两种情况a[ i] == b[ j ]时候的转移,此时需要从 j 前面找一个比b[ j ]小的,已经构成L...原创 2019-09-24 17:12:30 · 439 阅读 · 0 评论 -
LCIS 线性DP O(N^2)
AC通道这个算法是对O(N^3)进行了一个优化,如果O(N^3)你不会,OK,点这里思路:我们的转移方程与O(N^3)一模一样,但是还有可以优化的空间先把O(N^3)的方程列出来for (int i = 1; i <= n; i++){ for (int j = 1; j <= n; j++){ if(a[i] == b[j]){ for (int k...原创 2019-09-25 18:31:30 · 165 阅读 · 0 评论 -
LCIS 滚动数组 + O (N^2)
前面介绍了LCIS的两种不同时间复杂度的解法,但是空间复杂度同样都是O(N * N),对于一些题目会存在空间超限的可能性,因此可以利用滚动数组对空间进行优化。如果不知道LCIS的两种解法 --> O(N * N)--> O(N ^ 3)观察下面的状态转移方程的代码:这其实是O(N ^ 2)的解法的代码for (int i = 1; i <= n; i++){ i...原创 2019-09-25 22:06:16 · 105 阅读 · 0 评论 -
2019牛客国庆集训派对day3 B 2018-div-matrix
AC通道玄学DP观察样例发现,结果都是完全平方数,找规律。。。都说了是玄学ans[i][j] = dp[i][j] * dp[i][j];dp[i][j] = dp[i - 1][j] + dp[i][j - 1] + 1;OK,到此结束。。。果然很悬#include <bits/stdc++.h>using namespace std;typede...原创 2019-10-03 15:03:22 · 253 阅读 · 0 评论 -
Codeforces 987 C Three displays
AC通道题目大意:从一个序列中选出一个符合条件i < j < k && s[i] < s[j] < s[k] 的序列,求c[i] + c[j] + c[k] 的最小值思路:dp[i][1]表示以 i 为结尾的一元组的最小值,dp[i][2]表示 i 结尾的二元组的最小值,dp[i][3]表示 i 结尾的三元组的最小值显而易见dp[...原创 2019-09-19 19:13:45 · 147 阅读 · 0 评论 -
洛谷 P1450 HAOI 2008 硬币购物
题目描述硬币购物一共有4种硬币。面值分别为c1,c2,c3,c4。某人去商店买东西,去了tot次。每次带di枚ci硬币,买si的价值的东西。请问每次有多少种付款方法。输入格式第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s输出格式每次的方法数说明di,s<=100000tot<=1000样例输入...原创 2019-09-18 22:33:06 · 346 阅读 · 0 评论 -
2019 icpc 上海网络赛 J Stone game(退背包)
AC通道题目大意:有n个不同重量的石头,求有多少种取的方案满足取走的石头的集合A的总重量>=剩余石头的总重,从取走的石头中任意去掉一个后集合A的总重<=之前剩余石头的总重首先,只要取走集合A中最轻的一个石头满足条件,那么其余的也一定满足。用背包取求解每一个集合总重的方案数,然后运用退背包的思想,枚举最小质量的石头,退去之后求解满足条件的方案数退背包#includ...原创 2019-09-17 20:08:54 · 333 阅读 · 0 评论 -
兑换零钱(DP)
题目链接:https://ac.nowcoder.com/acm/contest/910/B题目描述 :现有N元钱,兑换成小额的零钱,有多少种换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。(由于结果可能会很大,输出Mod 10^9 + 7的结果)输入描述:第一行输入一个整数T,代表有T组数据接下来T行,每行输入1个数N,N = 100表示1元钱。(1...原创 2019-05-27 10:57:27 · 812 阅读 · 0 评论 -
购物(dp)
题目链接认真读题,认真读题,认真读题!!!道路千万条,读题第一条,读题不仔细,wa两行泪!这是一个01背包的变形,三个循环,第一个枚举天数,第二个枚举前 i 天买到的糖果,第三个枚举今天买走的糖的数量。坑点:题目描述中明确说明要求n天中每天都能吃到糖果,所以前 i 天至少买到了 i 个糖果,所以第二层循环下标应该从 i 开始。初始化问题:第0天买0个花销为0,第0天无法购买多余0个,...原创 2019-07-11 17:48:46 · 163 阅读 · 0 评论 -
雪地靴
到冬天了,这意味着下雪了!从农舍到牛棚的路上有NN块地砖,方便起见编号为1…N,第i块地砖上积了fi英尺的雪。Farmer John从1号地砖出发,他必须到达N号地砖才能叫醒奶牛们。1号地砖在农舍的屋檐下,N号地砖在牛棚的屋檐下,所以这两块地砖都没有积雪。但是在其他的地砖上,Farmer John只能穿靴子了!在Farmer John的恶劣天气应急背包中,总共有B双靴子,编号为1…B。其中某些...原创 2019-07-23 23:13:24 · 354 阅读 · 0 评论 -
牛牛与数组(dp的优化)
题目描述牛牛喜欢这样的数组:1:长度为n2:每一个数都在1到k之间3:对于任意连续的两个数A,B,A<=B 与(A % B != 0) 两个条件至少成立一个请问一共有多少满足条件的数组,对1e9+7取模输入描述:输入两个整数n,k1 ≤ n ≤ 101 ≤ k ≤ 100000输出描述:输出一个整数-----------------------------------...原创 2019-07-20 20:20:08 · 367 阅读 · 0 评论 -
poj 1088 滑雪 (dp)
题目链接题意就不多解释了,题目思路很简单,搜索就行了,但是暴搜会TLE,但是对于每一个dfs(X, Y),如果参数一样的话结果也是一样的,我们用一个二维数组去保存每次计算的位置的结果,最后从所有的解里面挑出一个最大值即可。也许一开始考虑的时候会有这样的想法,是不是从最高的位置开始找就能找到解,或者从最低的位置开始,起始不是这样的,所以我们应该去搜索每一个位置为起点的时候的解。我还因为一点小...原创 2019-07-30 12:50:49 · 205 阅读 · 0 评论 -
hdu 2045 (dp)
题目链接题目描述:N 个格子染色,共有三种颜色,要求相邻的颜色不能一样,第一个和最后一个颜色不能一样,问有多少种染法分析:如果没有第一个和最后一个颜色不一样的要求的话,对于第 n 个格子染色,应该等于 dp[n - 1] * 2,就是另外两种与n - 1不同的颜色都染一次,但是可能会有重复,如果n - 1的颜色与第一个不同,我们就有了dp[n - 1]种染法,如果一样,那么第n -...原创 2019-08-01 13:31:50 · 126 阅读 · 0 评论 -
hdu 2191 (完全背包问题)
题目链接完全背包问题,没啥好说的,直接套板子,但是有一点我没注意到,wa了好久,简直被自己蠢哭了状态转移方程中,关于物品挑选的件数,循环的上限是物品的总数量和当前的钱能买的数量的最小值而且完全背包的转移方程是这样的for (int i = 1; i <= m; i++){ for (int j = 0; j <= n; j++){ for (int k = 0;...原创 2019-08-01 14:31:49 · 133 阅读 · 0 评论 -
hdu 1176 免费馅饼 (dp)
题目链接中文题,题目描述不再多说,直接说思路。首先是状态转移,用dp[ i ][ j ]表示第 i 时刻在第 j 位置能接到的最大馅饼数目,状态来源有三上一时刻左边位置转移过来 上一时刻右边位置转移过来 上一时刻当前位置转移过来因此我们得出了状态的转移过程,有一个问题在于,如何存放输入的数据能方便我们计算呢如果我们用一个二维数组a[ i ][ j ]表示在 i 时刻有 j ...原创 2019-08-01 16:01:51 · 136 阅读 · 0 评论 -
河南省第十二届省赛 B题 DNA序列---同源问题(简单DP)
题目链接:DNA序列—同源问题输入描述:输入有多组测试数据(不超过20组),每组数据格式如下:第一行: a b c d (4个整数 1 ≤ a , b, c ,d ≤ 20)第二行: s ( | s| ≤ 300 )第三行: t ( |t| ≤ 300 )输...原创 2019-05-25 19:25:41 · 456 阅读 · 0 评论