OnlineJudge
bruce128
https://github.com/bruce256?tab=repositories
展开
-
HDOJ 1166 敌兵布阵 第一次用线段树AC题目
以前听一个同学提到过线段树,感觉很神奇,这次自己用线段树AC了一道题目,并没有想象当中的那么难。二分思想在线段树中的作用毋庸置疑! 这是这道题的超链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 原理不解释,废话不多说。我看了几次线段树的理论知识,都没有什么直观的感觉。还是写代码解决实际问题才让我对线段树有了更深刻的认识原创 2011-11-27 11:09:09 · 957 阅读 · 0 评论 -
POJ 2412:Equidistance 一道立体几何题
原题URL:http://poj.org/problem?id=2412; 这道题是一道与空间几何相关的题目,完全数学题。强调几点: 1.两个城市位于同一位置时,也就是平面的法向量为0时,不可用向量的夹角公式求解两向量的夹角。 2.四舍五入的一个小技巧,原浮点数加0.5之后取整。 这道题我写了两个版本,一个是用了STL的find函数,自己重载了==运算符原创 2011-12-20 19:37:37 · 1385 阅读 · 0 评论 -
九度OJ 1009: 二叉搜索树 两棵树的判等+二叉搜索树的建立
浙大的这道考研上机真题的大意是给定两个序列,判定由这两个序列所构成的二叉排序树是否一样。 关键在于建树的过程和判定两棵树是否相等即可。判定两棵树是否相等可以用递归求解,先看当前结点是否相等或都为空,再看两棵子树的情况。 题目URL:http://ac.jobdu.com/problem.php?id=1009 我的AC代码,和大家分享一下。#include#in原创 2012-01-06 11:02:07 · 1982 阅读 · 0 评论 -
HDOJ 2306:改革春风吹满地 叉积求面积
题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=2036 题目也没说是凸多边形还是凹多边形,糊里糊涂就A了。 思路是把一个N边形切割成N-2个三角形,然后用向量叉积求三角形的面积。 我的AC代码: #include#include using namespace std;int main(){原创 2012-02-05 18:18:04 · 2204 阅读 · 0 评论 -
九度1113:二叉树 解题报告
北大的这道考研上机题的数据量比较大,暴力宽搜可能会超时,想来想去应该跟满二叉树的性质有关,即,令父节点的标号为i, 若左孩子存在,那么左孩子的标号为2*i,若右孩子存在,那么右孩子标号为2*i+1。根据这个性质我便一层一层搜,若不到最后一层,那么当前层的结点便可以全部加上,而不必挨个去计数。其实最后一层也不必挨个去计数,只要最后一层的尾结点的标号大于最左孩子的标号,那么便可以用尾结点下标剪去最左孩原创 2012-03-07 09:37:41 · 1961 阅读 · 0 评论 -
HDOJ 1736:美观化文字 很考验思维的缜密
题目的url:http://acm.hdu.edu.cn/showproblem.php?pid=1736 这道题要注意几点: 1.怎样输出一个汉字。 2.源串里的双引号一个是中文的,一个是英文的。 3.另外,输入是多行 的,不是单行的。 我的AC代码: #include#includeusing name原创 2011-12-13 16:44:29 · 1154 阅读 · 0 评论 -
HDOJ 2564:词组缩写 标志位的用处很大呀
这道题目的URL:http://acm.hdu.edu.cn/showproblem.php?pid=2564; 写程序逻辑一定要清晰,有 清晰的逻辑才能写出正确的代码。要找出每个词的首字母,关键在于空格。第一个字母和一个或多个连续字母后的第一个字母便是下个单词的首字母。我用了一个标志位nextIsFirst来标志下一个是否是单词首字母。整个程序围绕这个标识位进行处理。 下面的原创 2011-12-17 12:44:52 · 1429 阅读 · 0 评论 -
九度OJ 1166: 迭代求立方根 《数值分析》基本功
北航的这道考研上机真题应该是考的我们的《数值分析》基本功。记得原来上《数值分析》课的时候学习过平方根的迭代公式,好像还有有通用的求根公式,不记得了。这种类型的迭代公式其实很简单。只要一个变量便够了,然后不断的修改。 题目URL:http://ac.jobdu.com/problem.php?id=1166 我的AC代码,欢迎拍砖。 #include#inclu原创 2012-01-05 19:39:33 · 1888 阅读 · 0 评论 -
HDOJ 1233:还是畅通工程 普里姆算法求最小生成树
浙大的考验上机题比较单纯,完全就是考最小生成树算法的。最初想用克鲁斯卡尔算法练练手,没想到这个图是个完全图,克丽丝卡尔算法不适用,于是干脆再写一次普里姆算法得了。 题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=1233 我的AC代码:#include #include #include using namespace st原创 2012-02-09 14:52:30 · 1305 阅读 · 0 评论 -
HDOJ 1196:Lowest Bit——用位操作求解
题意:给一个数n, 求出该数二进制表示(binary notation)的最低位的1的权值。 这道题用简单的位操作即可求解,倘若挨个测试,就有些慢了。 题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=1196; 这是我的AC代码:#includeusing namespace std;int lowestBit(原创 2011-12-10 11:18:48 · 1202 阅读 · 2 评论 -
HDOJ 1296:Polynomial Problem 关键在于处理字符串
这道题的URL:http://acm.hdu.edu.cn/showproblem.php?pid=1296 题目的意思是,给出一个多项式和自变量的值,求出多项式的值。 核心解题思路是每处理出多项式的一个项,便计算出该项的值,并加入最终结果中。但这道题目的边界条件不少,尤其是系数和指数都是默认的情况,处理起来需要些技巧。 这里给一个不好处理的边界条件: in原创 2011-12-15 21:05:54 · 986 阅读 · 0 评论 -
POJ 2389——Bull Math, 大整数乘法的另一种解法
这是POJ上的一道大整数乘法水题,换了一种算法求解。 以前做大整数乘法的时候,是每乘完一趟,就用一次大整数加法。这次再做大整数乘法,换了一种算法,先统一乘完,再进位。代码简洁了不少。#include#include#includeusing namespace std;const int Max = 45;int a[Max], b[Max], ans[Max *原创 2011-11-30 20:34:17 · 1642 阅读 · 1 评论 -
九度OJ 1167:数组排序 排序序列的恢复
北航的这道考研上机真题大意是:给定一个序列,输出该序列的各个元素在排序后的序号。 首先排序肯定是需要的, 但排序后虽然能都得到各个元素的大小标号,但原来的顺序也就不知道了。恢复序列的办法便是添加一个域,指示排序前的序号,排完序后再按排序前的序号排回来便可。 题目url:http://ac.jobdu.com/problem.php?id=1167 我的AC原创 2012-01-06 09:55:35 · 1767 阅读 · 2 评论 -
HDOJ 1236,九度 :排名 简单的排序
昨晚上一个同学把我喊过去看他在九度OJ上为什么老是WA这道题,我想了半个小时的边界条件都没有想出来。然后让他去HDOJ提交这道题目看看怎么,猜测九度的测试数据可能有问题。意料之中,在HDOJ上顺利的AC了这道题目。今天早上起来之后,自己做了下这道题目。比较简单,只需要排个序,没有特殊的边界条件需要考虑。 正在学习C++的函数对象,所以那这道题练习了下函数对象。一共写了三个版本,有比较函数原创 2012-02-16 10:58:38 · 1543 阅读 · 0 评论 -
HDOJ 1506 : Largest Rectangle in a Histogram DP求解
题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=1506 这是一道动态规划求解题目,如果暴力枚举起点和终点的话,以这道题目的数据量,必然超时。 动态规划求解的两个重要函数,left[i]:表示从left[i]到i的所有的立方柱的高度都大于或等于第i个立方柱的高度。很显然,当前i-1个的leff[i]求解出来之后,left[i]的求解便很简单了原创 2012-03-05 12:42:03 · 1257 阅读 · 0 评论 -
HDOJ 1711:Number Sequence KMP匹配
题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=1711 这道题目是单纯的KMP算法,而且不用改进的KMP就可以通过。没有什么特殊要注意的细节。 我的AC代码:#include const int Max = 1000000 + 10;int a[Max], b[Max], next[Max];int cases, m原创 2012-03-15 10:09:02 · 1487 阅读 · 0 评论 -
九度OJ108 HDOJ3790:最短路径问题 迪杰斯特拉算法
浙大的这道考研上机题明摆着要使用最短路径算法,考虑时间复杂度,我用了迪杰斯特拉算法。 这道题比书上的样例算法稍微有些复杂,不仅要求距离最短,而且要在同时有多个距离最短的情况下,要求费用也最短。这个处理的方法就是更新最短路径时考虑两种情况。HDOJ的测试数据里有重边,因此输入时要将保存最短的重边。 我的AC代码: #include #include #include原创 2012-02-18 21:54:09 · 3488 阅读 · 0 评论 -
九度OJ 1149:子串计算 暴力枚举
北大的这道考研上机题不难,暴力枚举一下就好了。题目要求输出按字典序,这时候关联容器map就派上用场了,map里的数据本身就是按照键值排列的,所以只要顺序输出容器中的元素即可。 题目URL:http://ac.jobdu.com/problem.php?id=1149 我的AC代码: #include #include #include #include #inc原创 2012-02-17 16:54:19 · 1671 阅读 · 0 评论 -
HDOJ 1869 六度分离 两两之间最短距离的最大值
这道题的背景是以著名的六度定理为依托,现在的SNS网站的理论基础。也就是说两个陌生人之间的最多不会由超过6个熟人相连。 想到这就可以用floyd算法求解了。若存在一对顶点的距离大于7,那么这个定理也就不成立。注意,两个人之间不超过6个人,也就是说两个人最多由7条边相连,而不是6条边。 #include#includeusing namespace std;原创 2011-12-31 19:30:40 · 1412 阅读 · 0 评论 -
HDOJ 1251 统计难题——第二次用字典树AC题目,写一下解题报告
第一次用字典树+BFS的方法统计以给定字符串为前缀的单词数目,超时了。百思不得其解,然后我看了一下讨论版里的一位同学的AC代码。豁然开朗,立刻明白了求解相同前缀的单词个数的最简单的解法。 其实在建一科字典树的时候,每插入一个字母,就相当于给以当前已经插入的串为前缀的单词增加了一个。这样,统计的时候就不用BFS了。哈哈。废话不多说了,贴出我的代码,跟大家分享,造福后代。#include原创 2011-11-22 09:51:54 · 1507 阅读 · 0 评论 -
NYOJ 116:士兵杀敌 第一次用树状数组AC题目
两个月前用暴力穷举做这道题目,超时!一直不得其解,今天学了一下树状数组,刚刚用这个在线数据结构AC了这道题目。 这道题目的URL:http://acm.nyist.net/JudgeOnline/problem.php?pid=116 树状数组的功能:查询一段区间的值的和。并且修改和查询的复杂度都是log(N)的。比起简单的暴力求和要快的多。 我这里给出自己原创 2011-11-24 14:43:59 · 984 阅读 · 0 评论 -
HDOJ 1086 You can Solve a Geometry Problem too 线段相交问题
给定n条线段,求解所有线段的交点个数。不是直线,直线的话太容易了,只要斜率 不一样便是相交。 两条线段相交也就意味着一个线段的两个端点跨立另一条线段的两侧。于是向量叉积的几何意义便得到了运用。如果两个点P1,P2在一条线段Q1Q2两侧,那么向量P1Q1*P1Q2必然和P2Q1*P2Q2异号,或者其中一者为零,那么P1, P2必然在线段Q1Q2的两侧。在判断Q1Q2是否在P1P2的两侧便原创 2012-01-05 16:50:10 · 1604 阅读 · 0 评论 -
POJ 3070: Fibonacci 递推式运算转换幂运算
《编程之美》上有一篇文章专门讲解斐波那契递推式的计算。当n特别大的时候,譬如10^9仍然用递推求解显然不妥。但是巧妙的将递推式计算转换成矩阵的幂运算之后,可以利用分治法高效的求幂运算,从而将O(n)转换成了O(log(n))的时间复杂度。证明题目已经给出,我们需要做的仅仅是将矩阵的幂运算代码实现。 我用了运算符重载实现矩阵的乘法运算。 题目URL:http://poj.原创 2012-01-07 23:27:35 · 1088 阅读 · 0 评论 -
HDOJ 2603:Bone Collector 0-1背包问题
题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=2602; 这是一道很一般的01背包问题, 用动态规划求解就行了。 这是我的AC代码。 #include#include#includeusing namespace std;const int Max = 1010;int vol[Max];int va原创 2011-12-14 13:50:03 · 1152 阅读 · 0 评论 -
POJ 1611:The Suspects 并查集求解
题目URL:http://poj.org/problem?id=1611 我是用的并查集求解,另外用了添加集合元素时用了路径压缩,这样查找集合代表元素是可以时间更快。 这是我的AC代码,欢迎拍砖。 #include#includeusing namespace std;const int Max = 30000 + 10;int set[Max];int原创 2011-12-21 10:16:50 · 878 阅读 · 0 评论 -
HDOJ 1403:Longest Common Substring 后缀数组的用处
以前在《编程珠玑》上看过后缀数组的作用,不过那道题的是针对单个字符串求最大重复连续子串的,而这道题是要求两个字符串的最长公共连续子串。一段时间内并不能把书上的那个解法应用到这道题上来。不过昨天晚上一是顿悟,加个标志位就行了嘛! 今天来试验了一下,果然AC。哈哈! 关于后缀数组的知识大家可以上网上搜或看《编程珠玑》上的那个例子。我这里给出这道题的AC代码,和大家分享。总体思路还是原创 2011-12-22 16:50:18 · 1178 阅读 · 0 评论 -
HDOJ 1496: Equations 这道题也哈希。。。
这道题是求四元二次方程的给定范围内的整数解的个数。 最初是想暴利枚举x1, x2, x3, 的值,但是害怕超时,因为这样 的话要循环1000000次。网上搜了一下其他人的代码,居然可以用哈希求解。于是豁然开朗了。 注意剪去abcd同号的情况,不然会超时。 #include#include#includeusing namespace原创 2011-12-29 19:28:38 · 1618 阅读 · 2 评论 -
HDOJ 1162:Eddy's picture 求解最小生成树
http://acm.hdu.edu.cn/showproblem.php?pid=1162 这道题也是一道单纯的求解最小生成树的题目,是个稠密图,所以是普里姆算法的用武之地。对于完全图,普里姆算法的复杂度(n^2),而克鲁斯卡尔算法的复杂度(n^2logn^2),效率大小长差很大。 我的AC代码:#include #include #include #include原创 2012-02-09 16:13:41 · 1119 阅读 · 0 评论 -
九度OJ 1165:字符串匹配 字符串处理
九度上能做出来这道题北航考研上机真题的不多,我半个小时就一次AC了,小有成就感。 题目URL:http://ac.jobdu.com/problem.php?id=1165 这道题有些正则表达式匹配的感觉,可是不知道九度的编译器支不支持C++标准库的regular_expression库。反正就用基本的C++写了,练练字符串处理的基本功。 题目说大小写通配,所以我干脆原创 2012-02-09 22:10:36 · 2329 阅读 · 0 评论 -
九度OJ 1197:奇偶校验 简单的位操作习题
华科的这道考研上机题的大意是,给一个字符串,计算每个字符的二进制表示中的1的个数,如果有奇数个1,则奇偶位为0, 偶数个1,则奇偶位为1。 题目URL:http://ac.jobdu.com/problem.php?id=1197 我的AC代码: #include #include using namespace std;const int Max = 100原创 2012-02-15 09:19:52 · 1926 阅读 · 0 评论 -
HDOJ 1062:Text Reverse 单词翻转
URL:http://acm.hdu.edu.cn/showproblem.php?pid=1062 我的处理思路是:遇到空格或’\0’之后便将已经出现的单词反转。重要的是'\0'要考虑进去。 这是AC源代码: #include#include#includeusing namespace std;const int Max = 1000 + 1原创 2011-12-13 12:46:11 · 1138 阅读 · 0 评论 -
九度OJ 1137 浮点数加法
北大的这道研究生上机真题初看起来很容易实现,先加小数部分,再加整数部分。但是没想到自己实现起来还是花了一个小时才AC掉,有些失望。更多的功夫还是花在了字符串的处理上,即使把小数和整数部分分离。 题目URL:http://ac.jobdu.com/problem.php?id=1137 我的AC代码。#include#include#include#in原创 2012-01-02 21:10:03 · 2464 阅读 · 4 评论 -
HDOJ 1029:Ignatius and the Princess IV 解题报告
题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=1029; 题目大意是找出数组中出现次数超过一半的数。基本思想是每遇到两个不同的数就消掉,设一个计数器就行了。存出现次数最大的那个数的出现次数。当下一个数与当前的数不同时,计数器减一,相同,则加一。 贴个AC代码:#include#includeusing namespace原创 2011-12-07 17:09:35 · 1715 阅读 · 2 评论 -
九度OJ 1016:火星A+B 长整数加法
做这道浙大的考研上机题时,以为要转换成long long型再相加。这个思路为这道题贡献了好几次WA。 洗澡的时候才灵光一现,有了新的想法,就是一道长整数加法嘛,只不过不是十进制的罢了,而且各个位的权值都不一样,算是见识的长整数加法的极致版本了。 题目URL:http://ac.jobdu.com/problem.php?id=1016 我的AC代码: #in原创 2012-02-13 21:00:26 · 2073 阅读 · 1 评论 -
HDOJ 1575:Tr A 矩阵的幂运算
这道题要求求解给定方阵的幂,我重载了一个幂运算符,发现C++的运算符很强大很好用! 这道题的URL:http://acm.hdu.edu.cn/showproblem.php?pid=1575; 我的AC代码。#include#include#includeusing namespace std;struct Matrix{ int d[10][10]; s原创 2012-01-09 09:36:29 · 2703 阅读 · 0 评论 -
HDOJ 1021:Fibonacci Again 找出循环周期
http://acm.hdu.edu.cn/showproblem.php?pid=1021 F(n-1) 与 F(n-2)的值的组合只有9种,因此F(n)的循环周期至多是9.判定循环周期的条件是F(n)=F(1)&&F(n-1)=F(0),那么必有F(n+1)=F(2),于是循环也就开始出现了。 我的AC代码。 #includeusing namespa原创 2012-02-07 12:39:56 · 1572 阅读 · 3 评论 -
HDOJ 1397:Goldbach's Conjecture 哈希加筛选法求素数
这道题目的URL:http://acm.hdu.edu.cn/showproblem.php?pid=1397 这道题目的解题要点是先用筛选法求出所有给定范围内的素数,然后哈希法查找。 这是我的AC代码: #includeusing namespace std;const int Max = (1<<15) + 10;bool prime[Max];voi原创 2011-12-13 13:30:35 · 1149 阅读 · 0 评论 -
HDOJ 1285:确定比赛名次 拓扑排序
这道题的关键是拓扑排序,但是同时入度为0的结点可能有多个结点,按题目要求,用优先级队列便可解决。另外,不要忘记判断重边。 我的AC代码。 昨天晚上想到判断重边的工作完全可以交给STL的find()函数来做,自己没必要写函数,于是修改了一下。现在整个程序更加简洁了。 #include#include#include#include#includeusing原创 2011-12-14 21:45:16 · 1417 阅读 · 0 评论 -
HDOJ 2206:IP的计算 这道题的边界条件可以挑战你的想象力
这道题目跟我去雷军的小米科技三面的一道面试题有些类似,现在想起来当时并没有对边界条件做过多的考虑。 这道题目的URL:http://acm.hdu.edu.cn/showproblem.php?pid=2206 自己总结起来,一个合法的IP表达式应该满足下面几个条件。 1.每个ip小节的值不应该超过255,此外每个小节的字数都不能多于四个, 356.原创 2011-12-17 11:03:41 · 1201 阅读 · 0 评论 -
HDOJ 1840 Equations 一道初中生可以解决的题目
题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=1840 判断一个给定的一元二次方程的解的个数。但是这个题目的的一个隐含条件是,a不一定不为0.如果a为零的话,那么这个方程就要退化成为一个一元一次方程了。甚至当a,b同时为零的话,就要考虑c是否为零了,若c为零,则解无穷多。若不为0,则无解。这道的分类讨论必须很严谨。复习了一下初中的代数知识原创 2012-01-03 15:30:26 · 1168 阅读 · 0 评论