自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 C#若干关键字解析 (abstract, interface, sealed, virtual, override, new, delegate)

abstract:1. 不能实例化,只能通过子类实例化2. abstract方法只能在abstract类中,abstract类被继承时,子类必须实现所有abstract方法interface:1. 全部方法不能有实体,没有修饰符2. 除方法,属性,索引器和事件外,不能有其他类型的成员virtual方法可以有函数体,但abstract没有override和new都

2015-05-01 13:32:45 650

原创 C# 正则表达式 笔记

1. 双引号匹配:\'''不起作用,要用\"待续

2013-07-23 10:47:24 526

原创 C#中的正则表达式

输出匹配的部分:public static void Main(string[] args) { string text = "I've found this amazing URL at http://www.sohu.com ,and then find ftp://ftp.sohu.com is better.";

2013-07-21 19:15:46 571

原创 POJ 1065 (贪心法)

/*思路:首先对木棒排序,按length升序排序,length相同,则按weight升序排序然后在weight中通过贪心法找有多少个递增序列*/#include #include using namespace std;const int MAX_NUM = 5002;struct stick{ int len, wgt;}stk[MAX_NUM];bool vis[MAX

2013-03-19 17:03:18 610

原创 POJ 1141 (动态规划)

先看一种容易理解的方法,不过会超时#include #include #include using namespace std;char str[101];string lbr = "(";string rbr = ")";string lsbr = "[";string rsbr = "]";//char res[201];const int INF = 999999

2013-03-10 20:48:40 385

原创 POJ 1743 (后缀数组)

思路:首先构建后缀数组,这里要注意theme可以相差k,如abcdefgh中,d-a == e-b因此可以将原数组相邻元素做差,s[i] = s[i] - s[i+1],这样就转化为大小为n-1的数组建立后缀树组。然后利用二分法搜索可能的长度,判断该长度是不是无重叠重复子串的长度。对于每一个长度d,将height中大于等于d的保留,小于的去除,这样就将height分为几组,因为求最大重复子

2013-02-25 21:41:35 411

原创 POJ 3264 (RMQ)

RMQ简介 :http://blog.csdn.net/niushuai666/article/details/6624672//思路使用RMQ算法,分别计算某个区间上的最小值和最大值,做差即可#include #include using namespace std;const int MAX_NUM = 200001;int fmax[MAX_NUM][20], fmin[MA

2013-02-21 21:39:03 2278

原创 POJ 2352 (树状数组)

//计算某颗星的level,就是计算所有x,y都小于该星的星星数目//由于输入数据是按y递增的,因此只要计算当前时刻x坐标位于(0, x)的星星数目即可//计算某一区间上数据的和用树状数组(且区间上数据是动态变化的)//树状数组:http://blog.sina.com.cn/s/blog_8627bf080100sq46.html#include using namespace std

2013-02-19 15:23:05 311

原创 POJ 2777 (线段树)

//关键点://1. 用位代表颜色,计算某个段的颜色组成时,用或运算:// line[c].color = line[c<<1].color | line[(c<<1)+1].color//2. 延时着色,即当某一层为纯色时,则将它的子节点都标记为该颜色#include using namespace std;struct node{ int from, to; //每一位代

2013-02-19 00:34:37 317

原创 poj 2828 (线段树)

//思路:从最后一个人往前插,这样pos的意义就变成了,前面有多少个空位。//线段树上每个节点中存储的是当前时刻,该区间有多少空位。//如果某个人插入到pos[i],则找第pos[i]个空位置插入即可#include using namespace std;struct node{ int from, to; int cap;};const int MAX_NUM = 200

2013-02-17 21:21:18 309

原创 POJ 2002 (hash + 几何)

算法过程:1 将顶点按x坐标递增排序,若x相同,按y坐标递增排序,然后枚举所有边,对每一条由点p1和p2(根据排序p1     1) 将边绕p1逆时针旋转90度得到点p3    2) 将边绕p2顺时针旋转90度得到点p4则p1 p2 p3 p4组成一个正方形,设p1 = (x1,y1), p2 = (x2, y2),根据向量的旋转公式可以求出p3, p4的坐标为

2013-02-13 22:10:47 663

原创 POJ 1258 (最小生成树 kruskal)

克鲁斯卡尔(Kruskal)算法(只与边相关)算法描述:克鲁斯卡尔算法需要对图的边进行访问,所以克鲁斯卡尔算法的时间复杂度只和边又关系,可以证明其时间复杂度为O(eloge)。算法过程:1.将图各边按照权值进行排序2.将图遍历一次,找出权值最小的边,(条件:此次找出的边不能和已加入最小生成树集合的边构成环),若符合条件,则加入最小生成树的集合中。不符合条

2013-02-09 16:40:53 2507 1

原创 POJ 1789 (最小生成树 prim)

Prim算法:    Prim算法实现的是找出一个有权重连通图中的最小生成树,即:具有最小权重且连接到所有结点的树。(强调的是树,树是没有回路的)。    Prim算法是这样来做的:     首先以一个结点作为最小生成树的初始结点,然后以迭代的方式找出与最小生成树中各结点权重最小边,并加入到最小生成树中。加入之后如果产生回路则跳过这条边,选择下一个结点。当所有结点都加入到最

2013-02-09 15:30:51 618

原创 POJ 2230 (欧拉回路)

//给你一幅连通的图,要求从起点1开始走,要经过每条边刚好两次,//并且最终回到1起点,很明显,欧拉回路,dfs输出路径即可。/*//邻接矩阵表示法,超时#include using namespace std;const int VETEX_NUM = 10002;const int EDGE_NUM = 50002;int adj[VETEX_NUM][VETEX_NUM];

2013-02-06 20:52:55 435

原创 POJ 1386 (欧拉路径+并查集)

题目的大意是:给出一些单词,问能否拼接成一串,使单词字母首尾相连。例如,Sample中的:acmmalformmouse我们可以构造出:acm->malform->mouse,符合题目要求。/*1. 有向图G为欧拉图,当且仅当G的基图 连通,且所有顶点的入度等于出度。2. 有向图G为半欧拉图,当且仅当G的基图连通,且存在一个顶点的入度比出度大1, 一个顶点入度

2013-02-06 20:42:20 401

原创 POJ 1042(枚举+贪心)

#include using namespace std;const int MAX_NUM = 32;const int MAX_MINUTE = 20 * 12;int d[MAX_NUM], t[MAX_NUM], time[MAX_NUM], tt[MAX_NUM];int f[MAX_NUM][MAX_MINUTE];int n, h;int max(int a, in

2013-02-05 13:40:02 505

原创 POJ 1033 (模拟+贪心)

思路参考的一篇博文,写的很清楚:http://www.cnblogs.com/damacheng/archive/2010/09/24/1833983.html我对他的代码做了优化,用数组实现了堆栈#include using namespace std;const int MAX_NUM = 10002;int cluster[MAX_NUM];int stack[MAX_

2013-01-22 01:02:21 512

原创 POJ 1011 (DFS+剪枝)

/*思路:首先说说暴力搜索的思路,先将数组排序,然后从第一个开始遍历,找和为target的组合找到一组后,再从头开始找另一组,直到全部匹配为止剪枝策略:1. target肯定介于最大值和sum之间2. target肯定能被sum整除3. 排序后可能有相邻两个数相等的情况,如果前一个不符合条件,那么当前的就不用再执行递归了*/#include #include using na

2013-01-21 14:05:31 411

原创 POJ 2531 (DFS+剪枝)

剪枝策略:初始设置所有节点都归于集合A,如果将某元素由集合A移动到集合B,流量会减小,则剪枝因为在递归过程中,集合A中元素越来越多,diff值是单调递减的,因此当diff为负时,后续的sum只会减小#include using namespace std;const int MAX_NUM = 24;const int A = 0;const int B = 1;int

2013-01-19 20:29:28 427

原创 POJ 2251(BFS)

看练习册上把这道题归到DFS,于是用了DFS,TLE,于是换用BFS,一次AC#include #include using namespace std;const int MAX_LEN = 32;const int INF = 0x3F3F3F3F;char maze[MAX_LEN][MAX_LEN][MAX_LEN];bool vis[MAX_LEN][MAX_LEN

2013-01-19 12:37:11 361

原创 POJ 1094(拓扑排序)

/*思路:典型的拓扑排序问题这道题题意容易引起误解:如果解不唯一,则输出Sorted sequence cannot be determined.如果存在环,则输出Inconsistency found after %d relations.如果解唯一,则输出Sorted sequence determined after %d relations: %s.*/#include u

2013-01-19 10:00:22 300

原创 POJ 2388 (堆排序求中位数)

#include const int MAX_SIZE = 100001;int arr[MAX_SIZE];void swap(int& a, int& b){ a = a ^ b; b = a ^ b; a = a ^ b;}void build_heap(int size){ int i = 1; while (i <= size)

2013-01-14 10:22:50 988

原创 C++基础汇总

C++的标准不允许复制构造函数传值参数,而必须是传引用或者常量引用

2012-10-12 16:14:03 252

原创 C++中不能被重载的运算符

.::?:sizeof

2012-10-09 15:53:42 467

原创 单件模式和不能被继承的类

不能被继承的类:将构造函数设为private,然后用公有的static函数访问:class FF{private: FF(){}public: static FF* init() { FF* g = new FF(); return g; }};class GG: public FF{};int main(){ F

2012-10-08 10:02:30 702

原创 操作系统面试题

一、linux下进程间通信的几种主要手段简介:管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持U

2012-10-06 20:50:28 362

原创 简单的正则表达式实现

/*'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).The matching should cover the entire input string (not partial).The function protot

2012-10-05 22:55:37 781

原创 字符串转整型(atoi)

__int64 m_atoi(const char* str){ if (!str) return 0; __int64 res = 0; //设置成__int64防止溢出 __int64 sign = 1; const char* p = str; while (*p == ' ' || *p == '\t') ++p; //字符串前面的空格 if (*p == '-'){

2012-10-04 18:01:30 404

原创 并查集浅析(poj 1308)

转载一篇讲解,讲的非常透彻:http://blog.csdn.net/pure_life/article/details/2922118POJ 1308形成树的条件:(1) 只有一个根 (2) 非根节点入度只能为1#include #include const int MAX_SIZE = 105;int parent[MAX_SIZE];bool flag[MAX_SIZE

2012-10-03 22:22:21 1344 1

原创 经典动态规划题目(POJ 1015)

在文章开始时,先声明一下,小弟刚开始接触acm,水平有限,所以这里给出的程序是阉割版的,只实现了关键功能,无法ac这道题类似于经典的数组分割问题,可参见《编程之美》2.18#include #include const int MAX_N = 202;const int MAX_M = 22;const int MAX_SUM = 1001;bool dp[M

2012-10-03 17:50:44 579

原创 0-1背包问题入门

闲话少说,直接上代码:#include using namespace std;const int MAX_NUM = 4;const int MAX_MASS = 10;int w[MAX_NUM] = {2, 3, 4, 7};int v[MAX_NUM] = {1, 3, 5, 9};int c[MAX_NUM];int maxv;int dp[MAX_NUM+1][

2012-10-03 08:59:16 317

原创 Linux文件系统的一些理解

1. Linux的文件结构是单个的树状结构,可以用tree命令查看。每个分区都要挂载在某个目录下,目录是逻辑上的概念,分区是物理上的概念(磁盘分区)2. 通过ls -l命令可以看到文件的访问权限 顺序是“ 用户-owner所在的组-owner ”3. inode是Linux文件系统中一个重要概念。目录块、inode Table区块和data block数据区域。node包含文件

2012-09-25 20:12:16 358

原创 Linux文件系统的一些理解

1. Linux的文件结构是单个的树状结构,可以用tree命令查看。每个分区都要挂载在某个目录下,目录是逻辑上的概念,分区是物理上的概念(磁盘分区)2. 通过ls -l命令可以看到文件的访问权限 顺序是“ 用户-owner所在的组-owner ”3. inode是Linux文件系统中一个重要概念。inode称为文件索引节点,是文件基本信息的存放地和数据块指针存放地。Linux正统的

2012-09-25 19:58:22 92

原创 实模式和保护模式

实模式:系统程序和用户程序并没有区别对待,而且每一个指针都是指向实际的物理地址。这样一来,用户程序的一个指针如果指向了系统程序区域或其他用户程序区域,并修改了内容,那么对于这个被修改的系统程序或用户程序,其后果就很可能是灾难性的。保护模式:物理内存地址也不能直接被程序访问,程序内部的地址(虚拟地址)要由操作系统转化为物理地址去访问,程序对此一无所知。

2012-09-25 17:04:24 353

转载 C++ 类,公有继承,保护继承,私有继承

转自:http://hi.baidu.com/秀才太守C++不同于C的一个特征就是引入了类的概念,本文就类的公有变量(函数),保护变量(函数),私有变量(函数)以及公有继承,保护继承,私有继承做一个记录。参考了林锐博士的《高质量程序设计指南》,《程序员宝典》及网络上面的一些帖子。先来写一个基类:class parent{public:parent(int

2012-09-22 09:46:10 942

原创 最长公共子串

/*要点:如果s1[i] == s2[j] 返回lcs(i-1, j-1)+1否则,返回lcs(i-1, j)和lcs(i, j-1)的较大者*/#include using namespace std;const int MAX_SIZE = 10;char s1[] = "BDCABA";char s2[] = "ABCBDAB";int dp[MAX_SIZE][MA

2012-09-16 22:49:27 365

原创 求一个数组的最长递减子序列

/*求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2} */#include using namespace std;int arr[8] = {9, 4, 3, 2, 5, 4, 3, 2};int dp[8] = {0};int idx[8] = {0};void lds(int size){ int i, j;

2012-09-16 21:54:42 1285

原创 旋转数组中查找某数

题目:一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5} 是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。/*旋转数组中进行二分查找要点:首先判断arr[left] < arr[right],如果是,则进行传统的二分查找如果不是,则判断arr[left] < arr[mid],如果是,则说明转折点在右侧如果不是,则说明转折点在左侧*/

2012-09-16 20:55:59 1226

转载 怎样花两月时间去应聘互联网公司

找工作也快两月了,感受颇多,最近看了一篇《怎样花两年时间去面试一个人》的博客,很有感触,将自己的想法写出来。       在找工作的两月中,自己从四大门户:新浪、搜狐、网易、腾讯到业界领先的百度,搜狗、淘宝以及行业巨头的微软;从几个人创业的阿甘网到几十个人美丽说、友录、微游半创业公司;从做浏览器的opera到石油设备的哈里伯顿、斯伦贝谢到咨询的ThoughtWorks再到做游戏的金山网游,如果

2011-11-24 14:41:07 505

原创 linux下用c++产生线程

//在c++编译环境下编译pthread_create会报错,出现问题的主要原因就是pthread_create的第3个参数——void*(void*)这个回调函数。//下面给出解决方法://将要调用的函数改成静态函数或全局函数:#include using namespace std;#include void *Bar(void *arg){ cout << __PRETTY

2011-11-24 10:38:56 481

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除