dp
高凌霄
这个作者很懒,什么都没留下…
展开
-
hdu 1712 ACboy needs your help
dp[i][j]代表前i个科目花费j天所能获得的最大的分。 可以写出状态转移方程: dp[i][j]=max(dp[i][j],dp[i-1][j-k]+map[i][k]); 这里k从0循环至j。 比较简单。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace st原创 2015-10-20 21:20:50 · 308 阅读 · 0 评论 -
poj 2184 Cow Exhibition(01背包)
题目链接:http://poj.org/problem?id=2184 a[i]:第i头牛smartness,b[i]:第i头牛funness. 因为题目中存在负数,第一点先消除负数的状态,看题目可知可定义shift=100000为0点。 dp[i][j]:前i头牛总smartness为j的情况下,总的smartness和funness最大的大小。 dp[i][j]=max(dp[i-1][原创 2015-11-19 21:49:52 · 247 阅读 · 0 评论 -
uva 10891
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1832 题目思路: 题目的目的是使A得更多分。设某序列为序列a,A取最优f(a),使其变成序列b,B取最优,一直取到序列为0. 那么怎么取呢,取的这一步必定包含在从左端取一个到全部或者从右原创 2016-02-02 16:59:19 · 318 阅读 · 0 评论 -
hdu 1025
JGShining's kingdom consists of 2n(n is no more than 500,000) small cities which are located in two parallel lines.Half of these cities are rich in resource (we call them rich cities) while the原创 2016-04-13 17:10:39 · 273 阅读 · 0 评论 -
hdu 1058 Humble Numbers
B - Humble NumbersTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 1058DescriptionA number whose only prime factors are 2,3,5原创 2016-04-13 20:19:46 · 274 阅读 · 0 评论 -
华工校赛 F. Bracket Sequence
F. Bracket SequenceTime Limit: 1 Sec, Memory Limit: 128 MBDescriptionA bracket sequence is a string,containing only characters "(", ")", "[" and"]". A correct bracket sequence is a bracket seque原创 2016-04-27 10:30:53 · 516 阅读 · 0 评论 -
加分二叉树(感觉像是区间dp)
【问题描述】 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。 每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都 有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下: subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数原创 2016-05-10 17:09:40 · 775 阅读 · 0 评论 -
Codeforces 148D D Bag of mice(概率dp1)
D. Bag of micetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThe dragon and the princess are arguing about what t原创 2016-05-03 15:12:35 · 302 阅读 · 0 评论 -
CSU 1725 加尔鲁什·地狱咆哮对阵虚灵大盗拉法姆
E - 加尔鲁什·地狱咆哮对阵虚灵大盗拉法姆 Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu S原创 2016-05-04 16:03:52 · 644 阅读 · 0 评论 -
GCJ1C09C - Bribe the Prisoners
GCJ1C09C - Bribe the Prisonersno tags ProblemIn a kingdom there are prison cells (numbered 1 to P) built to form a straight line segment. Cells number i and i+1 ar原创 2016-04-20 20:54:38 · 442 阅读 · 0 评论 -
codeforces 492B
英语不好,比赛时没看懂题。 题意:两个人a,b。a只能从点f(1,1)出发前往f(n,m),只能向右或向下走,b从f(n,1)出发前往f(1,m),只能向上或向右走。且他们走过的轨迹只能有一个交点。 分析:1.因为只能有一个交点,所以对于某一点f(i,j)来说,只存在两种情况,一种是 - (1)a从f(i-1,j)进入f(i,j)走向f(i+1,j), - (2)b从f(i,j-1)进入原创 2015-11-24 20:43:55 · 462 阅读 · 0 评论 -
hdoj 2546 饭卡
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 遇到这一类有限定条件的dp,先想想有什么方法能将它转化为普通dp,然后在用丰富的经验ac它 只要m>5,则最贵的菜必选。升序排序,01背包计算出前n-1道菜最多花费。#include<iostream>#include<cstdio>#include<cstring>#include<a原创 2015-11-19 15:44:15 · 392 阅读 · 0 评论 -
hdu 2955 Robberies
刚开始一直以为概率最低为0.01,就乘以一百变成整数,化为纯的01背包问题求解。结果果不其然wa了。 想了一会儿,可以将金钱看成重量,将所有金钱加起来几位最大重量。可以定义dp[i]为:装满容量为i的背包的最小概率。 就有状态转移方程:dp[i]=max(dp[i],dp[i-bag[i].v]*bag[i].p。 这里我将概率转成了不被抓的概率。#include<iostream>#inc原创 2015-10-10 15:59:55 · 380 阅读 · 0 评论 -
hdu 1074 doing homework
一道状态压缩的dp题。我是第一次接触这类题型,说实话,我是完全摸不着边。大神的解题报告我也看不懂,一行代码一行代码的响了很久,终于弄清了点头绪。 dp[i]:到第i种情况,最小扣分数。 我们用状态压缩,比如,二进制100代表完成了第三门课程。即dp[4]表示只完成第三门课程的最少扣分数。 本题还加入了路径记录。可以创造一个结构体。struct DPT{ int time; i原创 2015-10-10 21:15:02 · 299 阅读 · 0 评论 -
zoj 2972 Hurdles of 110m
体力值最高为m,刚开始没看到,一直wa。 dp[i][j]:跑完前i个区域还剩j点体力值。 所以有四种情况: 用a[i][5]数组储存每一行输入的五个数。 - if(j+a[i][3]<=m) dp[i][j]=min(dp[i][j],dp[i-1][j+a[i][3]); - dp[i][j]=min(dp[i][j],dp[i-1][j]); - if(j-a[i][4]>=原创 2015-11-11 13:48:37 · 289 阅读 · 0 评论 -
hdu 3182 Hamburger Magi
http://acm.hdu.edu.cn/showproblem.php?pid=3182 建议先做hdu 1074题。 同1074题思路差不多,但这里加了条件判断,即判断做第k个汉堡是是否做出了它的所有先决汉堡,对于每个先决汉堡,也要进行相同的判定。这显然有点难度。 优化的一个思路是在初始化时将所有dp.value初始化为负无限大,只有dp[0].value=0。此时,对于任意一种情况,只原创 2015-10-12 15:02:09 · 428 阅读 · 0 评论 -
hdu 4568 hunter
第一次做最短路的题型,花了好久学习最短路。做题,测试时发现有bug,找了4个小时,终于找了出来。尼玛,开心死了! 先用spfa算法算出每个宝藏点之间的最短路径,然后就变成了裸的状态压缩dp了。 建议先做1074题和3182题。 ro[i][0]表示第i个宝藏点距离边界的最短距离。 状态压缩思路同1074和3182差不多。#include<iostream>#include<algorith原创 2015-10-13 22:22:10 · 425 阅读 · 1 评论 -
hdu 2167 Pebbles 状态压缩dp
建议先做hdu1565题。两题类型相似。1565稍简单。 注意该题存在某行一个都不选的情况。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int dp[2][1<<20];int map[20][20];char c[20];int s[1<<15]原创 2015-10-15 16:43:25 · 378 阅读 · 0 评论 -
hdu 1565 方格取数(1) 状态压缩dp
做了很久的一道题。 做dp题要先写出子问题。 做dp题要先写出子问题。 做dp题要先写出子问题。 dp[i][j]代表到第i行第j种情况,能取得的最大的数。 所以dp[i][j]=max(dp[i-1][k]+sum,dp[i][j]); 这里k&j!=1。sum为改行的值。 定义一个dp[20][1<<20]的数组mle,可以定义一个dp【2】【1<<20】的滚动数组。#includ原创 2015-10-15 14:17:08 · 356 阅读 · 0 评论 -
hdu 4856 tunnel(bfs+状态压缩dp)
先用bfs算出第i个通道的出口到第j个通道入口的最短路。然后用状态压缩dp求解。这里注意我们需要用到二维的dp数组,第二位储存在第i种状态下最后完成的状态。 状态压缩dp:用i表示状态,若第j种状态已完成,则:dp[i][j]=min[dp[i][j],dp[i^(1<<k)][k]+dis[k][j];这里dis[k][j]表示通道k的出口到通道j的入口最短路距离想到状态压缩dp的话就很容易的原创 2015-10-31 23:00:29 · 356 阅读 · 0 评论 -
poj 3345 Bribing FIPA
比赛的时候做的这题,坑爹的,我这近段时间一直学树形dp,结果这唯一一道树形dp的题目我居然没看懂!! 这道题dp部分比较容易想出来,难点是输入格式,一直runtime error。 dp[v][j]:在结点v与它的子孙结点中选出j个城市需要付出的最小代价。dp[v][j]=min(dp[v][j],dp[son][k]+dp[v][j-k]);//son为v的一个子结点n和m的输入建议用ssca原创 2015-11-23 23:08:09 · 1024 阅读 · 0 评论 -
poj 1155 TELE (树形dp)
题目链接:http://poj.org/problem?id=1155 参考了这位acmer的,我用的是vector的方法:http://blog.csdn.net/woshi250hua/article/details/7635680 dp[i][j]:以结点i为根节点时拥有j个客户的最大价值。当结点i为叶子结点时,dp[i][1]=money[i];当结点i非叶子结点,dp[i][j]=原创 2015-11-15 01:10:05 · 302 阅读 · 0 评论