随笔分类 -  基本数据结构

NEUOJ 1117
摘要:View Code 1 //方法一:用数组模拟队列 2 #include <iostream> 3 #include<stdio.h> 4 #include<stdlib.h> 5 #include<string.h> 6 #include<algorithm> 7 using namespace std; 8 int value[1000010]; 9 int Qu[6000010];//单调队列 10 int head, tail;//队列的头和尾 11 void insertBig(int index)//单调减队列,维护最大值 阅读全文

posted @ 2011-12-05 12:46 lonelycatcher 阅读(515) 评论(0) 推荐(0)

XDU 1138 祯爷的苹果
摘要:View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<iostream> 5 #include<map> 6 using namespace std; 7 map<long long ,long long> apple; 8 int main(void) 9 {10 long long n,m,t;11 cin>>t;12 while(t--)13 {14 scanf("%lld %lld& 阅读全文

posted @ 2011-12-03 13:23 lonelycatcher 阅读(294) 评论(0) 推荐(0)

<bitset>的用法整理
摘要:构造函数bitset<n> b;b有n位,每位都为0.参数n可以为一个表达式.如bitset<5> b0;则"b0"为"00000";bitset<n> b(unsigned long u);b有n位,并用u赋值;如果u超过n位,则顶端被截除如:bitset<5>b0(5);则"b0"为"00101";bitset<n> b(string s);b是string对象s中含有的位串的副本string bitval ( "10011" ); 阅读全文

posted @ 2011-08-22 18:46 lonelycatcher 阅读(444) 评论(0) 推荐(0)

HDU 1022 stack 的应用
摘要:#include <iostream>#include<stack>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<string>using namespace std;int N;string come;string leave;int order[50];int main(){ setbuf(stdout,NULL); stack<char>s; while(cin>>N) { cin>>come; cin& 阅读全文

posted @ 2011-07-25 22:04 lonelycatcher 阅读(241) 评论(0) 推荐(0)

STL sort 和 qsort 的用法
摘要:STL 中 sort 函数用法简介 转自http://blog.csdn.net/rattles/article/details/5510919 做 ACM 题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的 O(n^2) 排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。 STL 里面有个 sort 函数,可以直接对数组排序,复杂度为 n*log2(n) 。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是 [a,b) 。简单来说,有一个数组 int a[10 阅读全文

posted @ 2011-07-23 09:37 lonelycatcher 阅读(712) 评论(0) 推荐(1)

hdu 1004
摘要:水题,用map爽过~#include <iostream>#include<string>#include<map>#include<cstdio>using namespace std;int N;int main(){ int i; map<string,int> ball; while(scanf("%d",&N)!=EOF) { if(!N)break; ball.clear(); string color,popularcolor; for(i=1;i<=N;i++) { cin>&g 阅读全文

posted @ 2011-07-16 10:19 lonelycatcher 阅读(576) 评论(0) 推荐(0)

STL map 的基本成员函数
摘要:来源:(http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html) - C++map的基本操作和使用_Live_新浪博客 Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1.map最基本的构造函数; map<string , int >mapstring; map<int ,string >mapint; map<sring, char>mapstring; map< char ,string>mapcha 阅读全文

posted @ 2011-07-16 09:40 lonelycatcher 阅读(15777) 评论(2) 推荐(0)

STL map的使用
摘要:Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述(本篇文章中不用ch 阅读全文

posted @ 2011-07-16 09:34 lonelycatcher 阅读(574) 评论(0) 推荐(1)

HDU 1280 第M大数 堆的应用
摘要:#include <iostream>#include<cstdlib>#include<cstdio>using namespace std;int N;int M;int sequence[3000];int order[3000];class Minheap{private: int* heap; int currentSize; int MaxHeapSize; void FilterDown(int start,int endOfheap) { int i=start; int j=2*i+1; int temp=heap[i]; while(j& 阅读全文

posted @ 2011-06-30 12:22 lonelycatcher 阅读(282) 评论(0) 推荐(0)

HDU Binary Tree Traversals
摘要:#include<stdio.h>#include<cstdlib>int N;int preorder[1010];int inorder[1010];int find(int root){ int i; for(i=1;i<=N;i++) { if(inorder[i]==root) { return i; } } return 0;}void postorder(int sp,int ep,int sm,int em){ if(sp>ep||sm>em)return ; int n=find(preorder[sp]); postorder(sp 阅读全文

posted @ 2011-06-22 11:47 lonelycatcher 阅读(236) 评论(0) 推荐(0)

位运算 之(2) 按位异或(xor)^ 操作
摘要:文章作者:ktyanny文章来源:ktyanny转载请注明,谢谢合作。 按位异或运算俗称:xor运算1、xor的基本知识我们来看看xor运算的机理:1001011001011----àaxor 1011010001110----àb------------------------- 0010001000101---àc看了上面的式子,体会到异或运算的原理了吧,就是:0和1异或0都不变,异或1则取反。很容易理解,如果b中的某位为1,那么a xor b 的作用是在a相应的位进行取反操作。用通俗易懂的语言来讲就是xor运算通常用于对二进制的特定一位进行取反操作。我们再看 阅读全文

posted @ 2011-05-22 22:46 lonelycatcher 阅读(977) 评论(0) 推荐(0)

位运算 之(1) 按位与(AND)& 操作
摘要:文章作者:ktyanny文章来源:ktyanny转载请注明,谢谢合作。 由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。按位与(Bitwise AND),运算符号为&a&b 的操作的结果:a、b中对应位同时为1,则对应结果位也为1、例如:10010001101000101011001111000& 111111100000000 --------------------------------------------- 10101100000000对10101100000000进行右移8位得到的是101011,这就得到了a的8~15位的掩码了。那 阅读全文

posted @ 2011-05-22 22:45 lonelycatcher 阅读(1022) 评论(0) 推荐(0)

C++中标准string类的用法
摘要:C++ String 的用法C++ string: 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>。如下:#include <string> //注意这里不是string.h string.h是C字符串 阅读全文

posted @ 2011-05-22 22:24 lonelycatcher 阅读(376) 评论(0) 推荐(0)

异或位运算
摘要:来自Lvsi‘s home 以前一直忽视了异或这些小运算,今天做到HDU的2095时才发现异或的功能,这里只讲它的一小部分; 异或时一种逻辑运算,它的真值表如下 1 ^ 1 == 0; 1 ^ 0 == 1; 0 ^ 1 == 1; 0 ^ 0 == 0; 异或实质上是将参与运算的两个数据,按对应的二进制逐位进行逻辑异或运算,只有当对应位的二进制数互斥时对应为的结果才为真; 下面介绍异或运算的几种性质: 1 交换律:a ^ b ^ c = a ^ c ^ b;(很多人忽视的性质,杭电2095就是利用这个性质做的,再小菜鸟的博客里面有 ); 2 结合律:a ^ b = b ^ a;(这个相信大家 阅读全文

posted @ 2011-05-22 22:23 lonelycatcher 阅读(1743) 评论(0) 推荐(0)

HDU 2095 find your present(异或位运算)
摘要:刚开始做这题时,感觉水题啊,于是直接开了个1000000大小的数组,结果无情的memory limit exceed ,上网查了查大牛们的代码,真是很NB,感觉自己还很弱,还有很长的路要走啊#include<stdio.h>int N;int main(){ while(scanf("%d",&N)) { if(N==0)break; int orignal=0; int num; while(N--) { scanf("%d",&num); orignal=orignal^num;//0与任何数异或都等于他本身 //任何数与 阅读全文

posted @ 2011-05-22 22:22 lonelycatcher 阅读(254) 评论(0) 推荐(0)

导航