您的位置:首页 > 其它

STl训练每个题的总结

2017-12-13 16:29 204 查看
STl训练每个题的总结

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

设出一个结构体,并定义三种排序标准,依次按照标准输出即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: