动态规划
zephyr_pro
人所有的愤怒全部来自自己的无知。
展开
-
O - Treats for the Cows POJ - 3186【动态规划】
状态转移方程难与上青天啊,动态规划一直是心中的痛,但是努力的取征服它;FJ has purchased N (1 <= N <= 2000) yummy treats for the cows who get money for giving vast amounts of milk. FJ sells one treat per day and wants to maximize t原创 2017-11-25 10:55:56 · 383 阅读 · 0 评论 -
D - Domination ZOJ - 3822[概率dp]
题意:问期望多少天能把一个n*m的棋盘放成每一行每一列都至少有一个棋子的样子,一天只能放一个。题解:动态规划,可以考虑dp[i][j][k]dp[i][j][k]dp[i][j][k]为i天放了i行和j列的概率,然后可以通过当前状态可以转移到下一天的概率。如使i+1i+1i+1天 :占i行和j列占i+1行和j+1列占i行j+1列占i+1行j列具体转移见代码。收获:概率不是平...原创 2018-10-26 19:58:12 · 175 阅读 · 0 评论 -
1003: [ZJOI2006]物流运输[最短路+dp]
题意:存在有m个码头,修改运输成本k,以及e条路,让设计一条n天的路线,使得花费最小,每一条路线都是从头跑到尾。题解:我们可以先到设计f[i]f[i]f[i]表示从第一天到第iii天的最小花费,t[i][j]t[i][j]t[i][j]表示第iii天到第jjj天从1-&gt;n的最短路是多少,通过dijkstra或者spfa都能跑出来,需要标记在[i,j][i, j][i,j]天内哪些码头能用...原创 2018-10-29 21:09:47 · 170 阅读 · 0 评论 -
XOR-pyramid CodeForces - 984D [区间dp]
题意:给出n长度的序列,以及q个询问区间,问区间内连续子段的最大f值,其中 f(b)={b[1]f(b[1]⊕b[2],b[2]⊕b[3],…,b[m−1]⊕b[m])if m=1otherwise,f(b)={b[1]if m=1f(b[1]⊕b[2],b[2]⊕b[3],…,b[m−1]⊕b[m])otherwise,f(b) = \begin{cases} b[1] &...原创 2018-09-05 17:37:30 · 148 阅读 · 0 评论 -
Elevator CodeForces - 984E (dp+记忆化搜索)
题意:有n个人在一个9层楼的建筑里工作,n个人需要按照先后顺序上电梯,但是下电梯的顺序没有规定(可以以任意顺序下电梯),问最少的时间可以把所有的人运送完成。题解:记忆化搜索,对于每个人必须需要按照顺序上电梯,我们建立dfs(int i,int cur,int a,int b,int c)dfs(int i,int cur...原创 2018-09-05 17:14:45 · 264 阅读 · 0 评论 -
2018 wannafly-day2-Princess Principal
题目链接题意: 给出一串括号串,然后多次询问某个[l,r][l,r][l,r]区间内是否为何发的括号串题解:使用栈维护出每个字符对应匹配的哪一个括号,然后两个循环处理出当前括号能够匹配到最远的括号是谁AC代码:#include <iostream>#include <stdio.h>#include <set>#inclu...原创 2018-08-12 17:42:12 · 240 阅读 · 0 评论 -
2018 wannafly-day1-Growth
题意: 给出两个属性a, b以及很多个档次(xi,yi,zi)(xi,yi,zi)(x_i, y_i,z_i), 当a>=xi,b>=yia>=xi,b>=yia>=x_i,b>= y_i时以后每天获得ziziz_i的奖励,一天只能让a+1或者b+1,问m天后最多能得到多少奖励题解: 将所有的x和y进行从小到大的排序,然后离散化,使用f[i][j]来记录当a到达...原创 2018-08-12 17:36:24 · 197 阅读 · 0 评论 -
F - Schrödinger's Knapsack ZOJ - 4019
题意:有两种物品价值分别为k1, k2, 数量分别有n, m个,接下来输入他们所占的空间大小,问怎么放才能使得空间为c的背包里价值最大 解法:才开始读题发现类似于01背包,但是无奈数据量太大,后来证明也是不对的,但是这个题肯定是dp没跑了,但那是转移方程没有找到。 分析:两种物品的价值分别都是一样的,所以要优先放体积最小的才能让结果最优,出于这个目的,建立dp[i][j], 表示取第一个物品的...原创 2018-05-30 22:50:53 · 198 阅读 · 0 评论 -
H - transaction transaction transaction
vj地址:https://vjudge.net/contest/184664#problem/H;#include #include #include #include #include #include #include #include #include #include #include using namespace std;const int maxn = 2原创 2017-09-13 20:41:38 · 260 阅读 · 0 评论 -
M - Help Jimmy POJ - 1661【动态规划】
“Help Jimmy” 是在下图所示的场景上完成的游戏。场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下落。Jimmy每次下落的高度不能超过MAX米,不然就会摔死,原创 2017-11-23 17:16:12 · 364 阅读 · 0 评论 -
B - Maximum Subarrays Kattis - maximumsubarrays[动态规划]
题意:给出一个数列,需要找出k个连续字段,让他们的和最大。题解:动态规划,首先可以假设dp[i][j]dp[i][j]dp[i][j]为加上第j个数字分成i段的最大值,然后存在转移方程dp[i][j]=max(dp[i][j−1]+a[j],max(dp[i−1][1],dp[i−1][2],…,dp[i−1][j−1])+a[j])dp[i][j] = max(dp[i][j - 1] +...原创 2018-11-14 16:31:41 · 852 阅读 · 0 评论