STl训练每个题的总结
2017-12-13 16:29
204 查看
STl训练每个题的总结
1.I can guess the data structure
分别定义三个容器,依次把数据往里放就行,然后再判断顶部的元素是否匹配。注意优先队列的优先性
2.easy problem from Rujia Liu
关键容器为的定义map
10.team queue
定义两个队列,分别记录团队数和团队内部成员
然后就是插队和出队操作了
11.ugly number
容器set型,将2,3,5定义为一个常量数组,逐步往上乘,再入队就行了,但是要判断set里面之前存不存在
12.unix is
关键先找出最大的字符串个数,然后算出行数和列数,为保证列数最少,所以行数就为(maxcol-M)/(M+2)+1,列数就为(n-1)/col+1;之后再一列一列的遍历输出即可
13.Database
同理将每个单元格化为整数对,对每个字符串进行了编号,再每两行遍历比较即可,
另外使用了结构体的话,结构体中不含结构体,所以要在结构体中对小于号进行重载
14.pga tour prize money
先根据前两轮成员选出晋级选手,之后根据后两轮成绩选出奖金量,另外注意奖金平分情况,和业余选手获的名次情况
15.the letter carrier’s rounds
先将mta中用户列表保存下来,之后根据每个请求分离出mta和用户名,之后检查收件人是否存在,根据实际情况来输出
16.Alignment of code
定义两个容器,vector word[1000],int a[1000]前者用来存储每行的数据,后面用来记录每列的最大长度,之后再遍历输出即可,如果不够输出空格即可
Note:用到了streamstring 操作
17.Ducci Sequence
定义一个结构体类型的map容器,经过最多1000步改变判断是不是与map中已经有了,有了则说明循环了
18.Throwing the card
第一张牌扔掉,留下第二张牌,定义head=1;tail=n+1;来遍历判断数组中的元素,之后a[tail++]=a[head++];
19.Foreign student
20.compound word
将输入的字符串输入set容器之中,之后对遍历整个set,再利用find函数,和string.substr()函数,和find函数一样,
4000
可以自己定义查找的上下界
21.Symmetry
将每个点的坐标读入set容器,之后对称查找有没有另外一点存在即可,不过本题的特殊处理方法应该注意
22.Borrowers
首先定义一个结构体,储存书的作者或状态,map,vector分别储存书名——作者状态和书名,之后遍历判断哪些书还在架子上并分情况输出即可
23.Bug Hunt
分成两个部分,读入数据,和检查bug子函数,在读入数据时又应该区分为赋值和定义语句,如果是赋值语句的话再次检查右边值是否初始化过,和左边值是否越界就行了
24.searching in the web
首先读入文章,再读入指令,判断是哪种情况分别输出即可(细节应该注意)
25.Updating a Dictionary
容器:定义一个二维map(string,string>容器,然后遍历判断即可
26.do you know the way to san jose
首先定义一个结构体,来读入,计算并排序地图信息,之后根据读入的指令查询相应的地图
27.queue and a
创建结构体,读入每个主题的信息,和每个客服的信息,之后根据具体信息处理即可,再处理部分有点没弄懂
28.Exchange
读入buy和sell指令,根据读入的信息不断更新信息,然后输出相应结果,也有点没弄懂
29.Revenge of Fibonacii
字典树
30.Use of hospital facilities
31.单词数
set容器
32.剪花布条
find函数的应用,find(p1,p2);自定义上下界
33.ignatius and princess II
next_permutation(a,a+n)的应用
34.a==b?
关键是判断有无小数点然后去掉首尾的0即可
35.排列2
next_permutation(a,a+n)求数组全排列
36.misha and changing handles
定义一个结构体来存储老名字和新名字,遍历查找结构体输出即可
37.usaco orz
DFS递归计数,使用set容器进行计数
38.skip the class
结构体储存数据然后排序依次求答案即可
39.summary
定义一个set容器,将每两个数求和,将其放入set容器,最后再输出和即可
40.Alice and bob
41.the kth great number
定义一个multiset容器,当读到Q时输出第一个元素,另外再往里面放的时候,检查是不是超过容量了,是的话就要去掉首部的
42.hat’s words
类似与compound words
43.ignatius and the princess IV
只要找到有超过(n+1)/2的数即可
44.what are you talking about
使用map来存储字典信息,然后读入要翻译的数据即可
45.水果
利用map,和结构体分别来存储数据,之后按照标准输出即可,本题是很好的map和结构体综合使用的文本处理题
46.bad serial inc
47.{a}+{b}
直接用set容器即可,当然也可以用集合的并集运算
48.let the balloon rise
map计数即可
49.boring game
50.windows message queue
使用结构体和优先队列即可
51.language of fatmouse
类似与what are you talking about
52.list the books
设出一个结构体,并定义三种排序标准,依次按照标准输出即可
1.I can guess the data structure
分别定义三个容器,依次把数据往里放就行,然后再判断顶部的元素是否匹配。注意优先队列的优先性
2.easy problem from Rujia Liu
关键容器为的定义map
#define all(x) x.begin(),x.end() #define ins(x) inserter(x,x.begin())用于上述两个集合操作
10.team queue
定义两个队列,分别记录团队数和团队内部成员
然后就是插队和出队操作了
11.ugly number
容器set型,将2,3,5定义为一个常量数组,逐步往上乘,再入队就行了,但是要判断set里面之前存不存在
12.unix is
关键先找出最大的字符串个数,然后算出行数和列数,为保证列数最少,所以行数就为(maxcol-M)/(M+2)+1,列数就为(n-1)/col+1;之后再一列一列的遍历输出即可
13.Database
同理将每个单元格化为整数对,对每个字符串进行了编号,再每两行遍历比较即可,
另外使用了结构体的话,结构体中不含结构体,所以要在结构体中对小于号进行重载
14.pga tour prize money
先根据前两轮成员选出晋级选手,之后根据后两轮成绩选出奖金量,另外注意奖金平分情况,和业余选手获的名次情况
15.the letter carrier’s rounds
先将mta中用户列表保存下来,之后根据每个请求分离出mta和用户名,之后检查收件人是否存在,根据实际情况来输出
16.Alignment of code
定义两个容器,vector word[1000],int a[1000]前者用来存储每行的数据,后面用来记录每列的最大长度,之后再遍历输出即可,如果不够输出空格即可
Note:用到了streamstring 操作
17.Ducci Sequence
定义一个结构体类型的map容器,经过最多1000步改变判断是不是与map中已经有了,有了则说明循环了
18.Throwing the card
第一张牌扔掉,留下第二张牌,定义head=1;tail=n+1;来遍历判断数组中的元素,之后a[tail++]=a[head++];
19.Foreign student
定义map<pair<int,int>,int>> 将数据存入map中 Note:m[make_pair(a,b)],利用输入的两个大小判断,如下: a < b ? ++m[make_pair(a, b)] : --m[make_pair(b, a)];,最后判断是不是为0即可
20.compound word
将输入的字符串输入set容器之中,之后对遍历整个set,再利用find函数,和string.substr()函数,和find函数一样,
4000
可以自己定义查找的上下界
21.Symmetry
将每个点的坐标读入set容器,之后对称查找有没有另外一点存在即可,不过本题的特殊处理方法应该注意
22.Borrowers
首先定义一个结构体,储存书的作者或状态,map,vector分别储存书名——作者状态和书名,之后遍历判断哪些书还在架子上并分情况输出即可
23.Bug Hunt
分成两个部分,读入数据,和检查bug子函数,在读入数据时又应该区分为赋值和定义语句,如果是赋值语句的话再次检查右边值是否初始化过,和左边值是否越界就行了
24.searching in the web
首先读入文章,再读入指令,判断是哪种情况分别输出即可(细节应该注意)
25.Updating a Dictionary
容器:定义一个二维map(string,string>容器,然后遍历判断即可
26.do you know the way to san jose
首先定义一个结构体,来读入,计算并排序地图信息,之后根据读入的指令查询相应的地图
27.queue and a
创建结构体,读入每个主题的信息,和每个客服的信息,之后根据具体信息处理即可,再处理部分有点没弄懂
28.Exchange
读入buy和sell指令,根据读入的信息不断更新信息,然后输出相应结果,也有点没弄懂
29.Revenge of Fibonacii
字典树
30.Use of hospital facilities
31.单词数
set容器
32.剪花布条
find函数的应用,find(p1,p2);自定义上下界
33.ignatius and princess II
next_permutation(a,a+n)的应用
34.a==b?
关键是判断有无小数点然后去掉首尾的0即可
35.排列2
next_permutation(a,a+n)求数组全排列
36.misha and changing handles
定义一个结构体来存储老名字和新名字,遍历查找结构体输出即可
37.usaco orz
DFS递归计数,使用set容器进行计数
38.skip the class
结构体储存数据然后排序依次求答案即可
39.summary
定义一个set容器,将每两个数求和,将其放入set容器,最后再输出和即可
40.Alice and bob
41.the kth great number
定义一个multiset容器,当读到Q时输出第一个元素,另外再往里面放的时候,检查是不是超过容量了,是的话就要去掉首部的
42.hat’s words
类似与compound words
43.ignatius and the princess IV
只要找到有超过(n+1)/2的数即可
44.what are you talking about
使用map来存储字典信息,然后读入要翻译的数据即可
45.水果
利用map,和结构体分别来存储数据,之后按照标准输出即可,本题是很好的map和结构体综合使用的文本处理题
46.bad serial inc
47.{a}+{b}
直接用set容器即可,当然也可以用集合的并集运算
48.let the balloon rise
map计数即可
49.boring game
50.windows message queue
使用结构体和优先队列即可
51.language of fatmouse
类似与what are you talking about
52.list the books
设出一个结构体,并定义三种排序标准,依次按照标准输出即可