第5章 C++和STL入门
紫书第五章例题和习题
徹夜禁止
日拱一卒,功不唐捐
展开
-
习题5-15 UVa12333-Revenge of Fibonacci(TLE)(需字典树知识)
每次碰到斐波那契数列的题必有一次TLE…修改了几版之后仍然是TLE,除了输出-1的情况外几乎都很快了。之后参考了别人的代码,就是这一篇:ACM手记。虽然看懂了做法,但是可能有些细节没顾及到,所以还是WA了。最后就算这道题TLE吧,因为更多人的做法是我还没接触的字典树,等学到了再回头来做。 题目链接:UVa 12333 最终版的TLE代码: #include <iostream> #include <algorithm> #include <string> #include原创 2020-05-09 23:31:13 · 130 阅读 · 0 评论 -
习题5-12 UVa511-Do You Know the Way to San Jose?
这道题对于英语不太行全靠机翻读题的我简直是灾难,读了三遍题以后对细节还是不太理解。开始写之后发现很多地方的处理都不是很完善,尤其是使用sort进行排序时,自定义的cmp无法引入另外的参数(我起初不会),也就没办法比较点到地图中心的距离对地图进行排序了。之后查看了即为前辈的代码,找到了解决办法:bind函数。原创 2020-05-09 17:06:12 · 266 阅读 · 2 评论 -
习题5-11 UVa12504-Updating a Dictionary
本题只需要用map创建新旧字典,用set保存新增、删除和修改的元素后输出就好了。易错点是需要在每一个测试用例之后输出一个空行。 比较疑惑的地方是在创建map时,如果采用substr截取key和value就会报WA,采用符号换空格再用字符串流输入的话就会AC,看了半天没弄清楚原因。。。 题目链接: AC代码: #include <iostream> #include <sstrea...原创 2020-05-08 15:15:33 · 119 阅读 · 0 评论 -
习题5-10 UVa1597-Searching the Web
本题确实很锻炼编码能力。最最最重要的是选择合适的容器来存放数据。我第一次做采用了三维数组存放后遍历查询,但是由于太麻烦甚至没能完成就放弃这个方案了;第二次采用二维向量存放每一行,在查询时再分别对各行进行处理,最后虽然完成了但是不出所料:TLE。一筹莫展之际翻了翻讨论区,看到有大佬说“这道题不是暴搜就行?”我直接傻掉,赶紧点进他的主页看了他的代码,噢,原来这就是大佬的暴搜…(在代码里用到了,我的注释...原创 2020-05-07 23:08:06 · 206 阅读 · 2 评论 -
习题5-9 UVa1596-Bug Hunt
本题算是不难但是很绕的题了。首先要想清楚用什么来存放读入的数据,其次数组的名与值要怎么分离开来,然后如何判断有没有bug,是左值与右值分开判断?还是将判断写到一个函数里?d最后,读入的数组应该存储起来,以便应对数组嵌套。其余的代码里注释得很详细了。 这次学到了isdigit(int c)函数,它用来判断参数是否为阿拉伯数字0~9,若是返回true,否则返回false。还有使用pair类模板来创建对...原创 2020-05-06 16:31:16 · 308 阅读 · 0 评论 -
习题5-8 UVa230-Borrowers
本题可以直接采用模拟的方法,不过要注意输出的规则和格式。**输入SHELVE后输出的顺序也是按照先作者后书名的方式。**其余想记录的地方就是采用substr截取所需数据,很实用。 题目链接:UVa 230 AC代码: #include <iostream> #include <sstream> #include <algorithm> #include <...原创 2020-05-05 23:45:41 · 98 阅读 · 0 评论 -
习题5-7 UVa12100-Printer Queue
利用一个排序过的数组存放所有的优先级,同时用来判断当前的队首元素是不是队列中的最大值。再用一个队列模拟整个过程就OK了。 题目链接:UVa 12100 AC代码: #include <iostream> #include <queue> #include <algorithm> using namespace std; const int maxn = 100...原创 2020-05-05 16:46:23 · 155 阅读 · 0 评论 -
例题5-12 UVa221-Urban Elevations
紫书的分析中已经说得很清楚了,只需要理解x数组中存放的是什么、排序后和去重后存放的顺序有什么意义,读懂书上的代码就很简单了。 x数组中存放着每个建筑物的两个底角的横坐标,经过排序和去重后,相邻两个元素组成的的区域加起来便可覆盖整个x轴。 题目链接:UVa221 代码: #include <iostream> #include <algorithm> using namesp...原创 2020-05-03 15:53:02 · 110 阅读 · 0 评论 -
例题5-10 UVa207-PGA Tour Prize Money(WA)
这道题真的是搞心态的神仙题了,由于到最后还是晕晕乎乎+WA,所以就不多说了,直接贴代码。 题目链接:UVa 207 WA代码: #include <iostream> #include <algorithm> #include <cstring> using namespace std; #define DQ 99999 #define eps 1e-8 st...原创 2020-05-02 11:32:43 · 244 阅读 · 0 评论 -
例题5-9:UVa1592-DataBase
我感觉本题对于初学者来说难度还是不小的,并且需要注意的地方也有很多。首先,虽然例题分析中已经给出了思路,但思路仅仅是思路,实现起来还会遇到不少阻碍。像我碰到的由于数组开太小不停报RE啦、二维向量没有正确初始化导致无穷无尽的WA啦等等。接下来就记录一下在本题中曾经遇到的问题。按照代码顺序由上往下记录。 题目链接:UVa 1592 在map中用到自定义的结构体需要重载<运算符。 第一次遇到这...原创 2020-05-01 11:13:25 · 173 阅读 · 0 评论 -
习题5-6 UVa1595-Symmetry
本题的难点是如何判断几个点组成的图形是否对称,只要能发现所有点的横坐标的和求平均数得到的横坐标恰好是对称轴所在的位置就好了。求出对称轴后再把各点到对称轴的距离求出来排序,这个问题就解决了。要注意对称轴和点到对称轴的距离可能不是整数。 题目链接:UVa 1595 AC代码: #include <iostream> #include <algorithm> using name...原创 2020-05-05 14:42:23 · 125 阅读 · 0 评论 -
习题5-5 UVa10391-Compound Words
这道题第一眼的思路是将所有单词在输入时就两两配对存入新的数组中,输入完毕后遍历单词数组和复和单词数组,将复合数组中与单词数组相同的部分输出。但是这种方法会超时。所以采用拆分所有单词的方法,看了代码就明白了。 题目链接:UVa 10391 AC代码: #include <iostream> #include <string> #include <set> usin...原创 2020-05-05 12:27:15 · 130 阅读 · 0 评论 -
习题5-4 UVa10763-Foreign Exchange(map)
这道题很自然地会想到用map来解决,将学生的意愿a,b组成的对作为Key,统计相同的对出现的次数作为Value,最后判断每个映射的Value是否全为0即可。 这道题让我迷惑的地方在于,我想如果学生人数n为奇数的话匹配一定不成功,但是只要加入这个判定就会报WA…晕了 我还尝试过将学生的意愿a,b分别作为Key和Value,但是会报TLE,怀疑是数据变多以后循环时间过长的原因。 题目链接:UVa 10...原创 2020-05-05 11:31:58 · 120 阅读 · 0 评论 -
习题5-3 UVa10935-Throwing cards away I(queue)
这道题我采用的是两个队列的方法来解决的。需要注意的地方就是输出的格式了。 题目链接:UVa 10935 AC代码: #include <iostream> #include <queue> using namespace std; queue<int> discard, remain; int main() { int n; while (cin >...原创 2020-05-05 11:12:39 · 122 阅读 · 0 评论 -
习题5-2 UVa1594-Ducci Sequence
这道题真的蛮水的,直接放代码了。 题目链接:UVa 1594 AC代码: #include <iostream> #include <cstring> #include <cmath> using namespace std; const int maxn = 2000; int num[maxn], n, num_c[maxn]; bool is_loo...原创 2020-05-05 11:09:44 · 135 阅读 · 0 评论 -
习题5-1 UVa1593-Alignment of Code(字符串流)
刚看到这道题的时候,我的思路是分行逐个字符读入进行判断。但是这样写完之后发现没有退出循环的条件。之后换了方法,采用字符串流输入,成功解决。 题目链接:UVa 1593 AC代码: #include <iostream> #include <sstream> using namespace std; const int maxn = 2000; int num[maxn],...原创 2020-05-05 11:06:51 · 113 阅读 · 0 评论