区间DP
team79
我在努力。
展开
-
Lightoj 1031 区间DP
这里 每次向下深入的时候通过 减掉 向下的DFS值来模拟交替取值!而且注意 注释的地方!dp[i][j]表示i-j之间两者取值的最大差值!AC代码如下:#include #include #include #include using namespace std;#define MAX 0x3f3f3f3fint dp[101][101];int N;int s原创 2013-10-18 15:15:59 · 753 阅读 · 0 评论 -
hdu 4512 DP
dp【i】【j】表示从1到i 从j到N并且以i为前半段的最右的最长的回文序列的原创 2014-08-03 16:10:50 · 599 阅读 · 0 评论 -
uva 10896 DP
dp【i】【j】表示先手所能获得的AC代码如下:#include #include #include #include using namespace std;int dp[110][110];int f[110][110], g[110][110];int N, num[110], sum[110];int main(){ while( cin >> N &&原创 2014-05-23 22:31:55 · 522 阅读 · 0 评论 -
uva 1362 区间DP
2014.5.20呵呵 这么晚了,突然想起上次追原创 2014-05-20 02:17:07 · 576 阅读 · 0 评论 -
vijos 1069 区间DP
这题首先有一个推论,就是最短路径肯定是没有相交的边,所以之可能是一条一条边d原创 2014-04-08 21:02:44 · 666 阅读 · 0 评论 -
sdut 1309 区间DP
开始看的时候真的是不知道怎么转移啊。。。。。最后看了下别人的思路,大概理解了就是说dp【i】【j】 那么考虑 i ,i要么单独刷,要么和别的一起刷所以转移方程就是dp[i][j] = dp[i][j-1] ; (i + k - 1 >=j && arr[j] == arr[i])//单独刷 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1dp[i][j原创 2014-03-25 21:31:15 · 657 阅读 · 0 评论 -
poj 1651 区间DP
这一题,首先可以知道的是 1, N肯定是留到最后的,他们是不可能被拿走的,如果你无法理解正推的话,可以这样想当还有1.。。。N的时候,那么谁是最后一个被拿走的呢,假设是k的话,那么1到k k到N之间的一定要先拿走那么dp【1】【N】 = min( dp【1】【k】 +dp【k】【N】 +cost )( 1 那么当a到b的时候也是类似 dp【1】【N】 = min( dp【a】【原创 2014-03-25 20:54:22 · 648 阅读 · 0 评论 -
poj 1159 DP
题意:给你一个字符串,求使其变成回文串所添加的字母的最少数dp【i】【j】 表示i到j变成回文串所需添加的最少字母数if s【i】 == s【j】 dp【i】【j】 = dp【i+1】【j-1】else dp[i][j] = min( dp[i][j-1] , dp[i+1][j-1] ) + 1AC代码如下:#include #include #include原创 2014-03-21 17:04:47 · 638 阅读 · 0 评论 -
hdu 4283 区间DP
意思什么的在注释中......AC代码如下:#include #include #include using namespace std;int dp[101][101][101];int MAXN = 0x3f3f3f3f;int N;int diaoser[101];inline int min( int a, int b ){ return ( a < b ?原创 2013-08-10 15:58:06 · 615 阅读 · 0 评论 -
hud 2476 区间DP
来源:http://blog.csdn.net/juststeps/article/details/9207187先是考虑将所有与目标字符串不相同的刷成目标串:dp[i][j]表示刷i-j区间,初始条件:dp[i][j]=dp[i+1][j]+1;对于k=(i+1...j )如果str[k]==str[i],则dp[i][j]=min(dp[i][j],dp[i+1][k]原创 2013-08-11 11:11:15 · 640 阅读 · 0 评论 -
Zoj 3537 区间DP
转自:http://blog.csdn.net/woshi250hua/article/details/7824433状态转移方程弄懂了,但是因为没有做计算几何,所以凸包的求解看不懂。。。。以后看。。。。先刷DPAC代码如下:#include #include #include #include using namespace std;#define MAX 0x3f3f3原创 2013-10-08 19:21:39 · 706 阅读 · 0 评论 -
lightoj 1422 区间DP
状态转移。 如果clothes[i]==clothes[j]那么穿上第i件衣服之后不脱,在处理完[i+1,j-1]之后可以再使用这件衣服。所以dp[i][j]=dp[i+1][j-1]+1; 在某个区间之前或之后单独的穿一件衣服。 dp[i][j]=min(dp[i][j],dp[i+1][j]+1,dp[i][j-1]+1); 将原创 2013-10-08 20:15:04 · 813 阅读 · 0 评论 -
poj 2955 区间DP
经典的区间DP模型--最大括号匹配数。如果找到一对匹配的括号[xxx]oooo,就把区间分成两部分,一部分是xxx,一部分是ooo,然后以此递归直到区间长度为1或者为2. 状态转移方程: dp[i][j] = min(dp[i+1][j],dp[i+1][k-1]+dp[k+1][j]+1)(i和k是一对括号)AC代码如下:#include #include #includ原创 2013-10-09 15:53:04 · 619 阅读 · 0 评论 -
LeeCode 664. Strange Printer
题意有一个特殊的printer,每次可以从任意位置输出任意长度相同字符,但是会覆盖之前的输出,现在给一个字符串,问需要最少多少次能输出这个字符串。题解对于一个字符串:直接分成前后两部分输出如果首尾字符相同,那么可以先输出整个字符串长度的首字符。然后再输出中间的字符。那么另dp[i][j]dp[i][j]dp[i][j]表示输出i到j这一部分的字符串需要的最少次数,那么:...原创 2018-04-02 10:56:42 · 241 阅读 · 0 评论