上一页 1 ··· 7 8 9 10 11 12 下一页
摘要: Cash MachineTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 19960Accepted: 6954DescriptionA Bank plans to install a machine for cash withdrawal. The machine is able to deliver appropriate @ bills for a requested cash amount. The machine uses exactly N distinct bill denominations, say Dk, k= 阅读全文
posted @ 2012-08-07 10:29 一生挚爱 阅读(188) 评论(0) 推荐(0)
摘要: 一、基本描述类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。(1)分支搜索算法所谓“分支”就是采用广度优先的策略,依次搜索E-结点的所有分支,也就是所有相邻结点,抛弃不满足约束条件的结点,其余结点加入活结点表。然后从表中选择一个结点作为下一个E-结点,继续搜索。选择下一个E-结点的方式不同,则会有几种不同的分支搜索方式。1)FIFO搜索2)LIFO 阅读全文
posted @ 2012-08-07 10:26 一生挚爱 阅读(518) 评论(0) 推荐(0)
摘要: 1、概念回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。2、基本思想在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探 阅读全文
posted @ 2012-08-07 10:25 一生挚爱 阅读(165) 评论(0) 推荐(0)
摘要: 贪心算法一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。 所以对所采用的贪心策略一定要仔细分析其是否满足无后效性。二、贪心算法的基本思路: 1.建立数学模型来描述问题。 2.把求解的问题分成若干个子问题。 3.对每一子问题求解,得到子问题的局部最优解。 4.把子问题的解局部最优... 阅读全文
posted @ 2012-08-07 10:17 一生挚爱 阅读(245) 评论(0) 推荐(0)
摘要: 一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。 由于动态规划解决的问题多数有重叠子问题这个特点,为减少重复计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一 阅读全文
posted @ 2012-08-07 10:16 一生挚爱 阅读(198) 评论(0) 推荐(0)
摘要: 分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需任何计算。n=2时,只要作一次比较即可排好序。n=3时只要作3次比较即可,…。而当n较大时,问题 阅读全文
posted @ 2012-08-07 10:10 一生挚爱 阅读(237) 评论(0) 推荐(0)
摘要: __int64 mod(__int64 a, __int64 b, __int64 n){ __int64 arr[500],z = -1,y; for( ; b != 1 ; b >>= 1)//分解b为二进制,记录下分解成的位数z构造栈arr { z++; if( b % 2 == 0) arr[z] = 0; else arr[z] = 1; } //a %= n如果一开始数很大,先模一次,防止过大,求逆 y = a * a % n;//第一次去模 for(; z > 0; z--) { if(arr[z]) y = (y*a%n) * (y*a%n); else... 阅读全文
posted @ 2012-08-07 10:08 一生挚爱 阅读(1045) 评论(0) 推荐(0)
摘要: 好久没写过算法了,添一个吧,写一个线段树的入门知识,比较大众化。上次在湖大,其中的一道题数据很强,我试了好多种优化都TLE,相信只能用线段树才能过。回来之后暗暗又学了一次线段树,想想好像是第三次学了,像网络流一样每学一次都有新的体会。把问题简化一下:在自然数,且所有的数不大于30000的范围内讨论一个问题:现在已知n条线段,把端点依次输入告诉你,然后有m个询问,每个询问输入一个点,要求这个点在多少条线段上出现过;最基本的解法当然就是读一个点,就把所有线段比一下,看看在不在线段中;每次询问都要把n条线段查一次,那么m次询问,就要运算m*n次,复杂度就是O(m*n)这道题m和n都是30000,那么 阅读全文
posted @ 2012-08-06 10:28 一生挚爱 阅读(117) 评论(0) 推荐(0)
摘要: 说明:二分搜尋法每次搜尋時,都會將搜尋區間分為一半,所以其搜尋時間為O(log(2)n),log(2)表示以2為底的log值,這邊要介紹的費氏搜尋,其利用費氏數列作為間隔來搜尋下一個數,所以區間收斂的速度更快,搜尋時間為O(logn)。解法:費氏搜尋使用費氏數列來決定下一個數的搜尋位置,所以必須先製作費氏數列,這在之前有提過;費氏搜尋會先透過公式計算求出第一個要搜尋數的位置,以及其代表的費氏數,以搜尋對象10個數字來說,第一個費氏數經計算後一定是F5,而第一個要搜尋的位置有兩個可能,例如若在下面的數列搜尋的話(為了計算方便,通常會將索引0訂作無限小的數,而數列由索引1開始):-∞ 1 3 5 阅读全文
posted @ 2012-08-03 16:41 一生挚爱 阅读(260) 评论(0) 推荐(0)
摘要: 【摘要】搜索和动态规划是信息学中的两大重要算法。它们各有自己的优点和缺点。针对它们的优缺点,一个新的算法——“记忆化搜索”产生了。它采用了搜索的形式与动态规划的思想,扬长避短,在解决某些题目时,有非常出色的表现。它在信息学竞赛中也有举足轻重的地位,NOI2001的cannon与NOI2002的dragon都使用到了这个算法。这篇论文着重分析了搜索、动态规划和记忆化搜索之间的联系和区别,以及各自的优缺点,并通过几个例子使得大家对记忆化搜索有一个初步的了解。【关键字】重叠子问题 拓扑关系 形式+思想【目录】一、 搜索1.搜索树2.例子——words3.效率低下的原因——重叠子问题二、 动态规划.. 阅读全文
posted @ 2012-08-02 19:22 一生挚爱 阅读(699) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 下一页