zoukankan      html  css  js  c++  java
  • 字母卡片

    题目:

    https://www.nowcoder.com/practice/9369f06924fa44a4ba2c462504c53297?tpId=122&rp=1&ru=%2Fta%2Fexam-wangyi&qru=%2Fta%2Fexam-wangyi%2Fquestion-ranking

    题目描述

    给你n张卡片,卡片上仅包含大写英文字母,现你可从这n张卡片中选出k张,要求得到尽可能高的分数。
    关于分数的计算方式,在你所选择的k张卡片中,含有相同字母的卡片分数为卡片数乘以相同卡片个数。
    就样例而言,选择九张D和其他任意一张,得到的结果为9*9+1 。

    输入描述:

    输入包含两行,第一行含两个整数n,k(0<k<=n<=1,000,000)

    第二行为每张卡片上的字母

    输出描述:

    输出仅包含一行,输出尽可能高的分数
    示例1

    输入

    15 10 
    DZFDFZDFDDDDDDF

    输出

    82

    AC代码:
    #include<bits/stdc++.h>
    using namespace std;
    #define LL long long
    int main()
    {
        LL a[30];
        int n,k;
        string s; 
        while(cin>>n>>k)
        {
            cin>>s;
            memset(a,0,sizeof(a));
            for(int i=0;i<n;i++) a[(int)s[i]-'A']++;
            sort(a,a+26);
            LL res=0;
            for(int i=25;i>=0;i--)
            {
                LL v=min((LL)k,a[i]);//min(long long,long long);数字类型要控制一样样哦 
                res+=v*v;
                k-=v;
            }
            cout<<res<<endl;
        }
        return 0;
    } 
     
  • 相关阅读:
    ESlint 格式化代码 备忘
    css 点击样式,水波纹(记录备用)
    RabbitMq 报错记录
    sql For xml path('') 备忘
    .net core Area独立成单独的dll文件
    刷shipid 简便方法
    实际操作--create DB link
    POS VB
    设置PL/SQL 快捷键
    要开始学习C#
  • 原文地址:https://www.cnblogs.com/dragondragon/p/13419518.html
Copyright © 2011-2022 走看看