题目链接:uva 1016 - Silly Sort
题目大意:给定一个长度为n的序列,每次操作可以交换任意两个数的位置,代价为两个数的和,求最小代价,将序列排成有序的。
解题思路:给定序列根据数的大小映射成一个置换,分解置换的循环,对于每个循环中,肯定是用值最小的逐个去交换的代价最小,但是要考虑,可以将最小的值与序列中最小值交换,用它代替去交换,最后再换回来。取两种情况中最优的。
...
分类:
其他好文 时间:
2014-08-14 01:28:47
阅读次数:
195
下面是转载杂志对郭德纲的一篇访谈,为什么转这个?还能因为啥,我徒弟也跑了呗 倒不是借别人的秋雨哭自己的秋风,而是实在身心疲惫,不想多言,转此访谈,时刻提醒自己要识人 生活的目标是利益,最优策略是通过道德伦理去实现,次优策略是通过违背道德伦理去实现。如果这是一种思想,政治史上说它是中国自古以来“上.....
分类:
其他好文 时间:
2014-08-14 00:50:17
阅读次数:
511
题目链接
题意:有一家大型的钢铁厂,每月初都收到大量客户的订单,订单包括定制的钢铁的数量q,以及交货的截止时间d。每个单位时间只能完成一个订单的工作,不能同时进行多个,要求怎么安排使得接受的订单最多。
思路:要使得订单最多,首先我们先按照截止日期,从小到大排序。
当qi>qj 并且 didj时,那么我们应该优先选择订单j才能使结果最优,所以我们使用优先队列来维护q值。...
分类:
其他好文 时间:
2014-08-13 19:03:47
阅读次数:
175
一、基本概念
动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。
动态规划是运筹学中用于求解决策过程中的最优化数学方法。当然,我们在这里关注的是作为一种算法设计技术,作为一种使用多阶段决策过程最优的通用方法。它是应用数学中用于解决某类最优化问题的重要工具。
如果问题是由交叠的子问题所...
分类:
其他好文 时间:
2014-08-13 03:36:25
阅读次数:
385
有一个n阶的梯子, 你每次只能爬1阶或2阶, 请问共有多少种登顶的爬法?(正好爬完n阶, 不能多也不能少)本题最优解是直接套用菲波那切数列即可(因为菲波那切数列的第n个元素正好等于第n-1个元素和第n-2个元素的和, 与本题的要求完全相同).递归解法:1 int climbStairs(in...
分类:
其他好文 时间:
2014-08-12 16:51:44
阅读次数:
137
今天刚刚学会了用tarjan写缩点(以前用两遍dfs写的),此题调了我很久,需要考虑的情况有些多,但是做出来还是挺开心的。首先通过tarjan缩点,之后要干的事情就是计算答案。答案有两种情况,一是在一个联通块中买进卖出,二是在一个联通块中买入,但在另外一个联通块中卖出。但是需要注意的是,以上两种情况...
分类:
其他好文 时间:
2014-08-12 16:31:44
阅读次数:
256
题目连接:uva 10529 - Dumb Bones
题目大意:给定n,表示要放n个骨牌,每次放下骨牌,有可能向左倒的概率为pl,向右倒的概率为pr,如果倒下,会将那一侧的骨牌全部推倒,可以选择位置先后放骨牌,问说一种放骨牌次数最少的期望是多少。
解题思路:dp[i]表示放i个骨牌需要的步数期望,维护一个最优放的位置,dp[i] = min\{ (从i-1到i的步数)} + (0到i...
分类:
其他好文 时间:
2014-08-12 13:48:44
阅读次数:
183
概述一个产品的编码完成,并不能代表产品能够给用户体验,其中还必须包含测试、压测分析等,而往往我们的产品上线前却忽略掉压测分析。既然压测分析很重要那么我们应该如何进行呢?本文章主要通过实践经验来学习了解压测过程,并且提出一些在PHP端可以进行优化的功能点,从而帮助后续开发过程中应用最优方式去编码。 工具有道是磨刀不误砍柴工,要有好的工具才能做事更有效率,要学会工具的应用才能更进一步的优化系统项目。关...
分类:
Web程序 时间:
2014-08-12 10:22:54
阅读次数:
266
比较经典的动态规划的题目了
一般动态规划的想法都是先判断是否有最优子结构,无后效性。接着从状态转移入手,尽量细分状态(即给定N得到N+1),完了再递推计算
难点:转移方程,其一般也难在如何描述一个结点
有时候不太好做就结合使用记忆化搜索(从大到小搜索,因为多个小的可能会组成一个大的导致无效计算过多)
/**************************************...
分类:
其他好文 时间:
2014-08-12 09:04:43
阅读次数:
181
快速排序的原理:首先找一个标兵值,等于某一个元素值;遍历数组,将数组分为小于标兵值和大于标兵值的两部分;然后分别对两个部分采用快速排序,递归。分开数组时,维持一个指针,指向已找到小部分的最后一个元素;一个指针用于遍历。不稳定排序算法。当数组已经有序时,时间复杂度最差,为O(N2),平均、最优情况下都...
分类:
其他好文 时间:
2014-08-12 00:36:13
阅读次数:
146