第一眼,我勒个去。。。然后看到n ≤ 300的时候就2333了首先把时间离散化,则对于一个时间的区间,可以知道中间最大的那个一定要被选出来,然后把区间分成左右两份于是区间DP就好了,注意用左开右开的区间比较方便2333如果暴力找区间内最大值是O(n3)的,当然st表就是O(n2logn)的了。。。不...
分类:
其他好文 时间:
2015-04-19 17:52:51
阅读次数:
152
一道经典的DP,对于DP问题,关键是要找准决策点,即需要做出决策的选择点。
本题有两个枚举点,一个是时间N,还有一个是挤奶的时间区间M; 然而枚举每个时间点是没有意义的,而且时间的范围很大,所以可以直接枚举挤奶的时间区间,dp[i]指的就是在第i个时间区间挤奶所获得的最大收益。递推公式dp[i] = max(dp[i],dp[j]+a[i].e);
#include
#include
#inc...
分类:
其他好文 时间:
2015-04-18 17:47:08
阅读次数:
131
时间限制:2000ms
单点时限:1000ms
内存限制:256MB
描述
给定字符串,求它的回文子序列个数。回文子序列反转字符顺序后仍然与原序列相同。例如字符串aba中,回文子序列为"a", "a", "aa", "b", "aba",共5个。内容相同位置不同的子序列算不同的子序列。
输入
第一行一个整数T,表示数据组数。之后是T组数据,每组数据为一行字符...
分类:
其他好文 时间:
2015-04-18 14:38:27
阅读次数:
104
区间DP/记忆化搜索 sigh……看了提示才想到是区间DP >_>我果然还是太弱 f[l][r][k]表示L到R这段区间能否合并成K,那么就是枚举拆分方案(从哪里断开)和组合方式(左半合成的子母+右半合成的子母 可以合成 K)了…… 记忆化搜索即可= = 1 /****************...
分类:
其他好文 时间:
2015-04-17 13:16:51
阅读次数:
121
http://acm.hdu.edu.cn/showproblem.php?pid=4745
Problem Description
Long long ago, there lived two rabbits Tom and Jerry in the forest. On a sunny afternoon, they planned to play a game with so...
分类:
其他好文 时间:
2015-04-15 17:14:50
阅读次数:
127
很自然想到区间 DP。设 $Dp[i][j]$ 表示把区间 $[i, j]$ 内的套娃合并成一个所需要的代价,那么有:$Dp[i][i] = 0$$Dp[i][j] = min\{Dp[i][k] + Dp[k + 1][j] + Merge([i, k], [k + 1, j])\} (i \le...
分类:
其他好文 时间:
2015-04-15 12:46:50
阅读次数:
215
ClickomaniaTime Limit: 10000msMemory Limit: 32768KB64-bit integer IO format:%I64d Java class name:MainSubmitStatusPID: 7538Clickomania is a puzzle in ...
分类:
其他好文 时间:
2015-04-14 14:22:21
阅读次数:
138
UVa 10739 String to Palindrome(经典回文串区间DP)题意:给定一个字符串,可以对其进行删除,插入,替换操作。问最少经过几次操作,可以使这个字符串变成回文字符串。思路:看得别人的 题解,最优化问题,用较为直接的方法处理时发现情况很复杂,很多时候就要考虑动态规划了。先从整体...
分类:
其他好文 时间:
2015-04-11 13:14:52
阅读次数:
123
这个内容是去年暑假讲的,但是一直没有实现,
其实说白了就是区间dp,求一个序列构成二叉树,中序遍历有序.
核心和其他区间dp一样,枚举中间值.然后枚举出来后再将整个区间的概率累加,因为相当于加深了一层.
JAVA代码,附测试数据
import java.util.Arrays;
import java.util.Scanner;
public class Main {
/*...
分类:
编程语言 时间:
2015-04-10 11:32:16
阅读次数:
135
uva 10304 Optimal Binary Search Tree题目大意:给出N个结点(已知每个结点的权值)来建树,建树时要满足以下规则:左子树的节点的值要全小于父节点,右子树的节点的值要全大于父节点。要求最后建出的树总权值最小。总权值=各结点乘以层数(从0层开始)之后相加的和。解题思路:dp[i][j]dp[i][j]代表区间第i个结点到第j个结点组成的树最小的总权值。dp[j][i]=m...
分类:
其他好文 时间:
2015-04-07 21:47:33
阅读次数:
127