知识点
文章平均质量分 69
chasexie(xiehonghao)
chasexie
展开
-
itoa函数及atoi函数
itoa函数及atoi函数C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子:# include # include void main (void){int num = 100;char str[25];itoa(num, str, 10);原创 2012-09-01 23:08:48 · 721 阅读 · 0 评论 -
C++ STL set和multiset的使用 hunst_xiehonghao 总结
C++ STL set和multiset的使用std::set s;那个s这个对象里面存贮的元素是从小到大排序的,(因为用std::less作为比较工具。)1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。 set和multiset的区别是:set插入的元素不原创 2012-09-04 15:54:53 · 20547 阅读 · 4 评论 -
Ctime函数 在ACM中的应用
咱们从一个题目开始进行导入http://acm.nbut.cn/Contest/view/id/38/problem/C.xhtml[C] Minary Fights with Time时间限制: 1000 ms 内存限制: 65535 K 问题描述Minary is busy now. As a result, she's fighting with time.To se原创 2013-04-08 13:00:09 · 951 阅读 · 0 评论 -
STL之deque函数详解
#include deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似 函数描述c.assign(beg,end)c.assign(n,elem)将[beg; end)区间中的数据赋值给c。将n个elem的拷贝赋值给c。c.at(idx)传回索引原创 2013-04-14 15:20:40 · 11606 阅读 · 0 评论 -
几种常见博弈问题
(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)原创 2012-09-01 23:24:06 · 1133 阅读 · 0 评论 -
康托展开 用于求一个排列的序号或序号对应的排列或对排列的hash
以下参考http://blog.csdn.net/morgan_xww/article/details/6275460 康托展开:X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0!ai为整数,并且0其中ai表示比第i个数小的数字的个数(并且在前面没有出现过) 康托展开中排列中的数字没有重复的应用实例:例如,原创 2013-05-28 11:32:21 · 2380 阅读 · 2 评论 -
LCA 最近公共祖先 tarjan离线 总结 结合3个例题
在网上找了一些对tarjan算法解释较好的文章 并加入了自己的理解 LCA(Least Common Ancestor),顾名思义,是指在一棵树中,距离两个点最近的两者的公共节点。也就是说,在两个点通往根的道路上,肯定会有公共的节点,我们就是要求找到公共的节点中,深度尽量深的点。还可以表示成另一种说法,就是如果把树看成是一个图,这找到这两个点中的最短距离。 LCA原创 2013-06-18 14:18:29 · 12194 阅读 · 0 评论 -
划分树详解 结合例题hdu4251
参考博客: http://www.notonlysuccess.com/index.php/divide-tree/#more-142 http://blog.csdn.net/fp_hzq/article/details/7993364 http://www.cnblogs.com/pony1993/archive/2012/07/17/2594544.html原创 2012-10-12 12:59:23 · 1203 阅读 · 0 评论 -
最大堆 最小堆 poj2442 STL堆的使用
最大堆最小堆代码实现http://blog.csdn.net/xiaoxiaoxuewen/article/details/7570621最大堆 最小堆原理图http://www.cnblogs.com/wu8685/archive/2010/12/30/1922218.htmlSTL 的堆操作http://hi.baidu.com/solofancy/item/14acd原创 2013-06-25 20:28:53 · 6088 阅读 · 0 评论 -
状态压缩 周伟论文+代码+例题
在n*n(n≤20)的方格棋盘上放置n 个车(可以攻击所在行、列),求使它们不能互相攻击的方案总数。仅供和我一样的菜鸟们参考#include #include using namespace std;__int64 a[1100000];int main(){ __int64 n; while (cin >> n){ memset(a, 0原创 2013-08-01 13:07:00 · 3181 阅读 · 8 评论 -
二分匹配 从陌生到认知
参考 http://blog.csdn.net/q3498233/article/details/5786225二分图:二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联的两个顶点恰好一个属于集合X,另一个属于集合Y。二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。最大匹配:图中包含边数最多的匹配称为图的原创 2013-03-27 09:29:15 · 1782 阅读 · 0 评论 -
c++的一些默认函数
定义一个空的C++类,例如class Empty{}一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,一般编译过去就相当于class Empty{public:Empty(); // 缺省构造函数Empty( const Empty& ); // 拷贝构造函数~Empty(); //原创 2014-04-05 19:40:27 · 829 阅读 · 0 评论 -
各种同步机制的分析比较---摘抄 留给本人自己看
管程一、信号量的缺点信号量的使用一定要小心,如下图中解决生产者-消费者问题的程序:如果在producer的执行函数中,将empty与mutex的down操作互换,如果此时mutex为0,将首先对mutex进行down操作,进程陷入阻塞,而同时,当consumer的执行函数执行到down(&mutex)的时候,由于mutex为0,因此,co转载 2014-04-21 21:14:25 · 1028 阅读 · 0 评论 -
map函数剖析
一下内容为网上复制 链接地址http://blog.sina.com.cn/s/blog_7ce08df70100unw7.html本人只是用颜色把比较重要的地方用颜色标记了一下STL中map用法详解 说明:如果你具备一定的C++ template知识,即使你没有接触过STL,这个文章你也应该可能较轻易的看懂。本人水平有限,不当之处,望大家辅正。一.Map概述原创 2012-08-26 21:55:57 · 810 阅读 · 0 评论 -
segment fault 段错误各种原因
一 造成segment fault,产生core dump的可能原因1.内存访问越界 a) 由于使用错误的下标,导致数组访问越界 b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符 c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函数,将目标字符串读/写爆。应该使用strncp原创 2012-11-25 16:34:45 · 1665 阅读 · 0 评论 -
卡特兰数总结
Catalan Number1:原理h(0)=1, h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,h(6)=132,h(7)=429,h(8)=1430,h(9)=4862,h(10)=16796,h(11)=58786,h(12)=208012,h(13)=742900,h(14)=2674440,h(15)=9694845················原创 2012-10-12 10:17:40 · 4330 阅读 · 0 评论 -
产生随机数
在《计算机常用算法》中有介绍随机数的生成算法三 如何产生设定范围内的随机数 由于rand产生的随机数从0到rand_max,而rand_max是一个很大的数,那么如何产生从X~Y的数呢? 从X到Y,有Y-X+1个数,所以要产生从X到Y的数,只需要这样写: k=rand()%(Y-X+1)+X; 这样,就可以产生你想要的任何范围内的随机数了。原创 2012-09-01 23:20:53 · 702 阅读 · 0 评论 -
不可打印字符
有些 ASCII 字符是不可打印的。例如退格、另起一行、警报等。C 语言提供了两种方法来表示这种不可打印字符。 第一种方法是使用 ASCII 编码。例如,ASCII 编码中,7 用于表示警报: char beep = 7; 第二种方法是使用特殊符号序列,也就是所谓的转义字符(escape sequences)。参见下表: 转义字符原创 2012-09-01 23:18:07 · 6826 阅读 · 0 评论 -
sqort用法总结 hnust_xiehonghao
/*#include //对int 型的数据进行从小到大排序#includeint haha(const void *a,const void *b) //a b 是void 空指针 可以指向任意类型数据 const是定义不变的数据 不改变的数据{return *(int *)a-*(int *)b;} // 现在a,b进行强制性转换 比较大小得出返回值main(){int a[100原创 2012-09-05 21:54:13 · 1766 阅读 · 0 评论 -
STL string 的各种功能剖析 以及char字符串与string串的互相转换
string的好处 :不用担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。为了在我们的程序中使用string类型,我们必须包含头文件 。如下: #include 1.声明一个C+原创 2012-08-28 11:03:21 · 6839 阅读 · 0 评论 -
vector 总结
第一部分使用入门vector可用于代替C中的数组,或者MFC中的CArray,从许多说明文档或者网上评论,一般一致认为应该多用vector,因为它的效率更高,而且具备很好的异常安全性。而且vector是STL推荐使用的默认容器,除非你知道你有特殊需要,使用vector不能满足你的需求,例如需要容器在head和tail高效的插入和删除,或者在任何位置高效的删除和插入操作,那么你可能使用deque原创 2012-09-06 22:14:16 · 913 阅读 · 0 评论 -
STL 通用算法
/*5.2用STL的通用算法count()来统计list中的元素个数*/#include #include using namespace std;int main (void){ list Scores; Scores.push_back(100); Scores.push_back(80); Scores.push_back(45);原创 2012-09-07 11:19:39 · 1097 阅读 · 0 评论 -
STL list 总结
作者:maopighttp://www.cnblogs.com/qi09/archive/2011/01/21/1941065.htmlSTL中的list就是一双向链表,可高效地进行插入删除元素。现总结一下它的操作。文中所用到两个list对象c1,c2分别有元素c1(10,20,30) c2(40,50,60)。还有一个list::iterator citer用来指向c1或c2元素原创 2012-09-06 23:37:54 · 784 阅读 · 0 评论 -
map 对于char型字符串的处理 小探索
#include#include#include#includeusing namespace std;int main(){ char s[1000]; int n; while(scanf("%d",&n)!=EOF) { mapmp; map::iterator it; int i; for(i=1;i<=n;i++) {原创 2012-09-10 15:21:06 · 2414 阅读 · 0 评论 -
list 删除某个元素后 地址不释放其它值不会填充上来 这时候对应乱码
#include#includeusing namespace std;int main(){ int i,j,n; while(scanf("%d",&n)!=EOF) { int num; listlis; list::iterator it; for(i=0;i原创 2012-09-10 23:17:51 · 1365 阅读 · 0 评论 -
bitset 用法
参考地址:http://blog.csdn.net/phdhoss/article/details/42252211.bitset基本用法: #include #include using namespace std;int main (){ bitset mybits; cout "enter a binary number: ";原创 2012-09-16 22:12:12 · 1609 阅读 · 0 评论 -
排列组合——隔板法
排列组合——隔板法(2012-06-23 15:36)复制地址:http://blog.xdf.cn/article-28522.html插板法就是在n个元素间的(n-1)个空中插入 若干个(b)个板,可以把n个元素分成(b+1)组的方法。 应用插板法必须满足三个条件: (1) 这n个元素必须互不相异 (2) 所分成的每一组至少分得一个元素 (3) 分成的组别彼此相原创 2012-09-15 16:17:42 · 2421 阅读 · 0 评论 -
各种位操作
C语言是一种中级语言,能对计算机硬件直接操作,这就涉及到位的概念。一、位的概念 我们知道,在计算机中,一字节占8位(现在的某些电脑也有占16位的),这样表示的数的范围为0-255,也即00000000-11111111。位就是里面的0和1。 char c=100; 实际上c应该是01100100,正好是64H。其中高位在前,低位在后。原创 2012-09-15 23:33:54 · 772 阅读 · 0 评论