随笔分类 -  acm题解

摘要:一、面试题与acm题目的区别。 这几天在看面试题目,与以前做acm的题目有不同的感觉。从题目题材上说acm由于不同客户机的系统等有差异,所以一般都会选择通用性的算法很少涉及本地的API之类的东西,同时acm很少对代码内容做限制,更多的是要求时间复杂度和空间复杂度。而面试题目是在专用机器上做的,同时... 阅读全文
posted @ 2015-01-16 22:08 在河之博 阅读(1578) 评论(1) 推荐(1)
摘要:2015年1月7日 20:34:23题目1007:奥运排序问题 有点意思,以后想另外方法快速做出来2015年1月7日 21:03:56有一个技巧就是,写了三个比较函数cmp1,cmp2,cmp3,之后用函数指针数组,bool (*cmp[4])(Student &,Student &)={cmp1,... 阅读全文
posted @ 2015-01-07 20:35 在河之博 阅读(187) 评论(0) 推荐(0)
摘要:题目是POJ1001Exponentiation 虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于错误的判断还不够严厉. 对边界情况的讨论其实应该是思维严密的表现,当然这并不能表明我写的一点错误都没有,... 阅读全文
posted @ 2015-01-06 16:24 在河之博 阅读(695) 评论(0) 推荐(0)
摘要:题目地址 :http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=342&mosmsg=Submission+received+with+ID+... 阅读全文
posted @ 2014-04-19 11:45 在河之博 阅读(192) 评论(0) 推荐(0)
摘要:有个产生第n个斐波那契额数的函数long double Fib7(int n){ long double gh5=sqrt((long double)5); return (pow((1+gh5),n)-pow((1-gh5),n))/(pow((double)2,n)*gh5);} 阅读全文
posted @ 2013-05-17 18:38 在河之博 阅读(164) 评论(0) 推荐(0)
摘要:题目:lbw很喜欢吃羊肉泡馍,有一天他做关于斐波那契数列的问题时候突然想为何不定义一种羊肉泡馍数呢?斐波那契数列大家都知道就是f[n]=f[n-1]+f[n-2],f[1]=f[2]=1,那么现在定义羊肉泡馍数,首先每个羊肉泡馍数都要是斐波那契数,其次每个羊肉泡馍数要与小于该数的所有斐波那契数都互质,第一个羊肉泡馍数是2,第二个是3,第三个是5,第四个是13。那么,第n个羊肉泡馍数是多少呢?Input一个数n(0E) //已经超过9位,当前的fib要降一位12 { fib[i]/=10; flag=1; }13 }6.最后给出代码 1 #include ... 阅读全文
posted @ 2013-05-13 21:54 在河之博 阅读(388) 评论(0) 推荐(0)
摘要:这个方程的解呢,可以通过递归得到,若知道一组解x1,y1;则于是就可以得到一串值了; 阅读全文
posted @ 2013-05-12 23:08 在河之博 阅读(202) 评论(0) 推荐(0)
摘要:1.同余与模运算记得公式(a-b)mod n=[(a mod n)-(b mod n) +n]mod n;这里(a mod n)-(b mod n)可能小于0故要+n;ab mod n=(long long) ( a mod n ) * ( b mod n ) mod n; 乘法结果可能溢出,所以要强制类型转换;2.UVA上的10006题就用了这个技术;http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=947题目大意,一个2< 阅读全文
posted @ 2013-04-29 16:41 在河之博 阅读(1473) 评论(0) 推荐(0)
摘要:对于一般的LCS问题,都属于NP问题。当数列的量为一定的时,都可以采用动态规划去解决。动态规划的一个计算最长公共子序列的方法如下,以两个序列 X、Y 为例子:设有二维数组 f[i][j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度,则有:f[1][1] = same(1,1)f[i][j] = max{f[i-1][j-1] + same(i,j),f[i-1][j],f[i][j-1]}其中,same(a,b)当 X 的第 a 位与 Y 的第 b 位完全相同时为“1”,否则为“0”。此时,f[i][j]中最大的数便是 X 和 Y 的最长公共子序列的长度,依据该数组回溯, 阅读全文
posted @ 2013-03-30 17:34 在河之博 阅读(353) 评论(0) 推荐(0)
摘要:UVA103Stacking Boxes在这个问题中,你要分析一组n维盒子的某个性质。你要确定出盒子的最长嵌套串,也就是说一系列的盒子b1、b2、……、bk,一个套一个,使所有的bi都嵌套在bi+1内。对于一个盒子D = (d1, d2, ..., dn)和另一个盒子E = (e1, e2, ..., en),如果存在一种di的排列,使重排的每个维度的值都小于盒子E中对应维度的值,则盒子D可嵌入盒子E。这个过程和旋转盒子D,看它是否能套入E的过程类似。然而,若需满足所有维度的排列,盒子D必须是可以扭曲的,而不仅仅是旋转。定义嵌套关系如下:盒子D = (d1, d2, ..., dn)和E = 阅读全文
posted @ 2013-03-30 16:13 在河之博 阅读(1166) 评论(0) 推荐(0)
摘要:题目描述;数独游戏的内核代码八数码问题;编号为1到8的8个正方形滑块被摆成3行3列;(有一个格子留空);每次可以把与空格相邻的滑块(有公共边才算相邻)移到空格中;而它原来的位置就成为了新的空格;给定初始局面和目标局面(用0表示空格);你的任务死计算出最少的移动步数;和移动过程;如果无法到达目标局面,则输出-1;------------------------------------------------------------------------------接前面两个博客,在这个博客里,我们尝试改变我们使用的判重的数据结构;在第一个博客里我们用的是数组,也就是顺序结构,速度非常的慢,在第 阅读全文
posted @ 2013-03-24 20:22 在河之博 阅读(811) 评论(2) 推荐(0)
摘要:题目描述;数独游戏的内核模拟八数码问题;编号为1到8的8个正方形滑块被摆成3行3列;(有一个格子留空);每次可以把与空格相邻的滑块(有公共边才算相邻)移到空格中;而它原来的位置就成为了新的空格;给定初始局面和目标局面(用0表示空格);你的任务死计算出最少的移动步数;和移动过程;如果无法到达目标局面,则输出-1;在这节里我们使用c++封装的stl库里面的set类库来帮助我们进行判断是否访问过的操作;这里用vis.count(s)的返回值来判断s是否在栈里面用vis.insert(s)将s插入到vis里面; 1 #include <iostream> 2 #include <fs 阅读全文
posted @ 2013-03-24 20:07 在河之博 阅读(564) 评论(0) 推荐(0)
摘要:题目描述;数独游戏的内核模拟八数码问题;编号为1到8的8个正方形滑块被摆成3行3列;(有一个格子留空);每次可以把与空格相邻的滑块(有公共边才算相邻)移到空格中;而它原来的位置就成为了新的空格;给定初始局面和目标局面(用0表示空格);你的任务死计算出最少的移动步数;和移动过程;如果无法到达目标局面,则输出-1;2641375881273642这个问题也是要分步骤实现的,自然也涉及到状态的问题,和我的前一篇博客一样,使用的是广度优先遍历这样可以找到最少的步数;众所周知的是BFS算法之于树和之于图是不太一样的,因为树一旦往下走便不必担心访问到已经访问过的结点,而图呢由于有环的存在,所以会回到之前访 阅读全文
posted @ 2013-03-24 19:51 在河之博 阅读(1554) 评论(0) 推荐(0)
摘要:倒水问题: 引例:有装满水的6升的杯子,空的3升杯子和1升杯子,3个杯子都没有刻度; 在不使用道具的情况下,如何称出4升的水呢?相信聪明的你已经算出来了; (6,0,0)->(3,3,0)->(3,2,1)->(4,3,0);现在你的任务是解决一个一般性的问题: 设有大中小3个杯子的容量分别是a,b,c最初只有大杯子装满水,其他两个杯子为空;最少需要多少步才能让某一个杯子中的谁有x升呢? 你需要打印出每次操作后各个杯子中的水量(0<c<b<a<1000);输入:三个杯子的容积a,b,c然后是要称出的水量d;(d<=c);输出:操作的次数,每一次操 阅读全文
posted @ 2013-03-23 23:55 在河之博 阅读(2561) 评论(0) 推荐(2)