2021年天梯赛选拔赛第一场

L1-6 吃火锅 (15 分)

思路:

查找子串,学习一个在找子串反面很方便好用的函数叫find,用处就是看这个子串在字符串中有没有,如果没有就返回 -1。

#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
    string s;
    int n = 0 , cnt = 0 , flag = 0 , start = 0;
    while(1)
    {
        getline(cin,s);
        if(s == ".") break;
        n ++;
        if(s.find("chi1 huo3 guo1") != -1)
        {
            if(flag == 0)
            {
                start = n;
                flag = 1;
            }
            cnt++;
        }    
    } 
    cout << n << endl;
    if(i) cout << start << " " << i << endl;
    else cout << "-_-#";
    return 0;
}

 

L2-2 口罩发放 (25 分)

模拟

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <string>
 5 #include <algorithm>
 6 #include <cmath>
 7 #include <map>
 8 #include <stack>
 9 
10 using namespace std;
11 
12 const int N = 10010;
13 
14 int d, p;
15 int t, s;
16 int anscnt;
17 
18 map<string, int> mp;
19 map<string, int> vis;
20 
21 struct Node 
22 {
23     string name;
24     string id;
25     int flag;
26     int hh, mm;
27     int t;
28     int idx;
29 } a[N], ans[N];
30 
31 bool cmp(Node x, Node y)
32 {
33     if (x.t != y.t)
34         return x.t < y.t;
35 
36     return x.idx < y.idx;
37 }
38 
39 bool check(string s)
40 {
41     int len = s.length();
42     if (len != 18) return false;
43 
44     for (int i = 0; i < len; ++i)
45         if (!isdigit(s[i]))
46             return false;
47 
48     return true;
49 }
50 
51 int main() 
52 {
53     cin >> d >> p;
54     for (int i = 1; i <= d; i++) 
55     {
56         cin >> t >> s;
57         for (int j = 1; j <= t; j++) 
58         {
59             cin >> a[j].name >> a[j].id;
60             scanf("%d%d:%d", &a[j].flag, &a[j].hh, &a[j].mm);
61 
62             a[j].t = a[j].hh * 60 + a[j].mm;
63             a[j].idx = j;
64 
65             if (mp.find(a[j].id) == mp.end()) 
66                 mp[a[j].id] = 0;
67 
68             if (a[j].flag == 1 && check(a[j].id) && vis.find(a[j].id) == vis.end()) 
69             {
70                 vis[a[j].id] = 0;
71                 ans[anscnt++] = a[j];
72             }
73         }
74         sort(a + 1, a + t + 1, cmp);
75 
76         int cnt = 0;
77         for (int j = 1; j <= t && cnt < s; j++) 
78         {
79             if (check(a[j].id) && (!mp[a[j].id] || (i - mp[a[j].id]) > p)) 
80             {
81                 cout << a[j].name << ' ' << a[j].id << endl;
82                 cnt++;
83                 mp[a[j].id] = i;
84             }
85         }
86     }
87     for (int i = 0; i < anscnt; ++i)
88         cout << ans[i].name << ' ' << ans[i].id << endl;
89 
90     return 0;
91 }

 

 

 

 
团体程序设计天梯赛-练习集
公告

原PAT网站用户可在 https://www.patest.cn/bind_old_pat_user 页面绑定至拼题A账号。绑定后,原PAT网站的提交将被合并至拼题A网站用户的对应题目集中。

 
L1-070 吃火锅 (15 分)
 

chg.jpg

以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。

本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1

输入格式:

输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点 . 时,输入结束,此行不算在朋友信息里。

输出格式:

首先在一行中输出朋友信息的总条数。然后对朋友的每一行信息,检查其中是否包含 chi1 huo3 guo1,并且统计这样厉害的信息有多少条。在第二行中首先输出第一次出现 chi1 huo3 guo1 的信息是第几条(从 1 开始计数),然后输出这类信息的总条数,其间以一个空格分隔。题目保证输出的所有数字不超过 100。

如果朋友从头到尾都没提 chi1 huo3 guo1 这个关键词,则在第二行输出一个表情 -_-#

输入样例 1:

Hello!
are you there?
wantta chi1 huo3 guo1?
that's so li hai le
our story begins from chi1 huo3 guo1 le
.
 

输出样例 1:

5
3 2
 

输入样例 2:

Hello!
are you there?
wantta qi huo3 guo1 chi1huo3guo1?
that's so li hai le
our story begins from ci1 huo4 guo2 le
.
 

输出样例 2:

5
-_-#
 
作者
陈越
单位
浙江大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
 
C++ (g++)
 
 
 
 
 
 
1
 
#include<iostream>
2
#include<cstring>
3
#include<string>
4
#include<algorithm>
5
6
usingnamespacestd;
7
8
intmain()
9
 
{
10
intcnt=0,start=0,n=0,flag=0;
11
stringts="chi1huo3guo1";
12
while(1)
13
 
{
14
strings;
15
getline(cin,s);
16
if(s==".")break;
17

18
n++;
19
if(s.find(ts)!=-1)
20
 
{
21
if(flag==0)
22
 
{
23
flag=1;
24
start=n;
25
}
26
cnt++;
27
}
28
}
29
cout<<n<<endl;
30
if(cnt)cout<<start<<''<<cnt<<endl;
31
elsecout<<"-_-#"<<endl;
32
return0;
 
 
33

34
}
 
 
 
posted @ 2021-03-21 20:02  彦辰kkkkk  阅读(73)  评论(0)    收藏  举报