zoukankan      html  css  js  c++  java
  • BZOJ1830: [AHOI2008]Y型项链 & BZOJ1789: [Ahoi2008]Necklace Y型项链

    【传送门:BZOJ1830&BZOJ1789


    简要题意:

      给你3个字符串,你每一次可以在一个字符串的末端删除一个字符或添加一个字符,你需要用尽量少的操作次数使得这3个字符串变成一样的。 


    题解:

      模拟直接搞,模拟以每个串的每个位置为最终答案,求最小值即可


    参考代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    #include<cmath>
    using namespace std;
    char s1[51],s2[51],s3[51];
    int main()
    {
        int len1,len2,len3;
        scanf("%d%s",&len1,s1+1);
        scanf("%d%s",&len2,s2+1);
        scanf("%d%s",&len3,s3+1);
        int mmin=1<<31-1,ans;
        int b1=0,b2=0,b3=0;
        for(int i=1;i<=len1;i++)
        {
            ans=len1-i;
            if(b2!=0) ans+=len2-b2+1+i-b2+1;
            else if(s1[i]!=s2[i]) b2=i,ans+=len2-b2+1+i-b2+1;
            else ans+=len2-i;
            if(b3!=0) ans+=len3-b3+1+i-b3+1;
            else if(s1[i]!=s3[i]) b3=i,ans+=len3-b3+1+i-b3+1;
            else ans+=len3-i;
            mmin=min(ans,mmin);
        }
        b1=0;b2=0;b3=0;
        for(int i=1;i<=len2;i++)
        {
            ans=len2-i;
            if(b1!=0) ans+=len1-b1+1+i-b1+1;
            else if(s2[i]!=s1[i]) b1=i,ans+=len1-b1+1+i-b1+1;
            else ans+=len1-i;
            if(b3!=0) ans+=len3-b3+1+i-b3+1;
            else if(s2[i]!=s3[i]) b3=i,ans+=len3-b3+1+i-b3+1;
            else ans+=len3-i;
            mmin=min(ans,mmin);
        }
        b1=0;b2=0;b3=0;
        for(int i=1;i<=len3;i++)
        {
            ans=len3-i;
            if(b1!=0) ans+=len1-b1+1+i-b1+1;
            else if(s3[i]!=s1[i]) b1=i,ans+=len1-b1+1+i-b1+1;
            else ans+=len1-i;
            if(b2!=0) ans+=len2-b2+1+i-b2+1;
            else if(s3[i]!=s2[i]) b2=i,ans+=len2-b2+1+i-b2+1;
            else ans+=len2-i;
            mmin=min(ans,mmin);
        }
        printf("%d
    ",min(mmin,len1+len2+len3));
        return 0;
    }

     

  • 相关阅读:
    进程与线程的区别与联系
    任务、进程、线程
    类、对象、方法、实例方法、类方法
    java 泛型详解
    Java总结篇系列:Java泛型
    html+css+js 实现自动滑动轮播图
    第三篇web前端面试自我介绍(刚毕业的菜鸟)
    怎么写网站的需求文档
    在phpStudy怎么配置虚拟地址
    第二篇web前端面试自我介绍(刚毕业的菜鸟)
  • 原文地址:https://www.cnblogs.com/Never-mind/p/8939400.html
Copyright © 2011-2022 走看看