题面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 }