
ACM/ICPC_动态规划
文章平均质量分 57
just_sort
Acdream.
展开
-
Monkey and Banana Hdoj
DescriptionA group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time, provide the monkey with some blocks.原创 2015-09-10 19:02:45 · 930 阅读 · 0 评论 -
uva 674 Coin Change
【题目】打开的密码是acm2016【题意】给你一个面值n,你能通过用1,5,10,25,50这5种面值来找零,问最多的方案数。【状态表示】dp[i]表示当前需要找零i元的最优方案数。【状态转移】dp[j]->dp[j+w[i]],0【AC代码】#include #include #include #include using namespace std;c原创 2016-03-29 14:25:57 · 529 阅读 · 0 评论 -
uva 10003 切割木棍
【题意】给了一根长度为L的木棍,另外给了一些要切的点的坐标,可以把这个木棍理解为横坐标轴,每个能切割的地方的都有固定的坐标。现在要求你把这个木棍按照切割位置切割,每次切割消耗的能量就是当前木棍的长度。现在要你选择如何切割,使得消耗最小。【解题思路】区间dp.【状态表示】dp[i][j]表示从i到j这个区间的最小花费。【状态转移】dp[i][j] = min(dp[i][j],dp[i]原创 2016-03-29 15:05:20 · 833 阅读 · 0 评论 -
uva 10465 (完全背包)
【题意】有两种食物(数量无限)是Simpson喜欢的,每种食物都需要一个进食时间,现在他有时间t, 问能最多吃多少个食物,时间尽量用完,用不完求最小浪费时间情况下的最多能吃的实物数量。【解题思路】完全背包,除了0之外其他初始化为负无穷大,不断贪心取正值即可。(根据贪心的思想,当前的最优解必定由上一个最优解转移而来,可以用个for循环枚举物品个数,这里由于只有2个,原创 2016-04-01 10:48:54 · 365 阅读 · 0 评论 -
UVA 10404 (Bachet's Game)
【题意】给出总石子数n,和m堆石子,两个人轮着取石子,每次只能从总石子中取m堆中的一堆的个数的石子,取走最后一个石子的胜。S先取,O后取。【解题思路】这个题我不会,网查大牛做法,好巧妙!!!【状态表示】dp[i]表示当前剩余石子数为i的时候,1表示s取胜,0表示o取胜!【状态转移】。转移方程为当 i -a[j]>=0而且dp【i - a[j]】=0(0【总结】实质就是考虑当前s原创 2016-04-01 16:40:24 · 454 阅读 · 0 评论 -
UVA 10069 dp+高精度
【题意】给了你两个字符串s1,s2,问你s2在s1中出现的次数,注意是子序列就行了,不一定要连续.【分析】显然是个dp!【状态表示】dp[i][j]代表s1串中的前i个字符和字符串2中的前j个字符匹配的最大值。【状态转移 】dp[i][j] = dp[i-1][j] (s[i-1]!=s[j-1]),dp[i][j] = dp[i][j]+dp[ii-1][j-1],(s1[i-1]=原创 2016-04-04 17:06:12 · 394 阅读 · 0 评论 -
Codefoences Round #302 A (div1)
Programmers working on a large project have just received a task to write exactly m lines of code. There are n programmers working on a project, the i-th of them makes exactly ai bugs in every lin原创 2016-03-11 16:26:23 · 419 阅读 · 0 评论 -
BestCoder #75 C
题目【题意】中文题目,题意不解释【解题思路】dp[i][3]表示长度为i的时候结束分别有1个,2个,3个重复的字符的方案数。dp[i][3] = dp[i-1][0]*25+dp[i-1][1]*25+dp[i-1][2]*25;【AC代码】#include #include #include #include #include #include #include原创 2016-03-13 17:15:42 · 470 阅读 · 0 评论 -
NOIP 金明的预算方案
【题意】题目描述 Description金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:原创 2016-04-07 14:03:26 · 2479 阅读 · 0 评论 -
棋盘型动态规划 方格取数
【题意】有N*N的方格图(N 某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。输入描述 Input Description输入的第一行为一个整数N(原创 2016-04-07 15:06:39 · 2141 阅读 · 0 评论 -
UVA 620 Cellular Structure
【题意】给定一个细胞链,只有AB两种字母组成,有三种方式,一种是OA,一种是OAB,一种是BOA,O代表是正常的细胞链,最后看一下这个细胞链是否是由这些组合构成的,如果有多种方式构成,输出排在前边的方式。如果不是这三种方式中的一种,那么该细胞链已变异,作为第四种输出。【解题思路】dfs,根据字符串的结构来判断最后应该输出哪种转态。【AC代码】#include #include原创 2016-04-07 18:20:01 · 421 阅读 · 0 评论 -
UVA 103 (Stacking Boxes)
【题目】DescriptionBackgroundSome concepts in Mathematics and Computer Science are simple in one or two dimensions but become more complex when extended to arbitrary dimensions. Consider solving d原创 2016-03-29 10:31:30 · 629 阅读 · 0 评论 -
POJ 1661 Help Jimmy
【题意】Description"Help Jimmy" 是在下图所示的场景上完成的游戏。 场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。 Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时原创 2016-04-11 16:49:16 · 400 阅读 · 0 评论 -
UVA 10051 Tower of Cubes
【题意】给了n个立方体,并且给了每个面的颜色!并且给的顺序是按照质量由轻到重,这保证了我们的堆叠肯定是从上往下,且质量递增的。所以我们只需要保证下一个立方体的顶的颜色和上一个的底层相同就可以了。因此这是一个简单DAG上的最长路径问题!实际也可以用最长上升子序列的做法!【AC代码】#include #include #include #include #include using原创 2016-04-15 17:22:18 · 431 阅读 · 0 评论 -
UVA 10651 Pebble Solitaire
【题意】12个位置,有些有鹅卵石,有些是空的,2个连续的鹅卵石,如果其左边连着的那个是空的,那么第二个鹅卵石可移动到那个空的位置上,并移除第1个鹅卵石;如果其右边连着的那个是空的,那么第一个鹅卵石可移动到那个空的位置上,并移除第2个鹅卵石。问最后最少可以剩下多少个鹅卵石?【分析】由于3个连续出现的鹅卵石才有可能发生交换,所以枚举所有能够出现的状态,交换直接相邻3位取异或即可!记得回溯!原创 2016-04-15 19:32:52 · 404 阅读 · 0 评论 -
BZOJ 1025 游戏【置换群】
【题意】略,中文题可自己查看!【分析】在做题之前介绍一下置换群的基本概念。。。置换的概念是什么?一个有限集合的一一变换叫做置换,一对对置换组成了置换群。对于一个集合a(a[1],a[2],a[3]...a[n]) 通过置换可以变成 (b[a[1]],b[a[2]],b[a[3]]...b[a[n]]) b的作用就是置换(可以理解为某种函数的作用),将原来的集合映射成具有相应次序的集合a',a'原创 2016-05-03 20:42:15 · 659 阅读 · 0 评论 -
POJ 1160 dp + 四边形优化
一、四边形不等式基本理论在动态规划的转移方程中,常见这样一种转移方程:这两个定理证明在赵爽的《动态规划加速原理之四边形不等式》中给出了相关的证明。【题意】给出m个村庄及其距离,给出n个邮局,要求怎么建n个邮局使代价最小.【分析】dp(i,j)=min(dp(i-1,k)+w(k+1,j)) , i-1w(i,j)=w(i,j-1)+val[j]-val[原创 2016-04-20 17:05:16 · 645 阅读 · 0 评论 -
线性代数 高斯消元!UESTC 算法讲堂。
【预备知识】首先你要保证你懂下面的东西,才有必要往下看。 1.矩阵的基本运算。 2.知道一些行列式的基本性质。【算法描述】高斯消元!【算法原理】本来是想放现代书的原理的,可惜书找不到了。懂了这张图片,大概就懂高斯消元的基本原理了。那么代码就很好写了。我给一个算法实现!选自白书模板。【原创 2016-06-10 11:45:01 · 1137 阅读 · 0 评论 -
NOIP 2013 小朋友的数字
【题目链接】点击打开链接【解题思路】 对于最大子段和问题,我们有O(N)的算法。 具体的做法是这样的:当前要求第I位及之前的最大子段和,如果第(I-1)位及之前的最大子段和大于0,则显然这一位取了也未尝不可(不会减少),也就是当前这一位和前面一段连接起来。否则的话,就新开一段——把前面的最大子段和改成0以后继续往下扫描。 如果一定要说这是DP也可以。这样朴素原创 2016-07-09 11:23:12 · 1544 阅读 · 0 评论 -
UVA 1401 Remember the Word
【题意】给出一个有S个不同单词组成的字典和一个字符串。把这个字符串分解成若干个单词的连接,有多少种方法?【解题方法】令dp[i]表示以字符i结束的字符串的分解方案数,即dp[i+j] = sum(dp[i]) (j为一个单词的长度),初始化dp[0] = 1;把所有单词组成Trie,然后试着在Trie中查找单词即可。【AC代码】//File Name: Trie Tree.//C原创 2016-08-01 14:54:13 · 338 阅读 · 0 评论 -
Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(dp + BIT)
【题意】给定N≤105个蛋糕,编号为1∼N,每个都有体积Vi ,任意一个蛋糕都可以放在桌子上,对于蛋糕对(i,j),i可以放在j上,当且仅当i>j且Vi≥Vj ,求能摆放的蛋糕的最大体积?【解题方法】 dp[i]表示第i个蛋糕在最上面的最大体积和 dp[i]=max{dp[j]}+Vi,j原创 2016-08-09 08:59:20 · 364 阅读 · 0 评论 -
HDU 4604 Deque(LCS DP)
【题意】给定N≤105的一个序列,现在有一个deque 唯一的要求是deque里的数必须是不降的,求deque里的最多元素个数是多少【解题方法】【AC 代码】#include using namespace std;const int inf=0x3f3f3f3f;const int maxn=100010;int n,a[maxn];int f[2][maxn]原创 2016-08-09 10:52:27 · 407 阅读 · 0 评论 -
Manthan, Codefest 16 C. Spy Syndrome 2(Trie树套DP)
【题意】给你m个单词的词典和一句话,这句话中的每个单词都来自字典,字典中的每一个单词重复可用,把这句话所有大写字母变成小写字母,然后反转单词去掉空格,要求你恢复这句话。【解题方法】Trie+dp.dp[i]=:以i结尾的字符串是否可以解密,为记录答案直接存长度就可以了。复杂度O(n*1000)【AC 代码】//zxy#include using namespace std;原创 2016-08-10 09:40:15 · 382 阅读 · 0 评论 -
Codeforces 629C Famil Door and Brackets (DP)
【题意】定义一个合法串:(1),'('的总数 == ')'的总数。(2), 串中所有前缀 满足 '('的个数 >= ')'的个数。题意:给定一个合法串的长度n和一个长度为m的中间串s,要求你找到一个p串和q串,使得p + s + q是一个合法串且长度为n。问有多少种不同的方案数。 结果 % (1e9+7)。【解题方法】设置dp[i][j]表示长度为i的合法串且'('的个数原创 2016-08-10 10:24:09 · 360 阅读 · 0 评论 -
HDU 5623 KK's Number(博弈dp)
【题意】两个人轮番从n个数中每次选择任意个数, 每次获得的分数是所选数种最小的,两人采取的策略都是使得自己的分数减去对方的分数尽量大, 求最终第一个人的得分。【解题方法】由于每个人都是从大往小拿,先将序列排序。由于得分是最小值,我们不妨反向思考,f[i]:=剩余i个数,先手得分−后手得分的最大值。转移就看这个数先手取还是不取,不取则f[i−1],取则a[i]−f[i−1],ans=f[n]原创 2016-08-11 10:40:55 · 412 阅读 · 0 评论 -
Codeforces Round #370 (Div. 2) D. Memory and Scores
D. Memory and Scorestime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputMemory and his friend Lexa are competing to get原创 2016-09-13 19:20:21 · 759 阅读 · 0 评论 -
2016 ACM/ICPC Asia Regional Shenyang Online HDU 5900 QSC and Master(区间dp水题)
QSC and MasterTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 663 Accepted Submission(s): 240Problem DescriptionEvery school ha原创 2016-09-19 19:27:00 · 454 阅读 · 0 评论 -
【玩耍】一水
【训练赛地址】点击打开链接【PS】由于几乎是中文题目和题目比较短,就不说题意了。【A】中文题目,状压+BFS,没有什么坑点,上代码。【AC代码】////Created by just_sort 2016/12/1//Copyright (c) 2016 just_sort.All Rights Reserved//#include #include #incl原创 2016-12-02 14:43:10 · 544 阅读 · 0 评论 -
UVALive 6908 Electric Bike dp,BFS
题目链接:这里 题意:给了n段路,每段路长度不同,你有一辆车最多可以提供E的能量,你的车有四个档,最多换k次档 Assist Level 0 1 2 3 Assist Power 0 4 8 11 0档花费能量0,走的路程长度为0,1档花费1能量,走得最大路程为4…. ,每段路用一个档,如果这个档不能使你走完这段路,那么只能自己蹬,如果超过这段路长度,超过部分不计算到下一原创 2017-03-17 14:50:22 · 488 阅读 · 0 评论 -
hdu 5791 Two dp
题目链接:这里 题意:给你两个数组,问你公共子序列的数量是多少 解法:dp[i][j]表示第一个串考虑到i位,第二个串考虑到j位的答案是多少 那么dp[i][j] = dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1] 如果a[i]=b[j],dp[i][j]+=dp[i-1][j-1]+1//HDU 5791#include <bits/stdc++.h>using n原创 2017-03-17 15:12:05 · 311 阅读 · 0 评论 -
HDU 5781 ATM Mechine dp
题目链接:这里 题意: 你在银行里面存了不超过k元的钱,然后你可以取钱。 如果你取的钱超过了你在银行存的钱,那么你会被警告。 你最多被警告w次,问你采用最优策略之后,期望取完所有钱的次数是多少 解法: E(i,j):存款的范围是[0,i],还可以被警告j次的期望值。 E(i,j) = minik=1i−k+1i+1∗E(i−k,j)+ki+1∗E(k−1,j−1)+1这样时间复杂度是O原创 2017-03-17 15:39:24 · 569 阅读 · 0 评论 -
HDU 5773 The All-purpose Zero DP,贪心,LIS
题目地址:点我 题意:给你一个序列,找出最大上升子序列的长度,其中序列中的0可以变为任意整数(正负都可以)。 解法:无疑LIS,将所有的0全部提取出来,求出此时序列的LIS(不含0的),这是针对0在子序列的外面的情况,如0,1,2,3,0.那么如果0在子序列中间怎么办?很简单,把读入的非0的数的值减去这个数前面0的个数即可,如1,2,0,3,4。在提取出0后序列其实为1,2,2,3,LIS的长度原创 2017-03-17 21:33:24 · 401 阅读 · 0 评论 -
hdu 5763 Another Meaning kmp+dp
题目链接:这里 题意: 给你一个字符串A,给你一个字符串B。 说B这个字符串有两个意思,请问字符串A一共有多少个意思 解法: DP,dp[i]表示以i结尾有多少种意思,然后用kmp去转移就好了。首先dp[i] = dp[i-1] 当i点是匹配点是, dp[i] += dp[i-len2]。//HDU 5763#include <bits/stdc++.h>using namespace原创 2017-03-18 10:14:38 · 726 阅读 · 0 评论 -
【BZOJ3875】【Ahoi2014】骑士游戏 SPFA处理有后效性动规
Description 【故事背景】 长期的宅男生活中,JYY又挖掘出了一款RPG游戏。在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽。 【问题描述】 在这个游戏中,JYY一共有两种攻击方式,一种是普通攻击,一种是法术攻 击。两种攻击方式都会消耗JYY一些体力。采用普通攻击进攻怪兽并不能把怪兽彻底杀死,怪兽的尸体可以变出其他一些新的怪兽,注意一个怪兽可能经原创 2017-03-18 11:05:35 · 650 阅读 · 0 评论 -
Codeforces Round #360 (Div. 2) E. The Values You Can Make dp ,滚动数组
题目地址:这里 题意:所有能组成K的C的子集方案中,能拼出哪些面额 解法:DP。n^3dpdp[i][j][k]表示用到了第i个数,当前和为j,子集和为k可不可行 裸的会稍微卡一下空间,这个滚动数组优化,或者直接用bool就可以了。我滚动数组优化的。//CF 688E#include <bits/stdc++.h>using namespace std;const int maxn = 5原创 2017-03-18 11:38:00 · 290 阅读 · 0 评论 -
Codeforces Round #358 (Div. 2) D. Alyona and Strings dp
题目链接:这里 题意:给你两个串,s和t,现在要你在s中找k个不相交的子串,然后在t中这k个都出现,而且顺序和在s中一致,让你最大化长度和 解法:DP。dp[i][j][k][0]表示s中第i个等于t中第j个,一共匹配了k段后,且继续往下延续,这时候的总长度为多少。dp[i][j][k][1]表示匹配了k段后,不往下延续的答案是多少 然后像LCS一样转移就好了。复杂度分析:O(n*m*k)//原创 2017-03-18 19:18:02 · 308 阅读 · 0 评论 -
Educational Codeforces Round 13 E. Another Sith Tournament 状压dp
题目地址:这里 题意:有n(n≤18)个人打擂台赛,编号从1到n,主角是1号。一开始主角先选一个擂主,和一个打擂的人。两个人之中胜的人留下来当擂主等主角决定下一个人打擂,败的人退出比赛,直到比赛只剩一个人。已知任意两人之间决胜的胜率Pij,求主角最终能够获胜的概率。 解法:设d(S,i)表示存活的人的集合为S,当前擂主为i∈S,主角获胜的概率。 为了方便我们把编号设为0∼n−1,递推边界d(1原创 2017-03-18 20:04:02 · 550 阅读 · 0 评论 -
CDOJ 1402 三角形棋盘上的博弈游戏 状压DP
题目链接:这里柱爷有天上课无聊,于是和同桌卿学姐一起下一种奇特的棋:棋盘如图:title在开始游戏前,棋盘上已经放好了一些边,然后柱爷先手,开始在棋盘上没有边的位置添加一条边上去如果添加边后围成一个三角形则获得一分(对于棋盘上游戏开始前已经围好了的三角形,两个人都不得分)并且下一轮还该他!否则下一轮该另一个人。如果两个人都以最优策略下棋,那么柱爷能赢么?注:只算最小的三角形!(三个边围成的三角形)如原创 2017-03-18 21:21:40 · 528 阅读 · 0 评论 -
8VC Venture Cup 2016 - Final Round D. Preorder Test 二分,树形dp
题目链接:http://codeforces.com/contest/627/problem/D 题意:给你一棵树,带点权,让你找到一个dfs搜索的顺序中,至少大于k个点,且这k个点的最小值最大,对于DFS序,你可以随意安排子树的访问顺序解法: 最小值最大,或者最大值最小这种题首先考虑二分,二分答案,然后我们进行check,我们把大于mid的点标为1,然后我们就可以开始树dp了。显然对于某个点来说原创 2017-03-27 15:16:15 · 685 阅读 · 0 评论 -
Educational Codeforces Round 9 E. Thief in a Shop dp fft
题目链接:http://codeforces.com/contest/632/problem/E 题意:http://blog.youkuaiyun.com/just_sort/article/details/54310734 解法2: DP容易想到4维dp,用dp[i][j]表示取i次,价值为j是否存在,但是这样的复杂度为10^12爆了,所以要减少一维,先对n个数排序,然后n个数都减去第一个数(这样做的目原创 2017-03-27 16:12:24 · 526 阅读 · 0 评论