摘要:
http://www.matrix67.com/blog/archives/263 (原文链接)什么是位运算?程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理): 110AND 1011----------0010-->2由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速
阅读全文
posted @ 2013-04-29 16:42
PegasusWang
阅读(468)
推荐(0)
摘要:
赤裸裸滴最小生成树(MST),刚学的玩意,用两种方法熟练一下。(都是greedy)Kruskal方法:先对边按照代价非递减排序,再不断添加边且不产生环路,当边数=点数-1结束。判断加入(v,w)是否会产生环路,可以用并查集,如果检查v和w在同一集合中,说明这两个点已经连通,加入边(v, w)就会产生环路。Kruskal算法总时间复杂度O(eloge). 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 const int MAXN = 5050; 5 int n, fathe
阅读全文
posted @ 2013-04-29 14:21
PegasusWang
阅读(870)
推荐(0)
摘要:
http://www.cppblog.com/mzty/archive/2005/12/15/1770.html详细解说 STL 排序(Sort)作者Winter详细解说 STL 排序(Sort)0 前言: STL,为什么你必须掌握1 STL提供的Sort 算法1.1 所有sort算法介绍1.2 sort 中的比较函数1.3 sort 的稳定性1.4 全排序1.5 局部排序1.6 nth_element 指定元素排序1.7 partition 和stable_partition2 Sort 和容器3 选择合适的排序函数4 小结5 参考文档一切复杂的排序操作,都可以通过STL方便实现!0 前言:
阅读全文
posted @ 2013-04-27 19:46
PegasusWang
阅读(367)
推荐(0)
摘要:
priority_queue 优先队列是容器适配器类型,根据某些严格的弱排序条件,专门设计了第一个元素总最大元素的容器。 很像堆,可以检索最大的堆元素(在优先队列中的最顶的元素)并且可以无限制的插入元素。 优先队列作为容器适配器, 用一个具体的容器类的封装对象作为其底层容器,提供一个具体的访问容器元素的成员函数集合。元素都是从具体的容器的“尾部”进行弹出(pop)操作,这个“尾部”就是所谓的优先队列的顶。 底层容器可以是任何的标准容器类模板或者其他的具体的设计容器类。仅有的要求是需要支持下面的操作:front()push_back()pop_back() 因此可以使用vector,deque这
阅读全文
posted @ 2013-04-27 19:44
PegasusWang
阅读(334)
推荐(0)
摘要:
转自moonlit当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间。 使用freopen函数可以解决测试数据输入问题,避免重复输入,不失为一种简单而有效的解决方法。 函数名:freopen 声明:FILE *freopen( const char *path, const char *mode, FILE *stream ); 所在文件: stdio.h 参数说明:...
阅读全文
posted @ 2013-04-27 19:43
PegasusWang
阅读(463)
推荐(0)
摘要:
在不同的语言中,对负数执行取模运算,结果有可能会是不同的。例如,(-11)%5在python中计算的结果是4,而在C(C99)中计算的结果则是-1。 truncate除法&&floor除法 在大多数编程语言中,如果整数a不是整数b的整数倍数的话,那么a、b做除法产生的实际结果的小数部分将会被截除,这个过程称为截尾(truncation)。如果除法的结果是正数的话,那么一般的编程语言都会把结果趋零截尾,也就是说,直接把商的小数部分去除。但是如果除法的结果是负数的话,不同的语言通常采用了两种不同的截尾方法:一种是趋零截尾(truncatetowardzero),另一种是趋负无穷截尾
阅读全文
posted @ 2013-04-27 19:41
PegasusWang
阅读(9978)
推荐(2)
摘要:
进入vi的命令vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filenamevi filename....filename :打开多个文件,依次进行编辑移动光标类命令h :光标左移一个字符l :光标右移一个字符space:光标右移一个字符Backspace:光标左移一个字符k或Ctrl+p:
阅读全文
posted @ 2013-04-27 19:40
PegasusWang
阅读(376)
推荐(0)
摘要:
回忆上年大一的时候自己自学linux开始在ubuntu下写程序的时候,由于对linux一点都不懂,走了不少弯路。现在总结一下,帮助初学者掌握如何在ubuntu中编写运行简单的c和c++程序,用来刷刷题练习啥的。在此不用任何集成开发环境(IDE),都是大同小异,,g++(gcc)+gdb调试器是linux下的最强组合,写程序用的是编辑器vi或vim,(也可以用另一大神奇emacs).在windows用习惯的童鞋一开始可能不太好接受这种方式,学计算机的就要有折腾的能力。vi和emacs至少要学一个,这两个玩意一开始可能会觉得怪异,虽然是文本编辑器,但是十分强大,用熟练之后写代码,改代码效率不是盖的
阅读全文
posted @ 2013-04-26 23:43
PegasusWang
阅读(5395)
推荐(0)
摘要:
翻译:时间限制:1秒空间限制: 64MB对一个栈进行一些操作。详见下。输入:第一行一个整数N,操作总数。接下来N行每行一个操作。若数大于0,代表将该数压栈。 若数等于-1,代表输出并抛弃栈顶元素。若为0,代表将目前栈内所有元素重新压栈。(就是复制一份栈)输出:每个-1操作时的栈顶元素。样例输入:8340-1-1-1-11样例输出:4343 1 #include <iostream> 2 #include <cstdio> 3 const int MAXN = 1000000 + 10; 4 int a[2 * MAXN]; 5 using namespace std;
阅读全文
posted @ 2013-04-23 21:07
PegasusWang
阅读(451)
推荐(0)
摘要:
还是水题一道,直接模拟。代码写的有点乱。这是翻译:http://www.nocow.cn/index.php/Translate:URAL/1917间限制:1秒空间限制:64MB你去一个洞窟内探险,洞窟内有许多宝石,但都有魔法守护,你需要用魔法将它们打下来。每个宝石都有自己的防御等级,当你的魔法超过它的防御等级时它就会被你打下来。但是,当它被你打下来的时候,它会反弹你的魔法。如果反弹的魔法过强,你就会被自己的魔法杀死。很不幸的是,你的魔法是群体性的,你不能选择攻击谁,只要防御等级低于你魔法水平的宝石都会被你打下来。并且每个都会反弹你的魔法。你可以假设你的魔法水平无限大,但你躲避反弹的魔法的能力
阅读全文
posted @ 2013-04-20 23:30
PegasusWang
阅读(480)
推荐(0)