
——ACM——
文章平均质量分 72
witnessai1
初学者的无知在于未学,学者的无知在于学后
展开
-
括号匹配问题
1. 括号匹配的四种可能性:①左右括号配对次序不正确②右括号多于左括号③左括号多于右括号④左右括号匹配正确2. 算法思想:1.顺序扫描算数表达式(表现为一个字符串),当遇到三种类型的左括号时候让该括号进栈;2.当扫描到某一种类型的右括号时,比较当前栈顶元素是否与之匹配,若匹配,退栈继续判断;3.若当前栈顶元素与当前扫描的括号不匹配,则左右括号配对次序不正确,匹配转载 2015-08-09 19:42:59 · 578 阅读 · 0 评论 -
ACM无穷常数的设置
无穷大[cpp] view plain copy const int INF = 0x3f3f3f3f; 这样设置的好处是可以通过memset直接对连续的内存进行无穷大初始化,如下[cpp] view plain copy memset(blockptr,0x3f,blocksiz转载 2017-03-13 18:55:36 · 517 阅读 · 0 评论 -
滚动数组
转载:http://blog.youkuaiyun.com/niushuai666/article/details/6677982滚动数组的作用在于优化空间,主要应用在递推或动态规划中(如01背包问题)。因为DP题目是一个自底向上的扩展过程,我们常常需要用到的是连续的解,前面的解往往可以舍去。所以用滚动数组优化是很有效的。利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。一个简单的例子:转载 2017-03-14 15:58:14 · 283 阅读 · 0 评论 -
PTA 求自定类型元素序列的中位数,冒泡超时,改为希尔排序
4-11 求自定类型元素序列的中位数 (25分)本题要求实现一个函数,求N个集合元素A[]的中位数,即序列中第\lfloor N/2 +1\rfloor⌊N/2+1⌋大的元素。其中集合元素的类型为自定义的ElementType。函数接口定义:ElementType Median( ElementType A[], int N );其中给定集合元素存放在数组原创 2017-03-15 17:07:11 · 1005 阅读 · 0 评论 -
分离整数部分和小数部分
要求:编写一个程序,其功能为:从键盘上输入一个浮点数(小数点后有三位数),然后分别输出该数的整数部分和小数部分。样例输入:123.456样例输出:123 456[参考解答][cpp] view plain copy print?#include int main() { float x;原创 2017-03-15 19:53:41 · 7544 阅读 · 3 评论 -
c++ bitset类用法
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了std::bitset的using声明:[cpp] view plain copy#include <bitset&g...转载 2017-04-02 14:32:53 · 570 阅读 · 0 评论 -
跳跃表
如何在大量元素中去查找某个元素。例如在下面的“大量元素”的数组中对于上面的情况无论是查找3还是查找8,只有一种办法,那就是遍历。时间复杂度是O(N)但是举一个生活中的例子,我们在查新华字典的时候,没有人会一页一页的翻吧,肯定是翻到中间看看,然后再决定往左边查,还是往右边查。显然,可以把元素排序放在一个数组中,这样就可以利用二分查找了。查字典也算是二分查找的一个实转载 2017-04-03 17:14:38 · 396 阅读 · 0 评论 -
块状链表
Part 1、块状链表。 定位插入删除数组O(1)O(n)O(n)链表O(n)O(1)O(1)对于线性表的以上常见操作来说,数组和链表都无法有效地解决。但是,若我们将链表的每个节点存成一个数组,使得链表里每个节点的数据拼接起来就是原先的线性表中的内容(即块状链表),并且数组的大小合适的话,以上的操作都能比较转载 2017-04-03 17:20:57 · 1424 阅读 · 0 评论 -
从前缀树到后缀树
原文:http://blog.youkuaiyun.com/wwh578867817/article/details/44886709前一阵看的数据结构比较多,刚好放假没事,把一些我认为重要的写成博客记录下来。今天主要看的是树中的两个比较重要的数据结构前缀树和后缀树这两个树的应用特别广,但是我认为常看课外技术书籍的,博客的都知道,但是一些专注于课本的同学可能就没听说过了。比如我转载 2017-04-03 19:39:02 · 666 阅读 · 0 评论 -
从B 树、B+ 树、B* 树谈到R 树
从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.youkuaiyun.com/v_JULY_v 。 第一节、B树、B+树、B*转载 2017-04-03 20:43:38 · 261 阅读 · 0 评论 -
ACM代码中为什么无穷大采用0x3f3f3f3f
如果问题中各数据的范围明确,那么无穷大的设定不是问题,在不明确的情况下,很多程序员都取0x7fffffff作为无穷大,因为这是32-bit int的最大值。如果这个无穷大只用于一般的比较(比如求最小值时min变量的初值),那么0x7fffffff确实是一个完美的选择,但是在更多的情况下,0x7fffffff并不是一个好的选择。很多时候我们并不只是单纯拿无穷大来作比较,而是会运算后再做比转载 2017-03-13 18:51:41 · 672 阅读 · 0 评论 -
漫谈二分查找
历史上,Knuth在其>一书的第6.2.1节指出:尽管第一个二分搜索算法于1946年就出现,然而第一个完全正确的二分搜索算法直到1962年才出现。而不经仔细斟酌而写出的一个二分查找经常遭遇off by one或者无限循环的错误。下面将讨论二分查找的理论基础,实现应用,及如何采用何种技术保证写出一个正确的二分程序,让我们免于思考麻烦的边界及结束判断问题。在c++的stl中有如下函数转载 2017-03-23 00:38:39 · 495 阅读 · 0 评论 -
C++<algorithm>中sort的比较函数写法
转自:http://www.wl566.com/biancheng/98907.htmlC++中sort的比较函数写法,有需要的朋友可以参考下。 定义排序函数:方法1:声明外部比较函数bool Less(const Student& s1, const Student& s2){ return s1.name //从小到大排序}std::sor转载 2015-08-10 10:54:37 · 1483 阅读 · 0 评论 -
c语言实现魔方阵算法
魔方阵是指由1,2,3……n2填充的,每一行、每一列、对角线之和均相等的方阵,阶数n = 3,4,5…。魔方阵也称为幻方阵,看下面的实现方法吧例如三阶魔方阵为:魔方阵有什么的规律呢?魔方阵分为奇幻方和偶幻方。而偶幻方又分为是4的倍数(如4,8,12……)和不是4的倍数(如6,10,14……)两种。下面分别进行介绍。2 奇魔方的算法2.1 奇魔方的转载 2015-08-14 11:00:40 · 2463 阅读 · 0 评论 -
汉诺塔算法递归版
经典例题,其实网上也有很多代码,可以直接参考。递归分析,汉诺塔的算法就3个步骤:第一,把a上的n-1个盘通过c移动到b。第二,把a上的最下面的盘移到c。第三,因为n-1个盘全在b上了,所以把b当做a重复以上步骤就好了。所以算法看起来就简单多了。不过,思考过程还是很痛苦的,难以理解。递归中会保存数据的好处在这里又得到体现,太神奇了。汉诺塔代码如下:#i原创 2015-08-14 12:55:07 · 671 阅读 · 0 评论 -
wrong code
#include #include #include using namespace std;stack m1;stack m2;int main(){ string s; while(cin >> s) { int len = s.size(), i; if(len == 1) {原创 2015-09-11 23:17:09 · 1132 阅读 · 0 评论 -
并查集
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点转载 2015-10-17 18:02:13 · 382 阅读 · 0 评论 -
ACM POJ 题目分类(完整整理版本)
DP: 1011 NTA 简单题 1013 Great Equipment 简单题 1024 Calendar Game 简单题 1027 Human Gene Functions 简单题 1037 Gridland 简单题 1052 Algernon s Noxi转载 2016-09-28 19:08:13 · 3734 阅读 · 0 评论 -
c++ cout 格式化输出浮点数、整数及格方法
C语言里可以用printf(),%f来实现浮点数的格式化输出,用cout呢。。。?下面的方法是在网上找到的,如果各位有别的办法谢谢留下...iomanip.h是I/O流控制头文件,就像C里面的格式化输出一样.以下是一些常的:dec 置基数为10 相当于"%d"hex 置基数为16 相当于"%X"oct 置基数为8 相当于"%o"setfill(c) 设填充字符为c转载 2015-08-14 10:38:55 · 33448 阅读 · 0 评论 -
ACM中浮点数精度处理
转载:http://www.cnblogs.com/crazyacking/p/4668471.html在ACM中,精度问题非常常见。其中计算几何头疼的地方一般在于代码量大和精度问题,代码量问题只要平时注意积累模板一般就不成问题了。精度问题则不好说,有时候一个精度问题就可能成为一道题的瓶颈,让你debug半天都找不到错误出在哪。1.浮点数为啥会有精度问题:浮点数(以C/C++为准)转载 2017-03-20 00:28:26 · 1139 阅读 · 0 评论 -
位运算简介及实用
原文:http://www.matrix67.com/blog/archives/263位运算简介及实用技巧(一):基础篇 去年年底写的关于位运算的日志是这个Blog里少数大受欢迎的文章之一,很多人都希望我能不断完善那篇文章。后来我看到了不少其它的资料,学习到了更多关于位运算的知识,有了重新整理位运算技巧的想法。从今天起我就开始写这一系列位运算讲解文章,与其说是原来那篇文章的fo转载 2017-03-20 20:11:31 · 344 阅读 · 0 评论 -
插入排序、归并排序和递归算法的复杂性分析
转载请声明出处:http://blog.youkuaiyun.com/zhongkelee/article/details/44490315说在前面 这学期正在学习《计算机算法设计与分析》,所以用博客的形式记录自己的学习心得,与大家交流分享。一、算法渐进复杂性及其相关记号1. 复杂度概念 算法的复杂性分析,说白了也就是关于计算机程序的性能和算法所用计算机资源的理论分析。转载 2017-04-03 23:00:47 · 1994 阅读 · 0 评论