ZOJ 1234 Chopsticks(动态规划)】的更多相关文章

Chopsticks 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=234 题目大意:给定n个筷子的长度,取k+8套筷子,每套有3个,长度分别为A,B,C.要求k+8套筷子中(A-B)^2的和最小,输出这个最小值. 分析:题目中筷子长度是非降序排列的,所以最小的两个A和B一定是相邻的.先不考虑筷子C,只要留着就行. 令dp[i][j]表示从 j 个筷子中取 i 套筷子的最优值. dp[i][j] = min {dp…
原题链接 题目大意:有这么一个公式 A,B,C(A<=B<=C), (A-B)^2来衡量这对数字的好坏,值越小越好.现在给出一个数组,要求每三个配对,最后得到的每组值总和最小. 解法:我是复制粘贴的代码 参考代码: /* * 代码来源:www.cnblogs.com/zhexipinnong/archive/2012/04/19/2457217.html * dp的问题需要再专题研究 * */ #include <iostream> using namespace std; int…
/* 分析: 因为他给的数据是递增的 而求得是这些数据总的 最优解 所以我们可以考虑,它的子问题求解不影响总的求解 也就是我们可以先求出 第一个的最优解 第二个....以此类推到总的最优解 那么我们想如何利用前面一个的最优解推出当前的最优解 考虑这个与背包问题类似 我们在加入当前物品时判断当前加入后是否影响到 前面的最优解 那我们就来分析 我们需要什么要的数据 因为题目中计算最优解的时候每个等级的Money是固定的 而我们的每个等级所需要买的珍珠数量是不一定的 我的记录最优解的状态是记录 前n个…
题目:非常多人在一起吃饭.有两组单支的筷子,定义badness为一对筷子长度差的平方,求最小的badness和. 分析:dp,最大公共子序列类似物. 这里利用数学关系找到一个结论: a < b < c < d 时,(c - a)^2 +(d-b)^2 <(d-a^2)+(c-b)^2:(展开就可以) 所以最优解一定不会交叉,然后先用元素少的串,求长串的LCS的就可以. 权值计算用长度差的平方,而不是1. 这里,能够设置两种状态f(i.j): 1.以a[i].b[j]为结束标志的最优…
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) ACM总结(fennec) 其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的,那时候我们学校才刚刚起步,siyee,wjiang师兄可以说是我的领路人了…
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题  1027   Human Gene Functions   简单题  1037   Gridland            简单题  1052   Algernon s Noxious Emissions 简单题  1409   Commun…
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight Moves1101 Gamblers1204 Additive equations 1221 Risk1230 Legendary Pokemon1249 Pushing Boxes 1364 Machine Schedule1368 BOAT1406 Jungle Roads1411 Annive…
ZOJ 1234 这道题目我表示也还不是特别能理解....还是太菜了T T 从后往前思考,因为只要后面有多的数在,那么C肯定是存在的,只要考虑是否把前两个数加在一起作为badness值这样两种情况来考虑 如果总数和3*j相同的话,那必然不用多考虑,它只能以前两个数的平方差作为badness值 #include <iostream> #include <cstdio> #include <cstring> using namespace std; ],dp[][]; in…
Description There are two rows of positive integer numbers. We can draw one line segment between any two equal numbers, with values r, if one of them is located in the first row and the other one is located in the second row. We call this line segmen…
题意:在给定的数组里,寻找一个最长的序列,满足ai-2+ai-1=ai.并输出这个序列. 很容易想到一个DP方程 dp[i][j]=max(dp[k][i])+1. (a[k]+a[i]==a[j],1<=k&&k<i) dp[i][j]表示序列最后两位是a[i],a[j]时的最长长度. 这个方程状态是O(n^2),转移是O(n),总复杂度是O(n^3)会超时. 进一步思考会发现转移这里是可以优化的.实际上我们只需要知道离i最近的那个满足a[k]+a[i]==a[j]的k就行,…