C/C++/STL
文章平均质量分 51
Richr_Wong
这个作者很懒,什么都没留下…
展开
-
【总结】字符串匹配: KMP 和 拓展KMP
比起ac自动机,kmp就一个next数组,理解了如何初始化next后就可以搞一些模板题了,下面是还不错的学习资料,清晰易懂,自己用的模板也来自它: http://chaoswork.com/blog/2011/06/14/kmp%E7%AE%97%E6%B3%95%E5%B0%8F%E7%BB%93/kmp模板转载 2014-10-31 08:08:02 · 500 阅读 · 0 评论 -
UVA230-图书馆管理
题意本身还是比较好理解的,要注意的地方有1.按照作者名字的字典序排序2.归还的时候是无序的利用set容器的性质做会好做一些比较坑就是数据的输入,多练习一下就好了。#include#include#include#include#includeusing namespace std;const int maxx=1010;typedef struct Node{原创 2015-12-06 10:29:32 · 1324 阅读 · 1 评论 -
UVA1595-对称轴
这道题有个坑,即有可能存在x坐标相同,y坐标不同的点。解法很简单,记录每个点,排序,遍历,看看是不是每个点关于对称轴的对称点是否存在。#include #include #include #include #include #include #include using namespace std;typedef pair point;int main(){原创 2015-12-06 10:25:22 · 964 阅读 · 0 评论 -
UVA12100-打印队列
题目大意:现在有一个打印队列,里面的任务是无序的,每个任务有一个权值,打印机会从第一个任务开始执行,如果当前任务的权值是队列中最大的,那么就打印,否则就将该任务放置到队末。每次打印消耗一定的时间,求该序列中的任务分别在什么时候被打印。这题开一个优先队列一个普通队列,队列里的元素出队,如果出队元素和优先队列队首元素相同就执行“打印”操作,否则就扔到队尾。#include #includ原创 2015-12-05 23:26:09 · 1847 阅读 · 0 评论 -
UVA1594-Ducci 队列
大意:给n组数据,每组数据是由m个整数组成的数列,然后每相邻两项相减,取绝对值构成一个新数列(最后一项和第一项相减)如果该新数列全部为0,则输出ZERO如果在这个过程中出现了循环,那就输出LOOP给定的数列一定会在1000次以内判断是循环或者为0vector容器+暴力#include#include#include#include#include#includeus原创 2015-12-03 13:51:42 · 1344 阅读 · 0 评论 -
UVA10763-交换生
题目大意:交换生,顾名思义,必须是有来有回才算交换。现在有若干个学生要申请交换生,判断他们的能不能全部都找到交换对象。即:判断有向图里每个结点的入度和出度为零。#include #include #include #include #include using namespace std;int Case,x,y,opt[1000][1000];bool solve(){原创 2015-12-03 13:59:54 · 464 阅读 · 0 评论 -
UVA10935-卡片游戏
题目大意:给定n张卡片,按照1-n的顺序编号,然后拿出一张卡片扔掉,拿出一张卡片放到最后,重复该操作直到只剩1张卡片。求扔掉的卡片序列和最后剩的卡片的编号。std::queue+模拟#include #include using namespace std;queueq;int main(){ int n; while(cin>>n&&n!=0) {原创 2015-12-03 13:54:48 · 1021 阅读 · 0 评论 -
UVA1593
补题计划——利用本学期和寒假补完白书上的例题和课后题,寒假回来专心刷训练指南。题目大意:输入若干单词,将他们对齐后输出,并且要求每一行末尾不得有空格。#include #include #include #include #include using namespace std;int main(){ string str[1000][100];原创 2015-12-03 13:46:31 · 606 阅读 · 0 评论 -
UVA10391-复合词
大意:按照字典序输入一个词典,输出其中所有的复合词。复合词是指可以由字典中任意两个不同的单词组合而成的词,比如new+born=newborn如果每个词都和另外的词生成一个新词,然后查询,这种算法是O(n^2)的,因为n如果将每个词拆分,然后和词典中的词匹配,此时复杂度是O(m*n),m是指单词的长度。显然单词长度不会很大,所以该复杂度可以接受。std::map#include原创 2015-12-03 14:04:49 · 1313 阅读 · 0 评论 -
学习笔记(三)——STL
上一章说到了的使用,下面我们先来介绍一个的姊妹容器——"priority_queue" priority_queue优先队列容器和queue一样,只能从队列尾部插入元素,从队列首部删除元素。但它有一个特性,就是队列中最大元素总是位于队首,所以出队时,并非按照FIFO的顺序进行,而是将队列中最大的元素弹出。这点类似于给队列中元素进行了由大到小的顺序排序。元素的比较规则默认为按元原创 2015-04-23 09:10:43 · 516 阅读 · 0 评论 -
学习笔记(二)——STL
//上一章讲到了映照容器,提到了一个利用map分离各位数字的用法,下面上例程:#include#include#includeusing namespace std;int main(){ //定义map对象,当前没有任何元素 map m; //赋值:字符映射数字 m['0']=0; m['1']=1; m['2']=2;原创 2015-04-22 19:35:34 · 543 阅读 · 0 评论 -
学习笔记(一)——STL
STL指的是C++的标准模板库(Standard Template Library),这玩意是把双刃剑,它集易用与复杂性于一身。以下是算法竞赛中几个常用模板的使用方法。1.这个头文件里集成了一些特定的算法函数,常用的有sort();find();swap();max/min();还有取容器中的最大最小值min_element(),max_element()。例程如下:sort(原创 2015-04-22 15:49:12 · 532 阅读 · 0 评论 -
scanf(),printf()和gets(),puts()在输入输出字符串时的区别
1.scanf("%s",str)和gets(str)scanf("%s",str)和gets(str)均可用于输入字符串到字符数组变量str,但scanf("%s",str)匹配连续的一串非空白字符,遇到空格、tab或回车即结束,字符串前的空白字符没有存入str,只表示输入还未开始(感谢garbageMan的指正),而gets(str)读到回车处结束,所以当句子中单词由空格分开时要用后者转载 2014-10-30 06:12:51 · 887 阅读 · 0 评论 -
最常用标准库函数
最常用标准库函数标准头文件包括: 标准定义()文件里包含了标准库的一些常用定义,无论我们包含哪个标准头文件,都会被自动包含进来。这个文件里定义: 类型size_t(sizeof运算转载 2014-10-31 08:05:46 · 665 阅读 · 0 评论 -
UVA12504-更新字典
题意:大概是给你两个字典,old和new,让你比对两个字典的不同。如果某个元素,在old中没有在new中有,那么这个元素是“+”反之是"-",如果该元素old和new中都有但是value不同,那么这个元素是"*"。这里采取了一种易读的写法,三个迭代器分别遍历三次,其实只要两个迭代器同时遍历就可以做到现在的效果。输入用流输入就好,数据存储使用容器。//UVA不return 0原创 2015-12-06 10:35:39 · 623 阅读 · 1 评论