- 博客(41)
- 收藏
- 关注
原创 LeetCode: Reverse Linked List II
常规链表翻转的改版,注意记录翻转部分的头结点start及其前面的结点preStart、尾结点tail及其后面的结点postTail即可。在内部的结点翻转完毕(方法同常规链表翻转)后,将preStart->next = tail,start -> next = postTail,即可。代码如下:/** * Definition for singly-linked list. * struct Li
2015-06-05 11:59:19
480
原创 LeetCode:Reverse Words in a String
闲来无事刷leetcode,随便挑了一道翻转字符串的题,其实这道题之前在九度上做过,剑指offer里也有讲,但是我还是花了很久才AC。这次是用纯C写的,觉得用纯C处理字符串才锻炼真本事。 遇到这样的题,要习惯性地问几个问题: 1.字符串前后是否空格,有的话怎么处理,删除还是跟着一起旋转或者保持不变 2.单词之间的空格是否只有一个,如果不是,应该只保留一个还是跟着一起旋转 3.空格之
2015-06-04 21:16:06
574
原创 hdu动态规划集锦
发现一篇博文只写一题有点浪费空间,而且不利于分类和查找,所以把题目分类写在一篇博文里比较好~To The Maxhttp://acm.hdu.edu.cn/showproblem.php?pid=1081最大子矩阵问题,其实就是二维的最大子串和问题,要转化为我们熟悉的典型dp问题,就应该将二维转化为一维:预处理矩阵,原矩阵a[i][j]表示第i行第j列的元素,预处理后的矩阵
2014-03-28 10:48:54
646
原创 hdu1080解题报告
后考研刷题时代正式开始,之前练dp意犹未尽,所以先拿dp题开刀,而且找了一道跟我原专业相关的题,基因序列匹配~http://acm.hdu.edu.cn/showproblem.php?pid=1080当年学生物信息学在书上看到了DNA序列匹配的动态规划算法,现在终于实现了它~其实就是最长公共子序列LCS的变形题,ac代码如下:#include #include #define
2014-03-27 23:57:55
649
原创 九度1160解题报告
http://ac.jobdu.com/problem.php?pid=1160一眼一看就知道是dp,但是苦于找不到状态转移。网上看到了递推关系,其实很简单:对于m个苹果,n个盘子的摆法,可以分为有空盘和无空盘两类,有空盘类,就是在m,n-1的所有摆法中加入一个空盘,而无空盘类,就是先拿出n个苹果每个盘各摆一个,在分配剩下的苹果。当然,要注意m#include int dp(int
2014-03-15 16:32:44
651
原创 昨晚接到的电话面试
昨晚接到一位老师的电话面试,这是我第一个计算机方面的面试,总的来说,是比较失败的。我事先跟老师说明过我是零基础跨专业考生,但是老师还是还不留情地问了我很多专业问题,大概有六道题,如下:1.如何将一个字符串反转,空间复杂度为O(1),时间复杂度为O(n)。这个很容易,前后交换就好了。2.如何将一个句子反转,只反转单词顺序,单词内部不变,复杂度要求同上。这个我当时没答出来,在网上搜了搜
2014-03-15 09:13:24
1662
1
原创 继续动态规划--安排问题
九度1499:项目安排http://ac.jobdu.com/problem.php?pid=1499九度1463:招聘会http://ac.jobdu.com/problem.php?pid=1463都是时间安排问题,dp数组下标可以表示时间也可以表示项目数,具体方法可以学习博客http://blog.youkuaiyun.com/wdy_yx/article/details/9833897,总结的
2014-03-14 14:30:08
792
原创 动态规划中的“分两份”问题
九度中1358:陈博的平均主义http://ac.jobdu.com/problem.php?pid=1358 1420:Jobdu MM分水果http://ac.jobdu.com/problem.php?pid=1420 1462:两船载物问题http://ac.jobdu.com/problem.php?pid=1462都是我称之为“分两份”的问题,由于要分的两份的总
2014-03-13 22:08:12
608
原创 九度1552 动态规划
http://ac.jobdu.com/problem.php?pid=1552题目一看就是可以用dp的,但是对我来说找状态还是最困难的一件事。参考了别人的代码,才知道如果找合适的状态,并根据我自己的理解,定义了如下状态函数和状态转移方程:f[i][0]表示从左数第i个位置上是男生的合法排列数,f[i][1]表示从左数第i个位置上是女生的合法排列数,由此可知其该女生左边一定是女生。然而仅仅
2014-03-11 21:01:39
476
原创 九度1084解题报告
http://ac.jobdu.com/problem.php?pid=1084 整数拆分的题。根据这几天的做清华真题的情况,可以看出,清华超爱出数学类的题目,考察学生的数学基础和找规律的能力。这道题,乍一看是要找个什么公式或者规律来解决,其实仅仅用dp就可以解决,也就是说,要找出拆分种类的递推规律。本题主要有两条规律,即要分奇偶讨论。当要拆分的数为奇数时,其拆分种类与上一个偶数相
2014-03-05 20:41:15
599
原创 九度1081解题报告
http://ac.jobdu.com/problem.php?pid=1081递归算法显然最直观,可是复杂度太高一遇大数就超时。所以这里是用矩阵二分乘的方法,具体思路可参见《数学知识积累》。代码如下:#include #define MAX 1000000#define MOD 10000typedef struct matrix{ int a[2][2]; void se
2014-03-05 16:31:14
747
原创 九度1085解题报告(机试出这种题我死定了)
http://ac.jobdu.com/problem.php?pid=1085我自己的方法是构造bigint数据类型,然后无脑循环乘求幂,然后再转换k进制,递归求解。这种做法的时间复杂度就不用说了,数据稍微一大一定超时。真正有效的做法代码很简单,却需要很强的数学知识和严格证明,自知达不到这个水平,果断引来大神的博客http://blog.sina.com.cn/s/blog_8619a258
2014-03-04 22:17:18
1034
原创 数学知识积累
快速求幂算法参见了别人的博客http://blog.sina.com.cn/s/blog_3f2fa9610100soxb.html,了解到了快速求幂的一种方法,比简单的循环相乘要大大减少乘法次数,自己学习后写的c++代码如下bigint power(bigint x, int n){ bigint ret; ret.set(1); while (n!=0) { if (n&
2014-03-04 21:34:09
850
原创 九度1086解题报告
http://ac.jobdu.com/problem.php?pid=1086典型的动态规划题,当然也可以用图的最短路径方法,但是对我来时dp实现起来容易一些。在这道题中,有两点值得注意,一是两站之间的距离和票价都可以达到10^9,故计算过程中可能出现比int范围大的数,因此需要用long long类型来存储数据;二是我自己思维不周密,只考虑到了起点站比终点站编号小这种情况,而忽略了反过来的
2014-03-04 12:25:02
695
原创 九度1482解题报告
http://ac.jobdu.com/problem.php?pid=1482看到这种题,第一反应就是BFS。可是一开始为剪枝的问题犯愁,最终使用map实现标记已判定的串,其实有点大材小用,只是用到了map.find()的功能,想到其用的是红黑树实现,找起来效率较高,当然别人也有用hash实现的,效率更高,我只是懒得改了。接着就开始为记录树深度犯愁,记得学数据结构的时候,层次遍历是专门修改节
2014-03-03 21:19:50
774
原创 九度1491解题报告
http://ac.jobdu.com/problem.php?pid=1491举个例子来阐明解题的基本思路。例如,n=4321,我们对其各个数位进行分解,4321=4000+300+20+1,然后从低位到高位一次进行分析。个位1,只能含一个1,而十位20又可分为1~10和11~20,个位数字有两次循环,而每次循环会出现一个1和一个2,十位10~19又含有十个1,20含有一个2。百位300,低
2014-03-03 19:27:55
790
原创 九度1140解题报告
http://ac.jobdu.com/problem.php?pid=1140八皇后问题早有耳闻,今日终得一见。其实是典型的回溯算法问题,思路较简单,即挨个下棋子,以判断下一个棋子的位置。然而我这道题做了很久,主要纠结在判断下一个棋子的问题上,我用mark二维数组标记当前哪些位置可以下,哪些位置不能下,以期下一个棋子判断时只需判断自己的mark是真或假,但是这种做法的最大问题在于回溯的时候,
2014-03-01 23:32:49
708
原创 九度1172解题报告
http://ac.jobdu.com/problem.php?pid=1172这道题原来做过可是一点印象都没有,竟然还是能想到用priority_queue来做,看来之前的练习还是有效果。其实今年考研408的算法题与这道题类似,但我当时并不知道这个结论:哈夫曼树所有叶节点的权重之和等于所有非叶结点的值的和,所以当时费了大量的时间做那道题,以至于组成原理的两道大题几乎完全没做,想想就心痛。不过
2014-03-01 20:16:58
809
原创 九度1347解题报告
http://ac.jobdu.com/problem.php?pid=1347孤岛连通问题的实质就是求图的最小生成树问题,若非连通图就输出no。这里使用的是Kruskal算法,将所有边排序后,依次判断是否能让不连通的两定点连通,若可以,则并入该边,把该边的代价算入总代价。最后输出从代价,即最小代价,如不连通,则为no,判断连通用到了并查集。代码如下#include #include
2014-03-01 19:48:47
639
原创 九度1209解题报告
http://ac.jobdu.com/problem.php?pid=1209这是一道典型的动态规划0-1背包问题而且是求恰好等于某值的最优解。做法就是依次加入一张邮票,计算恰好等于M的邮票数,若恰好等于M有多个解,要选择最小的解(这也是我第一次WA没有考虑的情况,dp[m]不为零时要先进行比较,取最小值)。代码如下:#include using namespace std;int
2014-03-01 19:22:43
586
原创 九度1139解题报告
最小子矩阵问题http://ac.jobdu.com/problem.php?pid=1139,是求最优解的一类题,看到题目就想到两种做法,一个是dp,一个是搜索遍历的方法。虽然深搜很多时候并不是用来解决最优解问题的,但是dp的做法,我暂时没有想到该怎么做,于是就先用DFS,代码如下:#include using namespace std;#define INF -999999999
2014-03-01 13:34:37
694
原创 九度1137解题报告
大神们说没有更简单的方法,于是还是用模拟加法。题目如下http://ac.jobdu.com/problem.php?pid=1137 计算机里的浮点数加法,是先对阶,相加,然后规格化,类似地,在模拟的时候,我们也要对阶,即将输入的数分成小数部分和整数部分,然后相加,将结果输出。我将输入当做字符串处理,先超出两个数的小数点的位置,然后将小数部分对齐,即在较短的小数部分后面补零,然后相加
2014-02-28 13:30:21
753
原创 九度1019解题报告
关于计算器的题目http://ac.jobdu.com/problem.php?pid=1019,该题要编写的计算器比一般的计算器简单,因为不含括号,运算优先级就两种,先算乘除法就好,这是受到了fripSide同学的启发,不需要算术符号栈,只需要数字栈,遇加减号就将下一个数字入栈(遇减号将数字反号入栈),遇乘除号,就将栈顶的数字取出运算后再入栈。当处理完整个计算式时,将栈中的所有数取出相加,既得结
2014-02-28 11:06:48
630
原创 九度1080解题报告
明明是AC过一次的题,第二次来做却AC不了了,自己也没想通错在哪。题目如下http://ac.jobdu.com/problem.php?pid=1080进制转换问题,基本思路是把m进制数先转换成10进制数,在将10进制数转换成n进制数。转换成10进制,即每个位上的数值乘以对应的位权然后全部加起来,再转换成n进制,就是不断modn再除以n。当然,既然有大数,要构造bigint数据结构,
2014-02-25 22:59:23
671
原创 九度1184解题报告
这是一个二叉树的问题,题目如下http://ac.jobdu.com/problem.php?pid=1184事实上考的就是二叉树的数据结构以及先序和中序遍历。一般来说,仅仅由先序遍历序列无法得到中序序列,然而,本题特殊的地方在于先序遍历序列中给出了遍历中遇到的空指针,这样就很容易根据序列构造二叉树:依次访问先序序列,遇到#就返回空指针,遇到非#字符就构造一个对应的节点,然后按照先左后
2014-02-25 21:02:52
738
原创 求出入栈操作种类(动态规划算法)
昨天在九度上参加王道研究生机试练习赛,结果惨不忍睹,四道做出两道,而且最后一道来不及提交了。今天特来研究昨天难住我的题,就从第二题出入栈开始吧,题目如下:题目描述:给定一个初始为空的栈,和n个操作组成的操作序列,每个操作只可能是出栈或者入栈。要求在操作序列的执行过程中不会出现非法的操作,即不会在空栈时执行出栈操作,同时保证当操作序列完成后,栈恰好为一个空栈。求符合条件的
2014-02-24 16:19:21
1613
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人