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;
    }
  • 相关阅读:
    c/c++基础 输入函数/流
    数据库的码/键
    sql plus笔记
    cmd delete oracle related
    CAN总线
    SAR ADC : 逐次逼近寄存器型(SAR)模数转换器(ADC)
    Cortex-M3寄存器等基础知识
    Cortex-M3知识点
    ARM指令和Thumb指令区别
    8051、ARM、AVR
  • 原文地址:https://www.cnblogs.com/Tianwell/p/11229933.html
Copyright © 2011-2022 走看看