您的位置:首页 > 其它

2015NCHU第一届ACM新生选拔赛J题题解

2015-03-29 20:20 225 查看
J.Return to school
题目定位及考察点

难度等级:D

考察点:数据结构(双端队列)、C++的STL

题意翻译

四天的上海之旅也该结束了,大四的孩子还得考试。于是LYK急急忙忙去买票,不然明天的考试就得挂了。排队买票的规则是先到先购票,但有的人(例如院士)是可以优先买票的,于是他们就可以自动到队伍的最前面。现在LYK担心的是,在只剩m张票的情况下,还能不能买到火车票。假设现在售票窗口暂停售票,也就是说,排在LYK之前的人还没有买到票,而排在LYK后面的特权人员还能行使特权。

输入的第一行是一个整数n,代表有多少组测试样例数,n的范围在1到100。接下来每一组测试样例的第一行是一个整数m,代表还剩下m张火车票,m的范围是1到100。每一组测试样例的第二行是一串以空格隔开的字符,代表购票者的身份,字符少于100个。其中,P是没有优先购买特权的普通人;L代表LYK,同样没有优先购买特权;V代表有优先购买特权的购票者;E代表该行字符的结束标识符。

输出LYK是否可以购买到火车票,每一组输出单独占一行。如果可以买到票,则输出“congratulations”,否则输出“sorry”。

解题思路

解决这道题首先需要知道优先队列这种数据结构,然后我们就可以进行模拟了。把读入的P和L依次加入到队尾,把读入的V加入到队首,直到读到E结束。读入结束以后,弹出队列中前m个元素,如果有一个元素是L,则输出congratulations,否则输出sorry。

对新生的话

这道题是唯一一道用C++写的题目,学到一定程度以后,是时候去掌握C++了,重点是学习C++里面的STL,利用这个库来简化自己的代码。另外,你们要尽快学习各种常见的数据结构,这也是一个基本功。

复制去Google翻译翻译结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: