题面pdfhttps://codeforc.es/gym/101889/attachments/download/7471/statements-2017-latam-regional.pdf

zyn感冒,两个人打。刚开始两题超迅速,40分钟后开始各种写不出,自闭。然后突然又开出两题。

4题全部1A,70名左右应该能稳个银。

说明卡题了可千万不能放弃!虽然可能简单题做不出来,过的多的题目做不出来,也不要放弃去开题。

以及周末这两场都说明一定要胆子大。

 

B---Buggy ICPC【找规律】

题意:

输入一串字符串,当遇到元音的时候前面输入的所有字符包括这个元音都反转一下。现在给定最后的结果字符串,问有多少种输入方法可以得到这个字符串。

思路:

czc去打了个表,然后我们疯狂找规律。真的找到规律了

如果没有元音,当然是1.如果有元音,但是第一个不是元音,一定是0

其他情况,答案就是中间两个元音之间的辅音个数$+1$。

只有一个元音时默认后面还有一个元音结尾,答案就是字符串长度。

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 const int maxn = 1e5 + 5;
 6 char t[maxn];
 7 vector<int>pos_of_vowel;
 8 char vowel[5] = {'a', 'e', 'i', 'o', 'u'};
 9 
10 int main()
11 {
12     while(scanf("%s", t) != EOF){
13         pos_of_vowel.clear();
14         int len = strlen(t), cnt = 0;
15         for(int i = 0; i < len; i++){
16             for(int j = 0; j < 5; j++){
17                 if(t[i] == vowel[j]){
18                     cnt++;
19                     pos_of_vowel.push_back(i);
20                 }
21             }
22         }
23 
24         if(cnt == 0){
25             printf("1\n");
26         }
27         else{
28             bool flag = false;
29             for(int i = 0; i < 5; i++){
30                 if(t[0] == vowel[i]){
31                     flag = true;
32                     break;
33                 }
34             }
35             if(!flag){
36                 printf("0\n");
37             }
38             else{
39                 if(cnt == 1){
40                     printf("%d\n", len);
41                 }
42                 else{
43                     int id = (cnt + 1) / 2;
44                     //cout<<id<<endl<<pos_of_vowel[id]<<endl<<pos_of_vowel[id - 1]<<endl;
45                     int l = pos_of_vowel[id] - pos_of_vowel[id - 1];
46                     printf("%d\n", l);
47                 }
48 
49             }
50         }
51     }
52     return 0;
53 }
View Code

相关文章: