zoukankan      html  css  js  c++  java
  • Codeforces Round #436 (Div. 2) B. Polycarp and Letters

    http://codeforces.com/contest/864/problem/B

    题意:

    给出一个字符串,要求找到一个集合S,使得从S中选出的所有数,在这些数的位置上的字母全部为小写且是不同的字母,并且任意在S中两个数i,j,对于i  <  j,从i到j的所有位置上都为小写字母。

    思路:

    找出所有的大写字母的位置,在任意两个“相邻”(指的是这两个大写字母的中间不存在大写字母)的大写字母中寻找S,这样就可以保证全部为小写字母,用set保存出现过的字母就可以了。

    代码:

     1 #include <stdio.h>
     2 #include <algorithm>
     3 #include <set>
     4 using namespace std;
     5 
     6 int pos[205];
     7 char a[205];
     8 
     9 set<int> s;
    10 set<char> c;
    11 
    12 int main()
    13 {
    14     int n;
    15 
    16     scanf("%d",&n);
    17 
    18     scanf("%s",a);
    19 
    20     pos[0] = -1;
    21     int cnt = 1;
    22 
    23     for (int i = 0;i < n;i++)
    24     {
    25         if (a[i] >= 'A' && a[i] <= 'Z')
    26         {
    27             pos[cnt++] = i;
    28         }
    29     }
    30 
    31     pos[cnt] = n;
    32 
    33     int ans = 0;
    34 
    35     for (int i = 0;i < cnt;i++)
    36     {
    37         c.clear();s.clear();
    38 
    39         int st = pos[i]+1,en = pos[i+1] - 1;
    40 
    41         for (int j = st;j <= en;j++)
    42         {
    43             if (c.find(a[j]) == c.end())
    44             {
    45                 c.insert(a[j]);
    46                 s.insert(j);
    47             }
    48         }
    49 
    50         ans = max((int)s.size(),ans);
    51     }
    52 
    53     printf("%d
    ",ans);
    54 
    55     return 0;
    56 }
  • 相关阅读:
    python第22天作业
    python之常见模块(一)
    python之包和文件目录规范
    python第20天作业
    python之模块
    python之匿名函数
    Python算法之二分法
    间间间间简陋版书城系统
    python第十九天作业
    4-1作业
  • 原文地址:https://www.cnblogs.com/kickit/p/7595126.html
Copyright © 2011-2022 走看看