zoukankan      html  css  js  c++  java
  • CodeForces

    原题

    暴露太多问题了,DP也不会...

    题意:给你一个由大小写字母组成的字符串,你每次可以将大小写修改,问你最少几次修改,可以使这个字符串前缀是大写,后缀是小写

    首先我们定义一个数组 dp1[N],它代表从前往后遍历,结尾为 a[i]的字符串最小修改次数;

    后我们再定义一个数组 dp2[N],它代表从后往前遍历,结尾为 a[i]的字符串最小修改次数;

    最后我们对整个字符串暴力比较出最小的 dp1[i]+dp2[i] 就可以了。

    #include<bits/stdc++.h>
    using namespace std;
    char a[100005];
    int dp1[100005],dp2[100005];
    int main()
    {
        while(~scanf("%s",a+1))
        {
           memset(dp1,0,sizeof(dp1));
           memset(dp2,0,sizeof(dp2));
           int n=strlen(a+1);
           for(int i=2;i<=n;i++)
           {
              if('a'<=a[i-1]&&a[i-1]<='z')
                dp1[i]=dp1[i-1]+1;
              else
                dp1[i]=dp1[i-1];
           }
           for(int i=n-1;i>=1;i--)
           {
              if('a'<=a[i+1]&&a[i+1]<='z')
                dp2[i]=dp2[i+1];
              else
                dp2[i]=dp2[i+1]+1;
           }
    //       printf("%d %d
    ",dp1[1],dp2[1]);
           int ans=1e7;
           for(int i=1;i<=n;i++)
           {
               ans=min(ans,dp1[i]+dp2[i]);
           }
           printf("%d
    ",ans);
        }
    return 0;
    }
    
    戒骄戒躁,百炼成钢!
  • 相关阅读:
    【SQL】DBCC(zz)
    Temporary Tables and Table Variables
    SQL特殊字符处理zz
    更改 Office 解决方案的安装路径
    SQL优化
    zzSQL Server性能优化
    SQL Server2005 表分区三步曲(zz)
    zz精妙SQL
    Deal with an annoying Message in Excel
    SQL技巧总结
  • 原文地址:https://www.cnblogs.com/Pecoz/p/12606102.html
Copyright © 2011-2022 走看看