
ACM-动态规划
文章平均质量分 54
hahahahhahello
这个作者很懒,什么都没留下…
展开
-
UVa 1025 -A Spy in the Metro(动态规划)
按照红书学的动态规划,红书先讲的数字三角形和DAG上的动态规划问题,介绍了记忆化搜索和递推这两种方法,我感觉记忆化搜索比较好理解些,书上写动态规划的核心是状态和状态转移方程,对这个理解的不太还好 动态规化刷的第一题,书上是这么分析的,时间是单向流逝的,是一个天然的 ‘序’,影响的决策的只有当前的时间和所处的车站,用d(i,j)表示时刻i,车站j,最少还需要等待多长时间,边界是d(T,原创 2017-08-16 13:53:44 · 266 阅读 · 0 评论 -
CodeForces - 652C Foe Pairs
思路:记录下来每一个数在序列里的位置,然后记录每一个位置向右最远能到达哪个位置#include <stdio.h>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 3 * 1e5 + 10;int a[maxn],pos[maxn],mx[maxn];...原创 2018-04-07 09:17:57 · 274 阅读 · 0 评论 -
ZOJ2972 Hurdles of 110m (动态规划)
题意:初始有m能量,需要跑完n个区域,每个区域都有三种模式,快模式 ,需要t1[i]时间,f1[1]能量,普通模式,需要t2[i]时间,不消耗能量,慢跑模式,需要t3[i]时间,恢复f2[i]能量,求跑完n个区域最短需要多少时间?dp,需要注意补充能量后不能超过m。#include <iostream>#include <cstdio>#include <algo...原创 2018-04-19 13:56:18 · 188 阅读 · 0 评论 -
ZOJ - 3211 Dream City(贪心+背包)
贪心之后的01背包,与SDUT3903相似#include <iostream>#include <cstdio>#include <string.h>#include <algorithm>using namespace std;struct node{ int a,b;}no[255];int dp[255][255];bo...原创 2018-04-20 19:00:51 · 166 阅读 · 0 评论 -
HDU - 5542 The Battle of Chibi (dp+二维树状数组优化)
The Battle of ChibiTime Limit: 6000/4000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 2882 Accepted Submission(s): 1034Problem DescriptionCao Cao made up a...原创 2018-10-11 19:11:10 · 187 阅读 · 0 评论 -
POJ - 2836 Rectangular Covering(状压DP+几何)
题意:平面上有n个点,要求用矩形去覆盖所有的点,每一个矩形至少覆盖两个点,每一个点可以被重复覆盖,求最小的能覆盖所有点的矩形的面积。思路:枚举两个点,一个矩形覆盖这两个点的最小面积是以这两个点为对角线,所以我们可以得到个矩形,求出这些矩形的面积和覆盖的点,接下来就是状压了: ...原创 2019-05-19 16:53:16 · 256 阅读 · 0 评论 -
POJ - 1795 DNA Laboratory(状压DP)
题意:个只包含字母的字符串,求出包含这n个字符串的最短字符串思路:1.首先除去相同的和被包含在其它字符串里的字符串2.求出,把第i个字符串放到第j个字符串前花费3.状压,,第个字符串在最前面,状态为情况下的最小花费边界:递推方程:这样就求出了最短长度下的第一个字符串s4.从开始贪心的求出最优解#include <stdio.h>#include ...原创 2019-05-19 17:12:30 · 366 阅读 · 0 评论 -
POJ - 2441 Arrange the Bulls (状压DP)
题意:头牛,个牛棚,每个牛棚只能有一头牛,每头牛都只能在自己喜欢的牛棚里,给每头牛安排位置,总共有多少种安排方案?思路:每个牛棚可以放牛也可以不放牛,个牛棚,故可以用状压,表示状态下,给前i头牛分配牛棚的方案数 ( & ,)当前状态只与上一状态有关,可以用滚动数组来节省空间#include <stdio.h>#include <string....原创 2019-05-19 18:23:31 · 276 阅读 · 0 评论 -
POJ - 3254 Corn Fields (状压DP)
题意:个格子,有些可以放牛,有些不可以放牛,放的牛不能相邻,问共有多少种放牛的方案?思路:状压,表示第行状态为前行的方案数目,外层循环一行一行的枚举,内层嵌套枚举第行的状态和第行的状态,最后答案为#include <stdio.h>#include <string.h>const int mod = 100000000;int dp[15][1 <&l...原创 2019-05-19 19:18:02 · 254 阅读 · 0 评论 -
POJ - 3171 Cleaning Shifts(DP+线段树优化)
题意:头牛,每头牛在到时间段干活并需要数量的钱,想要在到时间段的每一时刻都有牛在干活,最少需要多少钱?思路:首先把不在到时间段干活的牛给去除,在把剩下的牛按照从小到大排序,表示从到都有牛干活的最下花费,挨个遍历每个时间段,有: 其中找最小值部分可以用线段树来优化#include <...原创 2019-05-21 19:44:25 · 335 阅读 · 0 评论 -
sdut 3903 CF(贪心+背包)
题意:在T分钟内完成n道题,每一道题花费时间c,每一道题完成时的得分为a-d*t,即完成这道题所给的初始分数减去完成这道题时所用的时间乘这道题每分钟减掉的分数,问在T分钟内能得到的最大分数是多少?思路:首先假设有2道题,先做1,在做2,得到的分数为 a1 - d1 * c1 + a2 - (c1 + c2) * d2 先做2,在做1,得到的分数为a2 - d2 * c2 + a1 - (c1 +...原创 2018-04-04 21:19:48 · 220 阅读 · 0 评论 -
FZU - 2214 Knapsack problem (01背包变形)
题意:明显的01背包问题,但是背包容量很大很大,开不了那么大的数组,我们可以转变一下思维,正常的01背包dp[i]表示背包容量不超过i的情况下最大价值,但是这里表示能装下i价值的物品所需要的最小容量。#include <iostream>#include <cstdio>#include <string.h>#include <algorithm&g...原创 2018-04-15 19:10:42 · 244 阅读 · 0 评论 -
UVA 437 巴比伦塔(DAG上的动态规划)
红书上的动态规划专题题意:有n种立方体,每种都有无穷多个,要求选一些立方体摞成一根尽量高的柱子,可以自行选一边当多高,使得每个立方体的底面长宽分别严格小于它下方的立方体的底面长宽思路:各个立方体 “能否被摞”关系是一个典型的二元关系,二元关系可以用图来建模,如果b能摞在a上,a到b就有一条有边向,所以这就是一个DAG,所要求的便是DAG上的最长路径,因为任意一条边都可以当作高,所以原创 2017-08-16 15:17:44 · 510 阅读 · 0 评论 -
UVa116 单向TSP 动态规划
题意:给出一个行列的整数矩阵,从第一列任何一个位置出发每次往右、右上或右下走一格,最终到达最后一列。要求经过的整数之和最小。整个矩形是环形,即第一行的上一行是最后一行,最后一行的下一行是第一行。输出路径上每列的行号。多解时输出字典序最小的。思路:表示从格子出发到最后一列的最小开销。同时记录路径。#include <stdio.h>#include <algori...原创 2017-08-16 19:40:28 · 318 阅读 · 0 评论 -
FZU 2129 子序列个数 (动态规划)
子序列的定义:对于一个序列a=a11,a22,......ann。则非空序列a'=ap1p1,ap2p2......apmpm为a的一个子序列,其中1例如4,14,2,3和14,1,2,3都为4,13,14,1,2,3的子序列。对于给出序列a,有些子序列可能是相同的,这里只算做1个,请输出a的不同子序列的数量。由于答案比较大,输出Mod 10^9 + 7的结果即可。Input第1行:一原创 2017-08-20 20:18:29 · 1129 阅读 · 1 评论 -
hdu 2546 饭卡-动态规划01背包
电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。 Input多组数据。对于每组数剧:第一行为正整数n原创 2017-08-15 11:24:44 · 246 阅读 · 0 评论 -
HDU1171:Big Event in HDU(01背包)
Nowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don't know that Computer College had ever been split into Computer College and Software College in 2002.原创 2017-08-15 11:33:23 · 236 阅读 · 0 评论 -
51Nod 1791 合法字符串 栈+动归
有一个括号序列,现在要计算一下它有多少非空子段是合法括号序列。合法括号序列的定义是:1.空序列是合法括号序列。2.如果S是合法括号序列,那么(S)是合法括号序列。3.如果A和B都是合法括号序列,那么AB是合法括号序列。Input多组测试数据。 第一行有一个整数T(1接下来T行,每一行都有一个括号序列,是一个由'('和')'组成的非空串。 所有输入的括号序列的总长原创 2017-08-23 15:30:56 · 615 阅读 · 0 评论 -
CodeForces - 742D Arpa's weak amphitheater and Mehrdad's valuable Hoses(分组背包+并查集)
CodeForces - 742D Arpa's weak amphitheater and Mehrdad's valuable Hoses 题意:n个人通过朋友关系分为若干组,每个人都有重量和美丽值,选取人在舞台承重量为W上跳舞,在不超过W的情况下求出最大美丽值,在每一个组里,要么挑选一个人去跳舞,要么挑选所有人都去跳舞,要么都不挑选 思路:分组背包模板题,分组背包算法如下(摘自背包...原创 2017-09-15 15:55:54 · 568 阅读 · 0 评论 -
劲歌金曲 UVA 12563
劲歌金曲 UVA 12563(If you smiled when you see the title, this problem is for you ^_^)For those who don’t know KTV, see: https://en.wikipedia.org/wiki/Karaoke_box There is one very popular song cal原创 2018-01-27 15:35:55 · 545 阅读 · 0 评论 -
Lighting System Design UVA - 11400
You are given the task to design a lighting system for a huge conference hall. After doing a lot of calculation & sketching, you have figured out the requirements for an energy-efficient design that c原创 2018-01-27 16:06:37 · 268 阅读 · 0 评论