04 2013 档案

摘要:今天学习下ACM基础有关递推求解的知识。递推求解问题一般是给定初始值,如N=1,N=2时的情况,然后求解规模很大时的情况。做这种题目需要的是理清题意,然后据此找到规律,写出递推公式,然后求解问题。 递推求解举例: 问题一: 在一个平面上有一个圆和n条直线,这些直线中每一条在圆内同其他直线相交,假设没有3条直线相交于一点,试问这些直线将圆分成多少区域。 解题思路:根据递推原理,假设前N-1条直线分割成的区域为f(N-1),再添加一条直线时,与其他的N-1条直线形成N-1个交点,确定了N个区域。故 f(N)=f(N-1)+N; 初始为f(1)=2; 有f(N... 阅读全文
posted @ 2013-04-18 20:18 Pierce1024 阅读(268) 评论(0) 推荐(0) 编辑
摘要:这道题我刚开始是想先把所有的搬桌子的任务按照起点进行排序,然后再算出时间,可是一直没有思路。 上网找了找,发现了一个很巧妙的方法,其实就是换种思路来思考问题。应走道两边各有200个房间,把走道等分为200个节点,每个节点有桌子经过时,节点经过次数加一,求完成任务的时间实际上就是求经过的过道节点次数最多的地方。代码如下: 1 #include<stdio.h> 2 #include<string.h> 3 int main(void) 4 { 5 int t,n,u,d,i,j,move[201]; 6 scanf("%d",&t); 7 wh 阅读全文
posted @ 2013-04-18 18:13 Pierce1024 阅读(198) 评论(0) 推荐(0) 编辑
摘要:练习ACM后的第一篇解题报告。 这题是求大数阶乘的,题目要求最大能求10000的阶乘。 刚一看到这题,感觉思路很简单,思考了一会之后就开始写代码。思路很简单,由于是大数乘法,普通的int类型肯定不够用,要用数组保存。然后运算过程就是最简单的乘法运算过程,乘--》移位--》加 的简单过程。 提交之后一直是TLE,悲剧,百思不得其解。 随后百度了下,发现应该用“多位一存”,而不是一位一存,(没系统的学习过ACM基础教程,全靠自学,就是悲催!)。采用多位一存,不仅可以加快运算速度,同时也节省了内存。我采用的是四位一存,只需要原来四分之一的控件就可用存下运算结构。运算过程也做了改进,用乘数直接乘... 阅读全文
posted @ 2013-04-18 13:53 Pierce1024 阅读(252) 评论(0) 推荐(0) 编辑
摘要:从今天开始写博客,记录自己学习的点点滴滴。大学四年过的恍恍惚惚,没努力过没追求过,没学到什么东西。毕业了开始工作,心中满是后悔。毅然决然辞职考研,这一步终于算是有了收获,目前已是一名准研究生。新的旅途,新的征程,在接下来的几年里,人一我百,人十我万,更加努力,弥补不足。 面朝大海,春暖花开。 Fighting!!!!!! 阅读全文
posted @ 2013-04-18 10:43 Pierce1024 阅读(89) 评论(0) 推荐(0) 编辑