2021年天梯赛选拔第二场

L1-058 6翻了

字符串替换问题

 

 1 #include <iostream>
 2 #include <cstring>
 3 #include <string>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     string s , ans = "";
10     int cnt = 0;
11     getline(cin , s);
12     for(int i  = 0 ; i < s.size() ; i ++ )
13     {
14         if(s[i] == '6') cnt ++;
15         if(s[i] != '6' || i == s.size() - 1)//到字符串结尾要特判
16         {
17             if(cnt > 9) ans += "27";
18             else if(cnt > 3) ans += "9";
19             else if(cnt > 0) 
20                 for(int i = 0 ; i < cnt ; i ++ )
21                     ans += "6";
22 
23             if(s[i] != '6')
24                 ans += s[i];
25             
26             cnt = 0;
27         }
28     }
29     cout << ans << endl;
30     return 0;
31 }
32     

L1-059 敲笨钟

还是个字符串问题

 

 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 #include <queue>
10 
11 using namespace std;
12 
13 typedef long long LL;
14 typedef pair<int, int>PII;
15 
16 map<string, int>mp;
17 map<string, int>::iterator it;
18  
19 int main()
20 {
21     int n;
22     cin >> n;
23     getchar();
24     while(n -- )
25     {
26         string s;
27         int k;
28         int flag = 0;
29         int cnt = 0;
30         getline(cin, s);
31         for (int i = 0; i < s.size(); i ++)
32         {
33             if (s[i] == ',')
34             {
35                 if (s[i - 1] != 'g')
36                     flag = 1;
37                 if (s[i - 2] != 'n')
38                     flag = 1;
39                 if (s[i - 3] != 'o')
40                     flag = 1;
41             }
42             if (s[i] == '.')
43             {
44                 if (s[i - 1] != 'g')
45                     flag = 1;
46                 if (s[i - 2] != 'n')
47                     flag = 1;
48                 if (s[i - 3] != 'o')
49                     flag = 1;
50             }
51         }
52             if (flag == 0)
53             {
54                 for (k = s.size() - 1; k >= 0; k--)//精髓
55                 {
56                     if (s[k] == ' ')
57                         cnt++;
58                     if (cnt == 3)
59                         break;
60                 }
61             }
62             if (flag == 1)
63                 cout << "Skipped" << endl;
64             if (flag == 0)
65             {
66                 for (int k1 = 0; k1 < k; k1++)
67                 {
68                     cout << s[k1];
69                 }
70                 cout << " qiao ben zhong." << endl;
71             }
72         
73     }
74     return 0;
75 }

L2-032 彩虹瓶 

栈模拟

 

 1 #include <iostream>
 2 #include <stack>
 3 
 4 using namespace std;
 5 
 6 stack<int>stk;
 7 
 8 int main()
 9 {
10     int n,m,k;
11     cin >> n >> m >> k;
12     while(k--)
13     {
14         int e = 1;
15         bool flag = true;
16         for(int i = 0 ; i < n ; i ++ )
17         {
18             int a;
19             cin >> a;
20             if(a == e) e ++ ;
21             else 
22             {
23                 stk.push(a);
24                 if(stk.size() > m)
25                     flag = false;
26             }
27             while(!stk.empty() && stk.top() == e)
28             {
29                  e ++ ;
30                  stk.pop();
31             }
32         }
33         
34         if(stk.size() || flag == false)//工人愤怒的两个条件
35         {
36             cout << "NO" << endl;
37             while(!stk.empty())//当前样例工人愤怒,清空栈然后判断下一样例
38                 stk.pop();
39             
40             continue;
41         }
42         if(stk.empty())
43             cout << "YES" << endl;
44     }
45     return 0;
46 }

 

posted @ 2021-03-28 19:52  彦辰kkkkk  阅读(85)  评论(0)    收藏  举报