DP
龟大仙
这个作者很懒,什么都没留下…
展开
-
UVALive 2963 Hypertransmission
2963 - Hypertransmission Time limit: 6.000 seconds Description The president of the Galactic Federation has recently decided that all planets of the galaxy must establish hyper-radio centers to b原创 2015-05-10 09:54:04 · 922 阅读 · 0 评论 -
zoj3905 Cake (简单dp)
题目链接 题意:n个蛋糕(n一定为偶数),第i个蛋糕对A的价值为a[i],对B的价值为b[i],A任取两个蛋糕,B总是把这两个蛋糕中对于他来说价值较大的那个拿走,剩下的一个给A,问A可以拿到的最大价值总和是多少? 思路:将蛋糕按b[i]从大到小排序,这保证了对于第i个蛋糕,任何大于i的蛋糕与它匹配时,B必然选第i个; dp[i][j]:A在前i个蛋糕中选了j个,因为A一定是挑B剩下的,这意味原创 2015-10-24 20:02:28 · 457 阅读 · 0 评论 -
HDU1231 最大连续子序列
题目链接 代码如下: #include #include #include #include #define mem(a, b) memset(a, b, sizeof(a)) using namespace std; int dp[10005], num[10005]; int main() { int n, ans, tmp; while(~scanf("%d", &n原创 2015-09-12 21:05:38 · 446 阅读 · 0 评论 -
hdu1003 最大连续子序和
题目链接 代码如下: #include #include #include #include #include using namespace std; typedef long long ll; const int N = 1e5+10; int n, s, e, k; int a[N]; int main() { int t , j; scanf("%d", &t); for(j =原创 2015-09-04 16:39:42 · 427 阅读 · 0 评论 -
ZOJ1234 Chopsticks
题目链接 题意: 给定n个筷子的长度,取k+8套筷子,每套有3个,长度分别为A,B,C。 求组成k+8套筷子(A-B)^2的和的最小值,输出这个最小值。 思路: 题目中所给的筷子长度是非降序排列的,所以最小的两个A和B一定是相邻的。 先不考虑筷子C,只要留着就行,即(n-j)> (k-i)*3 (加上等号就代表没有预留筷子C) dp[i][j]表示从 j 个筷子中取 i 套筷子的最优原创 2015-09-01 15:00:40 · 578 阅读 · 0 评论 -
HDU 2491 Priest John's Busiest Day(贪心)
题目链接 题意: n场婚礼 给定每场婚礼的开始和结束时间,要求每场婚礼至少举行一半以上(不包括一半) 如果可行输出YES,否则输出NO 思路: 算出每场婚礼的至少要举行的时间t, 最早的结束时间mid 以最早结束时间mid为第一变量,开始时间s为第二变量从小到大排序 用cnt记录举办完每场婚礼的结束时间 分三种情况: ①加参前当婚礼的时间够不一半 ②果加参婚礼时婚礼已开始,结原创 2015-08-17 20:47:51 · 710 阅读 · 0 评论 -
zoj1163 The Staircases(基础dp)
题目链接 题意:给你一个n,问你有多种摆台阶的方法。 要求下面的格子数要严格的大于上面的格子数,台阶至少要两层及以上(所以最后输出结果要-1) 还有台阶是倒着看的,倒着看的,最右边的是最底层的,我……内心是极度奔溃的…… 也就是说我们只要枚举最右边的即那条最长的边 h 即可,那么剩余的就是n - h,这显然已经是算出来的 初始化dp[0] = 1,因为任意n都可以摆出一层。 代码如下:原创 2015-08-14 17:05:53 · 758 阅读 · 0 评论 -
ZOJ 1025 Wooden Sticks(贪心 基础题)
题目链接 题意: 机器加工n个木条,每个木条有一个长度和重量。加工第一根木条需要1分钟的准备时间,接下来如果后一根木条的长度和质量都大于等于前一根木条,则不需要准备时间,否则需要1分钟的准备时间,求加工完所有木条最少时间。 比如有5根木条,长度和重量分别是(4,9), (5,2), (2,1), (3,5), (1,4),则需要2分钟就可加工第1分钟加工(1,4), (3,5), (原创 2015-08-02 17:00:12 · 782 阅读 · 0 评论 -
ZOJ 1093 Monkey and Banana
题目链接 题意:给你n个规格的砖块,告诉你它的长、宽、高,每种规格的砖都有无数块,长宽小的砖块(严格小于,不能等于)可以叠在长宽大的砖块上,问你最多能叠多高。 思路:告诉你一种规格的砖其实给了你三种规格的砖,因为砖是可以翻转的,长宽高可以变化的; 以长为第一变量,宽为第二变量,从大到小排序,这样垫在第n块砖下面的只能从前n-1块选择,选择最大值,累加高度即可。 代码如下: #includ原创 2015-08-01 21:24:54 · 687 阅读 · 0 评论 -
POJ1651:Multiplication Puzzle(简单dp)题解
Multiplication Puzzle Description The multiplication puzzle is played with a row of cards, each containing a single positive integer. During the move player takes one card out of the row and sco原创 2015-03-16 10:18:50 · 736 阅读 · 0 评论 -
UVA10635 Prince and Princess(LIS)
题意:王子和公主同时从1出发走到 n*n, 求他们两个路径的最长公共子序列; 思路:因为这题n有250,如果用LCS负责度为O(n^2),容易超时,于是我们选择它的优化版Lis算法来求最长公共子序列,这样我们的复杂度就降为O(n*logn)了。 Lis算法: 先回顾经典的O(n^2)的动态规划算法,设A[t]表示序列中的第t个数,F[t]表示从1到t这一段中以t结尾的最长上升子序列原创 2015-05-07 20:42:43 · 837 阅读 · 0 评论 -
ZOJ 3929 Deque and Balls
题目链接 题意: 给你n个数,按照顺序依次放入一个双端队列(可放在头部,也可以放在尾部),求xi > xi+1的期望 * 2^n mod (1e9 +7) 思路: 实际上题目就是在求2 * 总递减对数 那么当放入第i个数的时候,递减对数: ①首先要加上前i-1个数的递减对数 因为第i个数可以放在两端,所以dp[i] += 2 * dp[i -1] ②处理加入第i个数后增加的原创 2016-04-11 23:41:04 · 886 阅读 · 0 评论