
数据结构——STL
文章平均质量分 74
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
习题5-5 复合词 UVa10391
1.题目描述:点击打开链接原创 2014-08-13 11:43:02 · 960 阅读 · 0 评论 -
HDU 4119 Isabella's Message (2011年成都赛区现场赛I题)
1.题目描述:点击打开链接2.解题思路:本题是一道模拟题,要求模拟一个解密的过程,练习这么久第一次做模拟题1Y了,内心还是很激动的~。只需要根据题意,记录* 所在的位置即可,然后每次都是先解密,后顺时针旋转90度。把每次解密的信息放到一个vector里,接下来就是连接它们,得到解密后的字符串,在map中查找这些单词是否存在即可。如果都存在,就把这条解密信息放到ans中,最后对ans排序,输出a原创 2015-08-26 00:29:38 · 1358 阅读 · 0 评论 -
例题7-14 网格动物 UVa1602
1.题目描述:点击打开链接2.解题思路:本题利用回溯法解决。本题实际上是要搜索n连通块不同形态的个数(平移,翻转,旋转后相同的算作一种形态),因此能够有效的判断n连通块是否重复是关键。那么如何判断是否重复呢?我们一步步的分析。由于可能要涉及对一个对象的旋转,平移,翻转操作,因此我们有必要定义好相应的结构体去支持这些操作的完成。首先不难发现,每个单元格应当作为一个结构体出现,用(x,原创 2015-08-10 17:05:08 · 2915 阅读 · 3 评论 -
#300 (div.1 2) B. Quasi Binary
1.题目描述:点击打开链接2.解题思路:本题利用扫描法解决。一开始想复杂了,把所有的01组成的数字全部都列举了出来,想一个个尝试。结果到最后也没能写成,放弃了。比赛后发现思路其实非常简单。把每一位的数字看做一根柱子的高度,逐层扫描即可。如果第j位的数字大于当前层i,那么这一位设置为1,否则设置为0。可以发现,最终的答案就是输入的数字中最大的那一位数,而设置每一位的值恰好可以利用string来方原创 2015-04-27 13:39:58 · 780 阅读 · 0 评论 -
#296 (div.2) C.Glass Carving
1.题目描述:点击打开链接2.解题思路:本题要求每切一刀,输出目前的最大玻璃的面积。这道题的思路很明显:每次切完后找目前的最大长度,最大宽度,相乘即可。不过问题的关键是如何快速的找到这个最大值。一开始我没有太好的思路,想用数组,但总感觉数组力不从心,不知道怎么才能很好地更新切完后的长度值,也不知道如何快速的找到这个最大值。接着想到了STL中的set,可以把所有的切割位置存放在set中,然后原创 2015-03-21 19:01:56 · 653 阅读 · 0 评论 -
例题3.3 阿格斯 UVa1203
1.题目描述:点击打开链接2.解题思路:本题利用优先队列解决。根据题意,优先出列的是时间靠前的时间,如果当有多个事件同时发生,那么再考虑Qnum小的事件优先出列。本题有一个重要的技巧,就是每次出列后,更新一下该元素下次出列的时间,然后再次放回队列,使得优先队列中一直都是n个元素。由于只模拟前k个时间,而STL的priority_queue的出列时间复杂度是O(logN),因此本题的总时间复杂度原创 2015-03-17 18:33:09 · 806 阅读 · 0 评论 -
例题3.4 K个最小和 UVa11997
1.题目描述:点击打开链接2.解题思路:本题是多路归并问题,即有n个有序表,需要将这n个有序表合成一个有序表。多路归并问题的一般解法是利用优先队列解决,优先队列q中初始存入每个表的第一个元素,然后每次出一个元素,就把它放入新表,并将它所在的表的下一个元素值加入队列。本题的关键点在于如何将这n组元素转化为上述多路归并问题。我们先考虑一个简化版本的问题,给出两个长度为n的有序表A和B,分别在A原创 2015-03-17 18:56:06 · 791 阅读 · 0 评论 -
例题8-11 全部相加 UVa10954
1.题目描述:点击打开链接2.解题思路:根据题意描述,可以选择如下贪心策略:每次都选择两个比较小的数,相加后的结果放回队列中,而取最小值出列正好可以运用STL的priority_queue3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include#include#include#include原创 2015-02-06 18:43:30 · 589 阅读 · 0 评论 -
例题3.1 猜猜数据结构 UVa11995
1.题目描述:点击打开链接2.解题思路:本题要求根据输入的数据和输出的数据来猜测一种可能的数据结构,备选答案有“栈,队列,优先队列”,结果也可能都不是或者不确定。STL中已经有这三种数据结构了,因此直接模拟题意,输出时判断是否对应即可。注意:弹出时要判断一下是否已经为空。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#i原创 2015-03-16 17:11:20 · 956 阅读 · 0 评论 -
例题3.2 一道简单题 UVa11991
1.题目描述:点击打开链接2.解题思路:本题要求在一串数中找第k个v的下标,属于数据结构题。我们自然会想:如果能够直接读出data[v][k]该多好。这时,就可以联想到STL中的map。把v当做“键”,由于要找的是第k个,说明“值”是一个不定长的数组,那么自然要使用vector,这样就可以用map >a来实现类似于data[v][k]的数据结构了。3.代码:#define _CRT_S原创 2015-03-16 22:36:48 · 621 阅读 · 0 评论 -
习题5-10 在Web中搜索 UVa1597
1.题目描述:点击打开链接2.解题思路:本题要求模拟一个搜索引擎,该引擎可以处理四种搜索方式:term,term1 AND term2,term1 OR term2,NOT term。在题目描述部分已经介绍了搜索引擎的搭建方式,理论上只需要按照题意搭建即可,不过这样的话,代码会很长,由于中间还要输出一些分隔符来区分文章或者询问,代码长度至少快300行了。这样的代码难以维护,而且在比赛中也不切实原创 2015-03-25 17:56:12 · 1844 阅读 · 3 评论 -
例题8-1 煎饼 UVa120
1.题目描述:点击打开链接2.解题思路:本题利用贪心法解决,按照题意,可以先复制原队列,并排好序,从大到小以此把每个数排到正确位置,方法是:先翻到上面,再翻到正确位置,每翻一次,都要判断队列是否已经排好,如果本来就在最顶层,或局部和排过序的队列相同,可以跳过,无需翻转3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include原创 2015-02-04 22:50:00 · 1119 阅读 · 0 评论 -
习题5-8 图书管理系统 UVa230
1.题目描述:2.解题思路原创 2014-08-14 18:51:22 · 968 阅读 · 0 评论 -
习题5-3 卡片游戏 UVa10935
#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;queuecard;int n;int main()原创 2014-08-12 11:52:08 · 840 阅读 · 0 评论 -
习题5-6 对称轴 UVa1595
1.题目描述:2.解题思路:判断是否对称只需要看x坐标,因此可以先将原创 2014-08-13 15:02:19 · 830 阅读 · 0 评论 -
习题5-4 交换学生 UVa10763
其实我的思路想复杂了,AC了之后看了别人的代码才发现如此简单原创 2014-08-12 14:24:51 · 766 阅读 · 0 评论 -
习题5-2 Ducci序列 UVa1594
1.题目描述:点击打开链接2.解题思路:模拟题意原创 2014-08-12 16:31:31 · 960 阅读 · 0 评论 -
例题3.19 优势人群 UVa11020
1.题目描述:点击打开链接2.解题思路:本题利用multiset解决。根据题意,如果我们用P(x,y)表示一个人,因为人可以相同,所以用multiset。我们会发现,如果所有人群都是有优势的,那么这些点呈现一个递减的趋势。如果刚刚插入一个人,他是否有优势该如何判断呢?只需要看他左边相邻的点的y坐标是否比他小即可。而如果这个人是有优势的,那么需要先把这个人插入到集合中,然后从upper_boun原创 2015-08-30 21:56:49 · 854 阅读 · 0 评论