zoukankan      html  css  js  c++  java
  • CodeForces-1144E Median String (模拟)

    题意:给出字符串长度n,和两个字符串,输出不大于字符串s不小于字符串t的集合的最中间字符串(类似中位数那种)。

    思路:我先尝试在想是否是 集合个数除以2 然后加到最小的字符串上去(中位数思想),然后又在找两个字符串中间个数的时发现 集合个数为 (26-'a')*(26-"b)...这种形式 ,所以估计为转化26进制的运算

    (事实上这就是这道题的做法,然鹅我却写bug一直没调出来)对于模拟问题,思路一定要清晰,本身这类题就没什么难度

    题解:

    #include <string>
    #include <iostream>
     
    using namespace std;
     
    int ans[200010];
     
    string s,t;
    int main()
    {
     
        int n;
        cin>>n>>s>>t;
    //模拟26位进制加减, 对于这种问题如果在加的时候就模拟进位或许会写乱,
    //所以我们把步骤分开一步一步来 
    
            //求和
        for(int i=0;i<n;i++)
             ans[i] = (s[i]-'a')+(t[i]-'a');
         //进位     
        for(int i=n-1;i>0;i--){
            if(ans[i]>=26){
                ans[i]-=26;
                ans[i-1]++;
            }
        }
            //取中
        for(int i=0;i<n;i++){
            if(ans[i]%2){
                ans[i] /= 2;
                ans[i+1]+=26;
            }else ans[i] /= 2;
        }
            //输出
        for(int i=0;i<n;i++){
             printf("%c",ans[i]+'a');
        }
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    百度地图常用 获取中心点 缩放级别等
    sqlserver 临时表,多用户同时访问冲突吗?
    批量改ID 行形式
    C# post Json数据
    windows 激活venv问题
    spring 改变url
    conductor编译镜像
    springboot教程
    Microsoft Visual C++ Compiler for Python 2.7
    java 方法引用(method reference)
  • 原文地址:https://www.cnblogs.com/Tianwell/p/11229933.html
Copyright © 2011-2022 走看看