
STL
ITCharge
高效率编程,慢节奏生活。
展开
-
UVA10474_Where is the Marble?【sort】【lower_bound】
题目大意:给你N个大理石,每块大理石上写了一个非负整数,将大理石从小到大排序,然后回答Q个问题。问整数x是否在大理石上写着。如果有就回答是第几个大理石上写着x。思路:用sort排序,用lower_bound得到数组中大于等于x的位置,看该数组下标上的数是否等于x。原创 2014-12-05 19:20:20 · 1421 阅读 · 0 评论 -
UVA122 Trees on the level【二叉树】【BFS】
题目大意:输入一颗二叉树,将它按从上到下、从左到右的顺序输出各个节点位置。思路:先根据输入的字符串将二叉树建立起来(注:可能出现不能建立的情况),若能成功建立,则用宽度优先搜索(BFS)的方法遍历所有节点,并在遍历的时候,把结果存下来,然后进行输出。注意:BFS需要用到队列。原创 2014-12-11 09:23:21 · 1615 阅读 · 0 评论 -
NYOJ93 汉诺塔(三)【栈】
题目大意:上边说的很明白了。思路:就是用三个栈进行模拟过程并判断就可以。原创 2014-12-13 14:45:30 · 1067 阅读 · 0 评论 -
UVA442 Matrix Chain Multiplication【stack】【栈】
题目大意:给你N个矩阵的规模,再给你矩阵链乘的表达书,输出乘法的次数。思路:利用栈来解表达式,遇到字母时,矩阵入栈,遇到右括号')'出栈并计算结果,再将结果入栈。原创 2014-12-11 09:02:25 · 1039 阅读 · 0 评论 -
POJ1363 Rails【stack】【栈】
题目大意:如上图所示,已知火车要从A入站,然后从C出站。火车进站的顺序为1~N,现在给你出站的顺序。问:能不能通过站台改变火车出站顺序来实现按所给顺序出站。思路:把站台看做是一个栈,按1~N的顺序遍历火车原先顺序,先入栈,如果栈顶的火车编号和所给出站顺序将要出站的编号一样。那么火车就出栈,直到栈里边所有满足出站顺序的火车都出站,否则就一直入栈。最后判断所有火车是否都出站了。若都出站,输出Yes,否则输出No。原创 2014-12-09 18:58:08 · 3244 阅读 · 0 评论 -
NYOJ35 表达式求值【栈】
题目大意:给你一个计算表达式,求出最终结果。思路:用两个栈来分别存数和操作符, 遇到'(',操作符入栈,遇到')',计算括号内的式子。遇到'+'、'-'、'*'、'/'就比较当前运算符与栈中运算符的优先级,大于等于于栈中优先级就计算,否则就入栈,留待下次计算。最后计算栈中剩下优先级低的相应式子原创 2014-12-13 12:10:51 · 1105 阅读 · 0 评论 -
HDU1285 确定比赛名次【拓扑排序】【优先队列】
思路:因为要满足字典序的拓扑排序,所以用了STL中的优先队列。priority_queue<int,vector<int>, greater<int> > Q;实现了权值小的优先级高,取出的时候保证序号是队列中最小的。其他的和一般的拓扑排序无区别。原创 2014-12-22 22:22:36 · 1153 阅读 · 0 评论 -
UVA130 HDU1628 Roman Roulette【vector】【约瑟夫问题】
题目大意:题目非常难理解。N个人排成一个圈,按顺时针从1到N编号。从1开始顺时针数k个人,第k个人出圈(被杀者),从出圈的下一个人开始再数k个人,第k个人(埋葬着)移到刚才出圈人(被杀者)的位置上。然后从刚才出圈人(即现在埋葬者站的位置上),从出圈者下一个人继续开始数k个人……,重复这个过程,直到只剩下一个人。例如当N=5,k=2时。刚开始为:1 2 3 4 5第一次从1开始数,2出圈,4到2的位置上。变为 1 4 3 5。第二次从3开始数,5出圈,4到5的位置上。变为 1 3 4。第三次从1原创 2014-12-08 23:24:34 · 1808 阅读 · 0 评论 -
POJ3750_小孩报数问题【约瑟夫环】【string】【list】
题目大意:题意很明确,就是约瑟夫环。不过从第W个位置开始计数1,数S个位置,然后出环,输出。思路:用STL里边的string存放小孩的名字。用list双向链表模拟约瑟夫环。注意:string里边clear();用来清除所有字符。list里push_back(i);用来将编号i放入listbegin();指向第一个元素的位置end();指向最后一个元素后边的位置list<int>::iterator it;迭代器用来指向报数编号。find(first,last,value);用来在区间[fi原创 2014-12-06 18:10:54 · 1398 阅读 · 0 评论 -
POJ2503 Babelfish【map】
题目大意:给你一本字典。字典上每一行为一个英语单词和一个其他国家单词。这样我们就可以通过字典把英语单词翻译成其他国家单词,也可以将其他国家单词翻译为英语单词了。现在再给你几个外国单词,问:字典中是否有这个单词的翻译。如果有,就输出翻译,否则,输出"eh"。思路:这道题其实可以用STL中的map或是字典树来做。map的做法是,建立两个map,一个对应存放翻译,一个用来判断翻译是否存在。注意输入可以先将一行输入进来,判断是否为"\n"。再用sscanf将英语单词和其他国家单词拆分为两个字符串s,原创 2015-04-26 16:24:07 · 1015 阅读 · 0 评论