1.题目描述:点击打开链接
2.解题思路:本题其实就是一道模拟题,每次遇到小写字符,就把对应的个数加一,遇到大写字符,如果有钥匙,个数减一,否则cnt++。输出cnt即可。但比赛时候用了过多的STL,导致结果TLE了,导致我第一次A题都跪了==。其实直接用普通的标记数组就可以统计个数了。以后凡是能够用到C的,应该尽量用C,保证简洁与高效。
3.代码:
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string> #include<sstream> #include<set> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<functional> using namespace std; #define N 1000000+10 int vis[26]; int main() { //freopen("t.txt", "r", stdin); int n; char s[N]; while (~scanf("%d", &n)) { memset(vis, 0, sizeof(vis)); scanf("%s", s); int len = 2 * n - 2; int cnt = 0; for (int i = 0; i < len;i++) if (i & 1) { if (vis[s[i] - 'A']) vis[s[i] - 'A']--; else cnt++; } else vis[s[i] - 'a']++; cout << cnt << endl; } return 0; }
#297 (div.2) A. Vitaliy and Pie
原文:http://blog.csdn.net/u014800748/article/details/44672221