摘要:考察点在于如何判断两线段相交(快速排斥+跨立),之前使用链表结构超时了,后来用vector实现。判断线段相交的办法,这篇文章讲的很明白。http://324012406.iteye.com/blog/738318#include <iostream>#include <vector>using namespace std;typedef struct Coordinate{ Coordinate(double _x, double _y) :x(_x),y(_y) { } double x; double y;} Coordinate;typedef... 阅读全文
POJ 2255 Tree Recovery
2012-03-09 14:35 by 咆哮的马甲, 210 阅读, 0 推荐, 收藏, 编辑
摘要:根据二叉树的先序和中序遍历的结果,构造出这棵树后续遍历的结果。思路是根据先序遍历的节点将中序遍历的结果连续二分,递归即可还原树的本来面目。将找到的子树根节点压栈再退栈即可后序输出二叉树。#include <iostream>#include <string>#include <stack>using namespace std;stack<char> s;void RecreateTree(string& pre, string& in){ if(!pre.empty() && !in.empty()) { cha 阅读全文
POJ 3461 Oulipo
2012-03-05 16:33 by 咆哮的马甲, 164 阅读, 0 推荐, 收藏, 编辑
摘要:利用KMP算法查找字符串中字串出现的次数#include <iostream>#include <vector>#include <string>using namespace std;int* computeOverlap(string& s){ int length = s.length(); if(length == 0) return NULL; int* overlayValue = new int[length]; overlayValue[0] = -1; for(int i=1; i<length; i++) { ... 阅读全文
POJ 2388 Who's in the Middle
2012-03-01 14:13 by 咆哮的马甲, 429 阅读, 0 推荐, 收藏, 编辑
摘要:今天恰好在总结各种排序算法,在POJ上找到这样一道水题找到给定乱序数组的中间值。直接插入排序解法#include <iostream>using namespace std;int cow[1000000];void swap(int &a, int &b){ if(a == b) return; a = a^b; b = b^a; a = a^b;}int main(){ int n = 0; cin>>n; for(int i=0; i<n; i++) { cin>>cow[i]; } for(int ... 阅读全文
修复Window远程控制Ubuntu只显示桌面的问题
2012-02-24 15:37 by 咆哮的马甲, 600 阅读, 0 推荐, 收藏, 编辑
摘要:在另一台机器上装了Ubuntu,希望能从工作的Windows7机器进行远程控制,但是只能显示桌面背景,鼠标和键盘完全不工作,Ubuntu的应用程序也不能显示。在网上找到的解决方案如下:1. 打开/etc/xrdp/startwm.sh2. 在. /etc/X11/Xsession前一行插入echo "gnome-session --session=ubuntu-2d" > .xsession3. 保存文件4. 执行sudo /etc/init.d/xrdp restart参考:http://askubuntu.com/questions/91657/xrdp-does 阅读全文
POJ 3750 小孩报数问题
2012-02-23 12:30 by 咆哮的马甲, 218 阅读, 0 推荐, 收藏, 编辑
摘要:基本的双向链表即可实现。最后一个element的判定很重要。#include <iostream>#include <string>using namespace std;typedef struct Child{ string name; Child* pre; Child* next;} Child;int main(){ // Get input N int n; cin>>n; Child* head = NULL; Child* tail = NULL; Child* cur = NULL; // Create dlink ... 阅读全文
POJ 3658 Artificial Lake
2012-02-15 19:31 by 咆哮的马甲, 247 阅读, 0 推荐, 收藏, 编辑
摘要:这道题做了整整一天,一直遇到Time Limit Exceeded,估计是链表的创建以及修改指针指向比较费时。不断的修改之后才勉强达到要求。解题思路:模拟水流由高到低的过程,单纯的模拟会超时,所以要做一些优化。#include "stdio.h"#include <iostream>#define max 1000010using namespace std;typedef struct Level{ Level() { this->width = 0; this->height = 0; this->index = 0; ... 阅读全文
让C++程序崩溃的简便方法
2011-12-19 16:30 by 咆哮的马甲, 2926 阅读, 1 推荐, 收藏, 编辑
摘要:今天在stackoverflow上看到有人提问怎样写出最短的代码让c++的程序崩溃,摘抄部分答案分享。链接:http://stackoverflow.com/questions/8481783/what-is-the-easiest-way-to-make-a-c-program-crash1. abort()abort()方法的目的在于使程序非正常退出,它生成一个SIGABRT信号,该信号将导致程序退出并返回给当前程序的运行环境一个unsuccessful termination的错误码。被abort终结的程序将不会调用全局和静态变量的析构函数,也不会调用atexit()方法中注册的函数。a 阅读全文
ACE日志输出的几种重定向方式
2011-11-22 22:44 by 咆哮的马甲, 1924 阅读, 1 推荐, 收藏, 编辑
摘要:初学ACE,将自己的一些总结放在这里与大家分享,希望能有所帮助。不当之处恳请大家指正。1. 输出到stderrACE输出的默认方式,将日志输出到控制台。如果希望从其他的重定向方式切换到stderr,可以采用如下的方式。1 ACE_LOG_MSG->open (0, ACE_Log_Msg::STDERR);2 ACE_DEBUG ((LM_INFO, ACE_TEXT ("Hello ACE Stderr Log\n")));或者1 ACE_LOG_MSG->clr_flags(ACE_Log_Msg::OSTREAM | ACE_Log_Msg::LOGGER 阅读全文
《Effective STL 读书笔记》 第五章 算法
2011-09-12 12:53 by 咆哮的马甲, 502 阅读, 1 推荐, 收藏, 编辑
摘要:作者:咆哮的马甲出处:http://www.cnblogs.com/arthurliu/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。转载请保持文档的完整性,严禁用于任何商业用途,否则保留追究法律责任的权利。第三十条: 确保目标区间足够大下面例子中,希望将一个容器中的内容添加到另一个容器的尾部1 int transformogrify(int x); //将x值做一些处理,返回一个新的值2 3 vector<int> values;4 5 vector<int> results;6 7 ... //初始化valu 阅读全文