自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冰上游鱼

一个将要成为“苦逼的”程序猿的学生,在此写下历程

  • 博客(51)
  • 收藏
  • 关注

原创 poj2531

第一次用这种所谓的随机化算法。   随机化算法,就是靠大量的随机产生可能的组合,然后找出最优结果。这与用穷举产生每一种可能的组合,然后找最优结果没什么本质区别。   随机化算法的弊端很明显,随机次数太少的话找不到最优解,随机次数太多的话时间又不划算。而且不保证能找到最优解。 对于精确度要求不高的实际问题倒是有一些应用价值。   对于这道题,我把随机次数分别设为2000,20000,20

2011-11-30 20:09:30 569

原创 IT好书好文章

最近读了一些好书,好文章。在此记录一下。  《编程之美》。这本书里讲了很多看起来很难的,但是经过仔细分析又能写出来的程序。读这本书需要比较深的算法和编程功底。里面的例子个个都很经典。 暂时处于“啃起来很难的状态”,不过还是打算毕业之前认真读两遍。  《编程珠玑》。这本书讲了作者亲身经历的一些编程问题,通过这些问题,来讲述编程的时候具体应该怎么一步步来做,每一步应该注意什么。读这本书不仅

2011-11-27 23:51:39 613

原创 poj3233

令B={ A A}        {O E}那么B^k={A    A+A^2+A^3...A^K}               {O    E}代码:#includeconst int NUM=60;int n,k,m;struct Matrix{ int data[NUM][NUM]; Matrix operator =(Matrix a) { f

2011-11-27 12:58:31 1134 3

原创 poj3070Fibonacci

第一时间想到把n二进制拆分。0ms通过的代码: #includestruct Matrix22{ int d11; int d12; int d21; int d22; Matrix22 operator =(Matrix22 a) { d11=a.d11; d12=a.d12; d21=a.d21; d22=a.d22; } Matrix2

2011-11-26 15:04:17 389

原创 poj1837

Dynamic programing的本质是什么? 状态的转换。#include#include#includeusing namespace std;const int NUM=16000;int dp[21][NUM];int C[21];int G[21];int main(){ freopen("input.txt","r",stdin); int c,g; w

2011-11-24 23:10:30 392

原创 爬虫weblech的使用

weblech下载修改配置文件Spider.propertiessaveRootDirectory = c:/weblech/sistes 设置文件的存放路径,默认为当前文件夹mailtoLogFile = mailto.txt 设置邮件链接(mailto links)的存放文件refreshHTMLs = truerefreshImages = falserefr

2011-11-24 01:01:21 4959 9

原创 unbutu下安装和配置tomcat并更改默认网站路径

tomcat下载:sudo apt-get install tomcat6 或者从apache官网下载tomcat官网下载tomcat更改默认网站路径先转到目录:cd /var/lib/tomcat6/conf打开文件server.xml并修改:sudo vim iserver.xml然后在和里面添加语句privileged="true" a

2011-11-24 00:45:26 1089

原创 poj1276 cash machine

这道题是一个多重背包问题。 以前只是用二维数组,带记忆的递归做过01背包问题,做这个多重背包问题很费劲。 要想明白,一维数组如何能记录最优解,要想明白如何把多重背包问题转化为01问题。直接把不同个数的同一种物品看作一种物品的方法,会使得物品太多,解的效率很低。 网上有很多效率高的方法,一种是把多重背包,按二进制数分成不同的物品,从而减少物品个数。也就是把n个相同的物品,转换为log

2011-11-23 11:59:13 539

转载 ubuntu下25个常用的快捷键

1. Win+E - 表现全部桌面,利便的左右选择。2. Alt+Ctrl+Left/Right Arrow -切换桌面3. Alt+Ctrl+Shift+Left/Right Arrow - 移动当前窗口到其他桌面4. Alt + Shift+ Up Arrow - 以很酷的行动表现当前窗口5. Alt+F9/F10 - 最小化/最大化当前窗口6. Alt+F5 -不最大化当

2011-11-22 19:17:55 510

原创 poj1804

这道题看到第一眼,我想到的是很复杂的类似与求求九宫格的算法。可是想了一会发现每次交换只能减少一个逆序,而且必定能减少一个逆序。  问题就一下子转换为求逆序个数了。想明白这个,代码就很容易了。 poj1804 代码:#include#includeusing namespace std;const int NUM=1005;int data[NUM];int main()

2011-11-22 11:30:06 735

原创 读《编程珠玑》笔记

<!--@page {margin:2cm}p {margin-bottom:0.21cm}--> 《编程珠玑》是一本很好的,经典的程序设计书。这两天开始读,有种“相见恨晚“的感觉。书中通过讲述作者自己的亲身体会来说明程序设计的艺术。很有感染力。   第一章   讲述了一个电话号码排序的故事。强调化蘩为简的重要性。很多问题,咋一看挺难的,如果仔细分析转化

2011-11-22 11:25:19 492

原创 poj1113

这道题是正宗的凸包问题。 依然用Graham Scan算法。只是这个最短距离并不是凸包的周长,而是凸包的周长加上各段的弧长。弧长怎么求呢? 自认为数学学地好的我,上来就自做聪明地根据叉乘中得到的sin(theta)值求theta,然后theta*L,然后再相加。显地很牛逼。提交好几次都不过,后来看别人的代码,人家直接在最后加一个2*PI*L. 各个theta的和是PI啊! poj

2011-11-20 19:56:15 395

原创 poj2187 凸包问题

Pseudo-Code: Graham Scan Algorithm   Input: a set of pointsS = {P = (P.x,P.y)}    Select the rightmost lowest point P0 in S.    Sort S angularly about P0 as a center.

2011-11-20 17:12:59 1221

原创 poj1523

#include#include#includeusing namespace std;const int gray=1;const int white=0;const int black=2;const int v_num=1000;const int start=0;int graph[v_num][v_num];int color[v_num];int Time;in

2011-11-19 22:50:42 704

转载 c++普通程序员/文艺程序员/二逼程序员

普通程序员void swap(int &a,int &b){ int temp; temp=a; a=b; b=temp;}文艺程序员void swap(int &a,int &b){ a=a^b; b=a^b; a=a^b;}2B程序员void swap(int a,int b){ int temp;

2011-11-19 19:58:41 722

原创 求连通图的割点

#include#includeusing namespace std;const int gray=1;const int white=0;const int black=2;const int v_num=10;const int start=0;int graph[v_num][v_num];int color[v_num];int Time;int discoverT

2011-11-19 15:26:10 491

原创 poj1251

这道题的题意太明显了,求最小生成树。先面关于图的数字说明,这个图最适合用kruscal来求最小生成树。poj 1251 Jungle Roads 代码:#include#include#include#includeusing namespace std;int parent[26];int n;//vertex numint edge_num;struct Edge{

2011-11-18 19:10:36 1584

转载 C++版 失足程序员

//逆序输出一个字符串//失足程序员版#includeusing namespace std;const char str[]="\n!dlrow olleh";templatestruct Printer{ void operator()() { cout<<*(str+N); }};template class C,int N>struct Rev{ R

2011-11-17 00:41:50 512

原创 poj3487 稳定婚姻问题

稳定婚姻问题,虽然简单,但是挺有意思的。poj3487中要注意,这道题中的字母并不是一定要从a开始连续的,注意哦。#include#include#include#includeusing namespace std;char male[26];char female[26];int n;int T;int maleprefer[26][26];int femalepr

2011-11-16 00:49:05 1963

原创 poj2488

今天不不知道中了什么邪了,这道曾经写过的马步图问题竟然,用树的深度优先遍历去做(用栈结构+回溯),花了半天也没写对。在纸上写,感觉想明白了就在电脑上敲,敲完总也运行不出想要的结果。整地头晕脑胀地,决定先放着,换一种方法。用递归实现。(也很周折,有个字母敲错了,提交了好几次,后来才发现)。啊啊啊啊,哥要疯了!好郁闷啊。等哥那天状态好了,一定写个启发式搜索的马步图出来。啊啊啊啊,哥要疯

2011-11-13 21:36:09 1362 1

原创 poj1611并查集

这道题用并查集效率很高。#include#include#includeusing namespace std;int n,m;int students[30000];int find(int f){ int p=f; while(p!=0&&students[p]>=0) p=students[p]; while(p!=0&&students[f]>=0) { in

2011-11-12 22:36:37 442

原创 poj2362

这道题和1011十分类似。只要把所有木棒分为4份即可。#include#include#include#includeusing namespace std;int n;const int NUM=20;bool visited[NUM];int stick[NUM];int des_len;int cmp(const void* a,const void *b){

2011-11-12 20:46:22 772

原创 poj1011

这道题以前做过,没做出来。今儿参考别人的做了,感觉这种“动态标记”(自己给这个方法起的名字)的方法挺好的。#include#include#include#includeusing namespace std;int n;const int NUM=64;bool visited[NUM];int stick[NUM];int des_len;int cmp(const v

2011-11-12 20:34:53 333

转载 关于面试

1 面试,存在运气成分面试者,是无法选择面试官的。而决定面试者面试通过与否的几个重要因素包括:面试官的技术倾向、面试官的性格秉性、面试官的表达习惯、面试官的精神状态、面试官的细节侧重等等。如果面试者和面试官在这几个方面匹配度高,那面试成功的几率就大。强调这一点,是想让面试者正视面试这件事,两三次的失败,可能真的只是运气问题。2 面试,切忌“精通技术”作为技术面试官,在技术上一定是有一些

2011-11-12 00:57:57 645

原创 poj3080

这道题如果把测试数据做得强大的话,估计很难有人做好。但是数据比较小,蛮力法即可解决。郁闷的是,敲的时候忽略了一个“=”号,白白浪费了几次submit. poj3080代码:#include#include#includeusing namespace std;#define NotFound 4294967295string data[10];int m;//const

2011-11-10 21:21:03 444

原创 字符串模式匹配(所谓的kmp)算法

#include#include#include#include#include#includeusing namespace std;inline unsigned __int64 getclock(){ __asm { rdtsc; }}const char Min='a';const int characters=26;

2011-11-10 19:45:34 392

原创 数组快速移位

//移位的时候,直接把一个元素放到它最终的位置上,但是要注意元素的下标是如何变换的。时间效率O(n),空间效率O(1).#include#includeusing namespace std;int gcd(int n,int k){ while(k) { int r=n%k; n=k; k=r; } return n;}int

2011-11-10 19:42:26 470

原创 n个元素中找前m个高效率算法

//本算法的思想是把n个元素分为sqrt(n)组,每次从n组中找出最小的。当n>>m时,效率在O(n)级别。#include#include#includeusing namespace std;templatevoid FindMin(E *&arr,int left,int right){ E temp=arr[left]; int index=left

2011-11-10 19:38:45 489

原创 ubuntu下jdk的配置

第一步:下载jdk-u71-linux-i586.tar.gz官网下载下载linux的合适版本。第二步:解压安装    1,sudo tar zxvf ./jdk-7-linux-i586.tar.gz  -C /usr/lib                  //解压到/use/lib文件夹下解压到这个文件夹下。第三步:修改环境变量    打开系统配置文

2011-11-09 22:43:45 369

原创 poj1019

#include#include#include#include#includeusing namespace std;const unsigned int MAX=2147483647;int Num=100000;int* len;unsigned int *sum;int input;void init(){ len[0]=0; sum[0]=0; char

2011-11-09 18:55:25 654

原创 poj1035

#include#include#includeusing namespace std;string dict[10000];string word;int n=0;void solve(){ for(int i=0;i<n;i++) { if(dict[i]==word) { cout<<word<<" is corre

2011-11-08 23:51:30 548

转载 vim加密

我想如果一个经常使用电脑,那么肯定也要在电脑里面记录一个比较隐私的资料,一般情况下我想没有人会对这些资料做加密处理吧。因为实在挺麻烦,不过有了 VIM ,一切就变得简单了。vim加密的三种方式使用命令行打开 文件的时候使用 vim -x 文件名 这样进入 vim后会自动要求你输入加密口令。在编辑的文件里面,按 :X 回车,然后输入口令,因为是 星号展示,所以需要重复输一下。在编辑的

2011-11-08 20:48:50 944

原创 avl树

#include#include#includeusing namespace std;templatestruct AVLNode{ int bf; //ÆœºâÒò×Ó balance factor AVLNode *leftchild; //leftchild AVLNode *rightchild; //rightchild E data;

2011-11-08 00:27:04 467

原创 poj1016

#include#include#include#include#includeusing namespace std;string change(string s){ string output=""; int len=s.length(); int count[10]={}; for(int i=0;i<len;i++) { count[s[i]-'0']++;

2011-11-08 00:17:40 798

原创 vim 比较两个文件

1. 使用vim的比较模式打开两个文件:vim -d file1 file2或vimdiff file1 file2 2. 如果已经打开了文件file1,再打开另一个文件file2进行比较::vert diffsplit file2如果没有用vert命令,diffsplit则会分上下两个窗口。3. 如果已经用split方式打开了两个文件file1,file2,又想比较两

2011-11-07 22:58:37 8584 1

原创 poj 3349

#include#include#include#include#includeusing namespace std;const int PRIME=999983;int clockwise[12];int countclockwise[12];class Node{ public: int arms[6]; Node *next; bool operato

2011-11-07 20:48:52 395

原创 poj 3253

这个题一开是自己的思路是把所有数字排序之后再分治(分为大小差值最小的两份)。  看了别人的解题报告之后,发现,这个题可以像哈夫曼那样自下向上去做。比用分治(自上向下)简单。  用的是G++编译器,注意不能用__int64而只能用long long int。#include#include#includeusing namespace std;int main(){

2011-11-07 20:45:23 361

转载 vim中的复制和粘贴

正在学习使用vim,但是无法使用ctrl+c/ctrl+v来跟系统其它应用之间做复制粘贴,非常不爽,搜了一下,发现很多人有写这个问题,试了几个,觉得这个最好,转帖过来收藏。原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry内容:     用vim这么久 了,始终也不知道怎么在vim中使用系统粘贴

2011-11-06 22:35:04 496

原创 poj1002

#include#include#include#include#includeusing namespace std;int map(char ch){ switch(ch) { case 'A': case 'B': case 'C': return 2; case 'D': case 'E': case 'F': return 3;

2011-11-06 22:32:59 419

原创 distance函数

今天写个程序,要用到一个字符串与另一个字符串之间的距离(两个字符串对应位的字母不同的个数),于是自己写了个distance函数:  int distance(const char *p1,const char *p2);  但是结果跟自己想的不一样,但是如果把distance函数改为 int distance(char *p1,char *p2);  就会出现想要的结果。

2011-11-06 18:42:59 8821

空空如也

空空如也

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

TA关注的人

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