DP
文章平均质量分 75
ahero_happy
这个作者很懒,什么都没留下…
展开
-
usaco4.1nuggets DP给出一些数,求不能由这些数(每个数的个数任意)相加而成的最大的数
给出一些数a[n],求不能由它们(每个数的个数可以是任意个)相加而成的最大的数,它不存在或无穷则输出0。数的个数小于等于10,1 分析:第一想法:筛法。数据太大,不行。 第二种想法:将最大的数范围二分,想用容斥原理算出一定范围内能组原创 2011-07-08 16:25:35 · 601 阅读 · 0 评论 -
斜率优化 hdu3480 pku3709 pku1180 pku2180
<br /> 斜率优化是DP优化的一种,假设状态转移方程为dp[i]=min or max (dp[k]+w[i,k]),我们假设取其中两个解k1,k2(不妨设k1<k2),然后得到dp[k1]+w[i,k1]-(dp[k2]+w[i,k2])这个表达式,不妨设结果想取原创 2011-04-17 19:35:00 · 1633 阅读 · 0 评论 -
Codeforces Beta Round #69 (Div. 2 Only) E树型DP 一树,每个结点有虫子,一次只能吃一只,不能停留,问从根结点出发再回到根结点最多能吃多少只虫子
/* 题意:一树,每个结点有虫子,一次只能吃一只, 不能停留,问从根结点出发再回到根结点最多能吃多少只虫子 思想:记录从某个结点出发再回到该结点最多能吃的虫子,然后 由将子结点按能吃的虫子数排序,选择。注意可能多次下去。 */ #include #include #include #include using namespace std; const int原创 2011-10-27 19:05:51 · 955 阅读 · 0 评论 -
hdu4111 成都现场赛A题
/* 题意:有N堆石子,每堆石子有一个数目,现有两个人博弈,每个人每次可以进行两个操作中的一个: 1、从某堆拿掉一个石子(若某堆石子为0了,那么这堆就不存在了);2、合并两堆石子 没有操作的就输。问是哪个赢 思想:如果每堆石子数都大于1,那么最后结果肯定相当于所有的堆合并成一堆后,然后再一个一个拿掉的结果。 因为如果那种情况是赢的人一定会不断合并堆来确保他是赢的。又因为所有堆的石子数都大原创 2011-11-10 11:57:06 · 4732 阅读 · 4 评论 -
北京1009 hdu4049 Tourism Planning DP初始化
Tourism Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 395 Accepted原创 2011-09-29 17:14:42 · 939 阅读 · 0 评论 -
hdu4003 2011大连赛区网赛1003一棵树,K个机器人遍历所有结点所需的最少权值和
/* 题意:一棵有权树,从根结点中放入K个机器人,求用这K个机器人遍历所有的结点最少的权值和 分析:dp[i][j]表示对于以i结点为根结点的子树,放j个机器人所需要的权值和。 当j=0时表示放了一个机器人下去,遍历完结点后又回到i结点了。状态转移方程类似背包原创 2011-09-04 14:50:44 · 4018 阅读 · 10 评论 -
树型DP ZOJ3527 8月月赛1008 一图N个点,N条边,取某个点会有信任点,同时某个点与它的后继结点同时取的话,它的信任点会改变一个值,问怎么取点,使得总信任点最大
/*题意: 一图N个点,N条边,取某个点会有信任点,同时某个点与其它的后继结点同时取的话, 它的信任点会改变一个值,问怎么取点,使得总信任点最大 分析:因为只有N个点,N条边,所以肯定是几个环(M个点M条边)加上一些尾巴, 对于环外的点,不断向上缩,有dp[i][0]+=原创 2011-08-29 10:50:18 · 1716 阅读 · 4 评论 -
按位DP hdu3967一个数划成两部分,相加能被k整除的方法数。一个区间的数总的方法数
结果为[0,b]中总的方法数-[0,a-1]总的方法数。求[0,b]的总的方法数,按位来划分,前面小于,等于,对应后面随意,小于或等于。注意前面全部是0是不可以的。 #include #include #include using namespace std; //原创 2011-08-25 19:06:06 · 853 阅读 · 0 评论 -
上海站1006 hdu4026
/* 题意:n行,每行n个点,规则排列。每个点有属性,0表示平常点,1表示坏点,既不能触碰,也不能从它上面飞过 2表示不能触碰,但可以从它上面飞过。现在要求有且一次经过所有平常点的路径数(一平常点到另一平常点 的直线路径中不能有坏点和平常点;平常点被触碰后原创 2011-09-12 22:10:40 · 1006 阅读 · 0 评论 -
hdu3899树中选择开会地点(树,树形DP) 多校六1010
/*题意:给一树,每个结点有人数,边有权值,表示经过这条边所需时间, 问取某个结点作为开会地点,所有人全部到达此结点最少所需总时间? 分析:先深搜一次,把以每个结点为根结点的子树的结点数目以及 子树中所有结点到此结点的时间和求出来。然后再利用上面所求的信息, 再深搜一原创 2011-07-29 17:38:12 · 862 阅读 · 0 评论 -
swjtu1583 用DP或最小费用最大流求一点至另一点两条路径的最大价值,同一格点算一次
//点有10^4方,不知道为什么0ms过。。。我原还担心会TLE,数据弱了,还是算法非常高效,时间复杂度什么的是浮云。//给一n*n矩阵,找两条从(1,1)至(n,n)的路径,使得路径中的数的和最大,相同的位置最多只能算一次。 //不知DP能不能做。最小费用最大流构图如下:将每原创 2011-07-28 17:49:48 · 953 阅读 · 0 评论 -
uestc1558最短路或线段树优化的DP 四川比赛B题
大于或等于某个价值的东西可以经过一段时间换取价值比它的大的东西,问最少经过多少时间可以换到价值大于M的东西? 因为关系最多有10^5,东西最多就会有2*10^5个,最关键的是价钱大小,所以将所有的东西按照价值从小到大排序,便宜的i(对应的下标)经过一段时间可以原创 2011-07-23 19:22:27 · 1029 阅读 · 2 评论 -
第36届北京邀请赛D题 bupt199
题意:现在要打怪,白天和晚上打,怪物受到的损害不一样,白天为PD,晚上为PN。而打了一次怪后,在后面的T小时内不能再打,现在有N天,每天的白天和晚上时间T1,T2不一样,求怪物受到的最大损害? N 方法一:这题显然是DP,因为T1,T2太大,所以不能将它们表示为状态原创 2011-07-18 09:58:25 · 522 阅读 · 0 评论 -
多校联合1004,hdu3832
开始想用深搜做,但后面担心超时,再加上喵呜一直说用DP,就改用DP。dp[i][j][k]表示原字符串位置i,目标字符位置j,后面全变为k的最小操作次数。。。注意,这样的N维的初值不要只赋一个,要赋一维。。。#include #include #include using原创 2011-07-13 22:51:34 · 594 阅读 · 0 评论 -
几道简单的树状DP
<br /> 最近两天做了几题简单的树状DP,觉得简单树状DP只是应用了递归的思想,着重于把每个点作为根结点来思考。。。在对于某个点,可能要对其子树进行01背包或者组合什么的,然后得到这个点的什么信息,这样不断递归(往根结点递归,有时也会双向的)就推到根结点了。。。下面是原创 2011-03-28 21:36:00 · 1723 阅读 · 0 评论 -
应用四边形不等式优化的题
<br /> 四边形不等式是DP中的一个优化,做的几题状态转移方程都是f[i][j]=min(f[k][j-1]+w[k+1][i])(j-1<=k<i),不用优化的话,时间复杂度是O(n^3),用优化可达到O(n^2),而优化的实质就是证明其满足四边形不等式:k[i-原创 2011-04-06 12:05:00 · 814 阅读 · 0 评论 -
hdu 5037 Frog(2014年北京区域赛网赛F题1006)
Frog Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 0 Accepted Submission(s): 0 Problem Description Once upon a time, ther原创 2014-09-21 17:36:38 · 2027 阅读 · 7 评论