codeforces 1038a

You are given a string s of length n, which consists only of the first

k letters of the Latin alphabet. All letters in string s are

uppercase.

A subsequence of string s is a string that can be derived from s by

deleting some of its symbols without changing the order of the

remaining symbols. For example, “ADE” and “BD” are subsequences of

“ABCDE”, but “DEA” is not.

A subsequence of s called good if the number of occurences of each of

the first k letters of the alphabet is the same.

Find the length of the longest good subsequence of s.

Input The first line of the input contains integers n (1≤n≤1e5) and k

(1≤k≤26)

The second line of the input contains the string s of length n. String

s only contains uppercase letters from ‘A’ to the k-th letter of Latin

alphabet.

Output Print the only integer — the length of the longest good

subsequence of string s.

Examples
input
9 3
ACAABCCAB
output
6
input
9 4
ABCABCABC
output
0

思路如下

  1. 先判断前 k 个字母是不是都有。
  2. 如果都有,找前k 个字母中 出现次数最少的那个字母,那么这个最少次数 * k ,就是答案,同桶排去统计字母出现的次数
  3. 如果前 k 个字母没有全部出现在所给的字符串中,直接输出 0

题解如下

#include<iostream>
#include<algorithm>
using namespace std;
int barrel[100]; int main()
{
//freopen("test.txt","r",stdin);
int n,k;
scanf("%d %d ", &n,&k);
char ch;
for(int i = 0; i < n; i ++)
{
scanf("%c",&ch);
barrel[ch] ++;
}
int ans = 1e9;
for(int i = 'A'; i <= 64 + k; i ++)
{
ans = min(ans , barrel[i]);
}
printf("%d",ans * k); return 0;
}

codeforces 1038a(找最长的前k个字母出现相同次数的字符串)的更多相关文章

  1. 算法---数组总结篇2——找丢失的数,找最大最小,前k大,第k小的数

    一.如何找出数组中丢失的数 题目描述:给定一个由n-1个整数组成的未排序的数组序列,其原始都是1到n中的不同的整数,请写出一个寻找数组序列中缺失整数的线性时间算法 方法1:累加求和 时间复杂度是O(N ...

  2. 海量数据中找出前k大数(topk问题)

    海量数据中找出前k大数(topk问题) 前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小 ...

  3. 快速排序算法的实现 && 随机生成区间里的数 && O(n)找第k小 && O(nlogk)找前k大

    思路:固定一个数,把这个数放到合法的位置,然后左边的数都是比它小,右边的数都是比它大 固定权值选的是第一个数,或者一个随机数 因为固定的是左端点,所以一开始需要在右端点开始,找一个小于权值的数,从左端 ...

  4. Codeforces Round #545 (Div. 2)D(KMP,最长公共前后缀,贪心)

    #include<bits/stdc++.h>using namespace std;const int N=1000007;char s1[N],s2[N];int len1,len2; ...

  5. 第k大的数,前k大的数

    1.排序后去出前k个,o(n*log(n))    如果k<log(n),可以考虑直接选择排序,因为只需要执行找到第k个就可以结束 o(n*k) 2.o(nlog(k))快排把数分为了两个部分, ...

  6. HDU 2594(求最长公共前后缀 kmp)

    题意是在所给的两个字符串中找最长的公共前后缀,即第一个字符串前缀和第二个字符串后缀的最长相等串. 思路是将两个字符串拼接在一起,然后直接套用 kmp 算法即可. 要注意用 next 会报编译错误,改成 ...

  7. (算法)前K大的和

    题目: 1.有两个数组A和B,每个数组有k个数,从两个数组中各取一个数加起来可以组成k*k个和,求这些和中的前k大. 2.有N个数组,每个数组有k个数,从N个数组中各取一个数加起来可以组成k^N个和, ...

  8. n个数取前k个最小数

    算法题:K 个最近的点 给定一些 points 和一个 origin,从 points 中找到 k 个离 origin 最近的点.按照距离由小到大返回.如果两个点有相同距离,则按照x值来排序:若x值也 ...

  9. 算法题之找出数组里第K大的数

    问题:找出一个数组里面前K个最大数. 解法一(直接解法): 对数组用快速排序,然后直接挑出第k大的数.这种方法的时间复杂度是O(Nlog(N)).N为原数组长度. 这个解法含有很多冗余,因为把整个数组 ...

随机推荐

  1. 简单易懂的Servlet路径问题

    关于servlet路径,我看了一下网上别人的博客园,发现都有一个通病,讲的太专业了,又抓不住关键部分,往往看一眼就不想看第二眼.所以我特地准备了初学者所通识的servlet路径问题. 1.标识符 /j ...

  2. git删除远程仓库中的文件夹

    具体操作如下: git rm -r --cached .history    #删除目录 git commit -m”删除.history文件夹” git push -r表示递归所有子目录,如果你要删 ...

  3. ARM AVI 视频播放 基于 2440 freambuffer 绘制

    AVI 文件格式 图解 整理: AVI 是一种容器,里面放什么格式的数据都可以 视频编码:格式可以是 H264, MPEG-4, MJPEG ,因为 MJPEG 比较简单,所以仅支持 MJPEG 的 ...

  4. RAC修改VIP地址

    目录 当前环境 1.通过[srvctl config]确认当前VIP地址. 2.关闭dbconsole[对应的em] 3.关闭数据库实例 4.关闭asm实例 5.关闭结点服务 6.修改两个节点的/et ...

  5. 处理asp.net core连接mysql的一个异常Sequence contains more than one matching element

    晚上在那里调程序,把mysql.data组件的nuget包进行了更新,前几天好好的程序,开始抛错,跟踪断点发现以下的异常: Unable to connect to any of the specif ...

  6. react 新创建项目

    1,先创建一个文件夹用于存放项目 2,运行cmd,路径选择到你创建的文件夹内 3,  npm install -g create-react-app         create-react-app ...

  7. Java 基础(六):循环

    循环 老生常谈的一个控制流程了,我们在是使用数组和集合的时候,遍历元素的时候经常会用到循环的结构,Java具有非常灵活的三种循环机制: 根据是否知道循环的次数可以为分为while循环,do...whi ...

  8. Python基础篇(五)_文件和数据格式化

    Python基础篇_文件和数据格式化 文件的使用:文件打开.关闭.读写 文件打开:通过open()函数打开文件,并返回一个操作文件的变量. 使用语法:<变量名> = (<文件路径以及 ...

  9. 关于Resouces.resx 在WPF中{x:Static}不显示内容只显示字段的问题解决办法

    问题现象:<object property="{x:Static prefix:typeName.staticMemberName}" .../> 界面中只显示资源引用 ...

  10. Natas11 Writeup(常见编码、异或逆推、修改cookie)

    Natas11: 页面提示cookie被异或加密保护,查看源码,发现了一个预定义参数和三个函数. //预定义参数,猜测将showpassword设置为yes即可得到密码. $defaultdata = ...