Codeforces Round #293 (Div. 2) B. Tanya and Postcard

 

题目地址:http://codeforces.com/contest/518/problem/B

 1 /*  2  字符串处理:字符查找  3  记录s,t各自的大小写字母的数量,然后累加完全匹配的cnty和不完全匹配的cntw  4  这道题题目我没读懂,cntw不完全匹配意思是:只是大小不相同  5 */  6 #include <cstdio>  7 #include <iostream>  8 #include <algorithm>  9 #include <map> 10 #include <cstring> 11 #include <string> 12 #include <set> 13 using namespace std; 14 15 const int MAXN = 2e5 + 10; 16 const int INF = 0x3f3f3f3f; 17 18 int main(void) 19 { 20 //freopen ("B.in", "r", stdin); 21 22 char s[MAXN], t[MAXN]; 23 int m1[30], m2[30], m3[30], m4[30]; 24 25 while (cin >> s >> t) 26  { 27 memset (m1, 0, sizeof (m1)); 28 memset (m2, 0, sizeof (m2)); 29 memset (m3, 0, sizeof (m3)); 30 memset (m4, 0, sizeof (m4)); 31 for (int i=0; s[i]!='\0'; ++i) 32  { 33 if (s[i]>='a' && s[i]<='z') 34 m1[s[i] - 'a']++; 35 else 36 m2[s[i]-'A']++; 37  } 38 for (int i=0; t[i]!='\0'; ++i) 39  { 40 if (t[i]>='a' && t[i]<='z') 41 m3[t[i] - 'a']++; 42 else 43 m4[t[i]-'A']++; 44  } 45 int cnty = 0, cntw = 0; 46 for (int i=0; i<26; ++i) 47  { 48 int d = min (m1[i], m3[i]); 49 m1[i] -= d; 50 m3[i] -= d; 51 cnty += d; 52 d = min (m2[i], m4[i]); 53 m2[i] -= d; 54 m4[i] -= d; 55 cnty += d; 56  } 57 for (int i=0; i<26; ++i) 58  { 59 int d = min (m1[i], m4[i]); 60 m1[i] -= d; 61 m4[i] -= d; 62 cntw += d; 63 d = min (m2[i], m3[i]); 64 m2[i] -= d; 65 m3[i] -= d; 66 cntw += d; 67  } 68 69 cout << cnty << " " << cntw << endl; 70  } 71 72 73 return 0; 74 }

 

你可能感兴趣的:(codeforces)