zoukankan      html  css  js  c++  java
  • Codeforces Round #482 (Div. 2) B、Treasure Hunt(模拟+贪心)979B

    题目

    大致题意

        n表示要进行n次操作,接着给出三个字符串,表示三个人初始拥有的串。每次操作要替换字符串中的字母,询问最后在游戏中曾出现过的相同的子串谁最多。

    思路

      (1)  讨论最多的子串,肯定是全部转换成单个的字母是最优的,这样就把子串转换成了讨论出现过最多的字母的问题。接下来只需要模拟,先将初始串中有的最多的字母数统计出来,然后考虑一下剩下的字符数和n的关系就可以了。需要注意的是,初始的字符串是不计入统计的,也就是说,至少在经过一次操作后我们才对它们的最大长度进行比较。

    (2)显然只需关注字符而非子串。

    枚举每个字符,尽力使其他字符变成它。

    只有一种情况需要注意!如果字符a的出现次数等于len,并且n=1,那么你不得不将一个字符a变为其他的字符,最终最多只能有len-1个a.

    AC代码:

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<map>
    #include<string.h>
    using namespace std;
    map<char,int>mp;
    char s[100001];
    int n;
    int so()
    {
        int ans=-1;
        mp.clear();
        cin>>s;
        int len=strlen(s);
        for(int i=0 ; i<len ; i++)
        {
            mp[s[i]]++;
            ans=max(ans,mp[s[i]]);
        }
        if(ans==len&&n==1)
            return len-1;
        else if(ans+n<=len)
            return ans+n;
        else
            return len;
    }
    int main( )
    {
        int max1,max2,max3;
        scanf("%d",&n);
        max1=so();
    
        max2=so();
        max3=so();
        if(max1>max2&&max1>max3)
            puts("Kuro");
        else if(max2>max1&&max2>max3)
            puts("Shiro");
        else if(max3>max1&&max3>max2)
            puts("Katie");
        else
            puts("Draw");
    }
    View Code
  • 相关阅读:
    pathon学习总结(二)pathon的基础语法
    python学习总结(一),第一个python程序的编写
    数组中查找最大值和最小值 (两种方法)
    websocket----聊天室,推送等服务
    django-celery 应用方法
    vue-resource
    Vue-router
    vue 属性绑定
    Vue的生命周期以及钩子函数
    安装 vue 及 组件
  • 原文地址:https://www.cnblogs.com/shuaihui520/p/9046308.html
Copyright © 2011-2022 走看看