- 博客(107)
- 资源 (4)
- 收藏
- 关注
转载 getopt和getopt_long函数
平时在写程序时常常需要对命令行参数进行处理,当命令行参数个数较多时,如果按照顺序一个一个定义参数含义很容易造成混乱,而且如果程序只按顺序处理参数的话,一些“可选参数”的功能将很难实现。在Linux中,我们可以使用getopt、getopt_long、getopt_long_only来对这个问题进行处理。[cpp] view plaincopy
2015-05-27 20:00:48
348
原创 hdu 1512 Monkey King 左偏树
有这么一群猴子,他们喜欢打架,要是两个猴子没打过就会开打,打完后自己的val值减半,然后他们就变成好基友,他们之前各自的好基友也变成了好基友,当两只猴子决斗时,并不一定是他们打,而是他们各自的好基友里面val值最大的出来打,如果他们本来就是好基友那么就不打了,output -1,否则output 打完后最大的val值:利用左偏树求解,读入数据时为每一个猴子建立一颗左偏树,当两个猴子打
2015-04-06 21:29:53
360
原创 左偏树
#define typec int // type of key valusing namespace std;const int na = -1;int swap(int &x,int &y){ int t = x; x = y; y = t;}struct node{ typec key; int l, r, f, dis
2015-04-06 19:00:25
341
原创 快速输入输出
当程序有大量的数据输入输出时,以下函数可以更加快速(针对整数--其他数据类型同理) char buffer[10];10 void print_d( int x )11 {12 if ( x == 0 )13 {14 putchar('0');15 }16 else17 {18 int
2015-04-05 18:39:37
451
原创 shell编程-----引用和替换
-----------------------常用引用符号--------------------双引号--------除美元符号($),单引号( ' ),反引号( ` ),反斜线( \ )外,其他字符保持字面意义-------------------------------------------------------------单引号--------所有的字符都将保持字面意义
2015-04-03 18:40:27
377
原创 shell编程---变量的定义
为了更好地控制变量的相关属性,bash 提供了一个名称为declare的命令来声明变量,该命令的基本语法如下:declare attribute variable其中,attribute表示变量的属性,常用的属性有如下所述。 -p:显示所有变量的值。 -i:将变量定义为整数。在之后就可以直接对表达式求值,结果只能是整数。如果求值失败或者不是整数,就设置为0。 -r
2015-04-03 17:24:47
458
原创 Shell编程之多行注释
在Shell中可以使用#对某一行进行注释,但有时候需要对多行进行注释这时候可以使用“:”配合here document::...注释内容BLOCK#----------------------------example.sh----------------------------#! /bin/sh:本脚本的作用是输出一行字符串作者:zhuzh
2015-04-03 16:18:45
430
原创 KMP算法
//next 数组求法 void GetNextval(char* p, int next[]) { int pLen = strlen(p); next[0] = -1; int k = -1; int j = 0; while (j { //p[k]表示前缀,p[j]表示后缀
2015-04-02 00:42:48
266
转载 成为IT精英,我奋斗7年(转)
转载处:http://liangwang985.blog.163.com/blog/static/119549233201191394259491/这些日子 我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没 有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助。 一
2015-03-16 17:34:09
293
原创 Linux学习笔记之---基于UDP的通信程序设计
13:基于UDP的通信程序设计 13.1 UDP数据的收发 1.数据发送函数sendto #include #include int sendto(int s,const void *msg,int len,int flags,
2015-03-10 19:52:12
475
原创 Linux学习笔记之---基于TCP的通信程序的设计
12:基于TCP的通信程序的设计 12.1 套接字的类型 1.流套接字SOCK_STREAM 是双向的,可靠的,顺序的,不重复的,面向连接的,tcp协议 2.数据报套接字SOCK_DGRAM 无连接,独立的,无序的,不保证可靠性,udp协议
2015-03-10 19:50:17
353
原创 Linux学习笔记之---消息队列
9:消息队列 9.1 ipc结构 struct ipc_perm { uid_t uid; gid_t gid; uid_t cuid; gid_t cgid;
2015-03-10 19:49:11
345
原创 Linux学习笔记之---信号量
10:信号量 10.1 信号量的存储结构 struct semid_ds { struct ipc_permsem_perm; 访问权限 struct sem *base; 信号量集合中信号量指针
2015-03-10 19:48:33
311
原创 Linux学习笔记之---管道
8:管道 8.1 无名管道 无名管道通常直接称之为管道,它占用两个文件描述符,不能被非血缘关系 的进程共享,一般应用在父子进程中 8.2 无名管道的建立 #include int pipe (in
2015-03-10 19:48:29
295
原创 Linux学习笔记之---进程
6:进程控制 6.1: 读取进程ID号 #include #include pid_t getpid(); 当前进程ID; pid_t getpgrp(); 当前进程组ID; pid_t getppid();
2015-03-10 19:46:47
289
原创 Linux学习笔记之---时钟和信号
7:时钟和信号 7.1 UNIX中存在三种格式的时间: 1.系统时间: 1970,1,1到现在的秒数(time_t) 2.高分辨率时间:精确到微妙的时间(timeval结构体) 3.日历时间:“年,月,日,时,分,秒“类型(tm结构) 7.2 系统时间
2015-03-10 19:46:26
453
原创 Linux学习笔记之---目录文件编程库
4:目录文件编程库 4.1: 读取工作目录 #include char *getcwd(char *buf, size_t size); char *getwd(char *pathname); getcwd获取当前工作目录的绝对路径存入buf失败返回NULL
2015-03-10 19:45:58
270
原创 Linux学习笔记之--低级(底层)文件库编程
3:低级文件编程库(底层文件编程库) 3.1: 文件的打开与创建 #include int open(const char *filename, int oflag, .../*[mode_t mode]*/) 本函数共有三个参数:要打开或创建文件的路径名;oflag指定打开或创建
2015-03-10 19:44:00
511
原创 Linux学习笔记之---标准文件库编程
2:标准文件编程库 2.1: 创建,打开,关闭,删除函数族 #include FILE *fopen (const char *filename, cnost char *type) FILE *freopen (const char *filename, const char*type, FILE *
2015-03-10 19:42:27
308
原创 Linux学习笔记之---文件
1:文件系统结构 1.1: 获取文件属性函数: #include #include int stat (const char *path, struct stat *buf); int fstat (int fildes, struct stat *buf); int ls
2015-03-10 19:39:06
256
转载 LINUX学习路线
写一下最近个人的linux学习路线,学完后再好好参考其他人的:1.《Linux程序设计》- 靠它来入门,然后装一个linux系统,学习shell(bash)和linux C,把基础打牢;2. 《深入理解Linux内核》和《Linux内核设计与实现》:后者我已经粗粗看过一遍,值得细看,前者必须尽快看完;3. 《Linux设备驱动设计》:必买必看,实用性强;4.《Advanced Pr
2015-02-06 22:35:22
414
转载 C++学习路线及书籍
很多人也许像我一样都想找一份学习的辟邪剑谱,转一个别人的帖子,希望对能够给用的。欲练此功,不必挥刀自宫的,呵呵。 这句说的好:“最后,编程语言并非计算机科学技术的全部,尤其对于在校的学生来说,打好基础、开阔视野都是非常重要的。”一)语言入门:《C++ Primer》最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中)适合有丰富C经验,缺乏C++
2015-02-06 22:33:01
356
原创 CReBar的使用
需求:1.在工具栏中添加出按钮以外的控件;2.当工具栏的宽度小于按钮宽度总和时,隐藏部分按钮,并在工具栏的最右侧显示向右的箭头,当点击这个箭头时,弹出一个菜单,菜单由没有显示出来的按钮组成;3.工具栏按钮显示tip。 实现:MFC提供了一个类CReBar,这是一个容器类,可以向这个类中添加工具栏,编辑框,下拉列表等等。1.//创建工具栏对象CTool
2014-11-11 22:47:24
1165
原创 窗口样式
1 窗口样式WS_POPUP弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)WS_CHILDWINDOW子窗口(不能与WS_POPUP合用)WS_MINIMIZE创建窗口拥有最小化按钮WS_MINIMIZEBOX创建窗口拥有最小化按钮,须同时指定WS_SYST
2014-11-10 21:13:55
356
转载 MFC之CCommandLineInfo
CCommandLineInfo类CObject└CCommandLineInfo类CCommandLineInfo用于分析启动应用时的命令行参数。MFC应用一般都会在它的应用对象中使用函数InitInstance创建这个类的一个本地实例。然后把该对象传给CWinApp::ParseCommandLine,ParseCommandLine又重
2014-11-06 22:05:48
441
转载 RMQ算法
1. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。2.RMQ算法对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大
2014-10-22 18:08:25
263
原创 最近公共祖先LCA:Tarjan算法
1,并查集+dfs 对整个树进行深度优先遍历,并在遍历的过程中不断地把一些目前可能查询到的并且结果相同的节点用并查集合并. 2,分类,使每个结点都落到某个类中,到时候只要执行集合查询,就可以知道结点的LCA了。 对于一个结点u.类别有: 以u为根的子树、除类一以外的以f(u)为根的子树、除前两类以外的以f(f(u))为根的子树、除前三类以外的以f(f(f(u)))为根的子树……
2014-10-22 12:55:53
424
原创 LB_ 系列 Windows系统定义的消息
LB_ADDSTRING : 添加字符串LB_INSERTSTRING: 插入一个条目数据或字符串。不像LB_ADDSTRING 消息,该消息不会激活LBS_SORT样式来对条目进行排序LB_DELETESTRING: 删除列表框中的一个字符串LB_SELITEMRANGEEX:在多选状态下的列表框中选择一个或多个连续的条目LB_RESET
2014-10-05 16:17:57
2898
转载 acm & java
用Java来处理高精度问题,相信对很多ACMer来说都是一件很happy的事,简单易懂。用Java刷了一些题,感觉Java还不错,在处理高精度和进制转换中,调用库函数的来处理。下面是写的一些Java中一些基本的函数的及其……头文件:import java.io.*; import java.util.*; import java.math.*;读入: Scanner cin = S
2014-10-04 12:55:47
297
原创 EDIT消息
业精于勤而荒于嬉,行成于思而毁于随。编辑框(Edit)控件实际上是一个简易的文本编辑器,用户可以在编辑框中输入可添加或插入文本。还有复制、粘贴、剪切、删除等编辑功能。 应用程序用CreateWindowEx创建编辑框控件时,可根据控件的用途在下表中选择部份常数来设定其风格属性(style)。 常数说明ES_MULTILINE 多行文本,指定编辑控件可以多行文本编辑,用户每按一次Ent
2014-10-04 11:05:43
420
转载 stl__map
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有
2014-10-02 08:31:28
261
原创 素数筛法
genPrime和genPrime2是筛法求素数的两种实现,其实是一个思路,表示方法不同而已。具体思路在注释中已经含有。#include #include #includeusing namespace std; const int MAXV = 100; //素数表范围 bool flag[MAXV+1]; //标志一个数是否为素数 int prime[
2014-10-01 22:34:24
305
原创 hdu 4499 dfs
给你一个棋盘,最大是5*5的,问你最多可以放多少个炮,炮和炮之间不可以相互攻击,这块只的是只能走一步,不存在两个炮中间三个棋子的情况..
2014-09-30 18:32:47
342
原创 hdu 4597 记忆化搜索
有两堆牌,每张牌上有一个分值,每次取只能取其中一堆的头部或者尾部的牌,两个人轮流抽牌,采用最优策略,问先手最多能得到多少分。题解:记忆化搜索。as和ae表示一堆的头和尾,bs和be表示另一堆的头和尾,f[as][ae][bs][be]表示当前状态下所能得到的最多分数。则f[as][ae][bs][be]等于当前所有分数和 - 下一状态的最多分数,按每种状态记忆化搜索下即可。
2014-09-28 22:15:44
346
原创 poj 2288 状态压缩dp
【题目大意】求汉密尔顿的一道变形问题,中间每个点有权值,关于最后得分的描述如下Suppose there are n islands. The value of aHamilton path C1C2...Cn is calculated as the sum of three parts. Let Vi be thevalue for the island Ci. As the firs
2014-09-27 18:44:47
322
原创 zoj 3471 状态压缩dp
题目大意】不超过10种气体,两两之间相互碰撞可以产生一定的能量,如a碰b,那么b气体就消失,自身不能碰自身,问最后所能得到的最大能量。【题目解析】用10位二进制表示气体是否存在,0表示存在,1表示不存在,S(上一个状态)中的两种气体碰撞并且有一种消失,可以得到newS的状态(状态转移)【状态表示】dp[state] 状态为state时的最大能量【转移方程】dp[state]
2014-09-21 10:51:33
327
原创 poj 3311 状态压缩dp
#include #include #include #include #include #include #include #include #define inf 11111111using namespace std;int n,ans;int dp[13][113];int dis[13][13];int main(){ int i,j,k,l,m;
2014-09-19 10:00:31
350
Linux内核完全剖析
2017-12-31
深入理解linux内核,第三版中文版
2017-12-31
Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理.杨力祥(第2版)
2017-12-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人