zoukankan      html  css  js  c++  java
  • 【个人训练】(ZOJ3983)Crusaders Quest

    题意分析

    和祖玛类似的那种玩法。不过是限定了九个字符,问最好情况下有几次三连碰。
    暴力穷举即可。具体的做法是,先把所有“成块”的字符记录下来,然后一个一个删,再继续这样子递归做下去。考虑到就只有9个字符,内存和时间的占用不会太高。
    这里倒是遇到了盲点:之前不清楚erase的用法。

    代码

    #include <bits/stdc++.h>
    
    typedef long long ll;
    typedef unsigned long long ull;
    using namespace std;
    int ans=0;
    void solve(string nowstr,int cnt)
    {
        //cout<<nowstr<<endl;
        vector<pair<int,int> > vec;
        int len=nowstr.length();
        if(!len) ans=max(ans,cnt);
        else
        {
            int b=0;
            for(int i=0;i!=len;++i)
            {
                if(nowstr[b]!=nowstr[i])
                {
                    vec.push_back(make_pair(b,i));
                    b=i;
                }
            }
            vec.push_back(make_pair(b,len));
            for(auto iter:vec)
            {
                string tmpstr=nowstr;
                //cout<<iter.first<<" "<<iter.second<<endl;
                tmpstr.erase(tmpstr.begin()+iter.first,tmpstr.begin()+iter.second);
                if(iter.second-iter.first>=3)
                    solve(tmpstr,cnt+1);
                else solve(tmpstr,cnt);
            }
        }
        return;
    }
    int main()
    {
        int T; cin>>T;
        while(T--)
        {
            ans=0;
            string str; cin>>str;
            solve(str,0);
            cout<<ans<<endl;
        }
        return 0;
    }
    
    如非注明,原创内容遵循GFDLv1.3发布;其中的代码遵循GPLv3发布。
  • 相关阅读:
    关于在MDK中使用 printf 函数
    Stm32 SWD 下载 调试配置
    STM32使用以下规则对过滤器编号:
    STM32的can现场总线实验心得
    0R电阻作用
    Android activity 亮度调整
    电源信息监控
    android 圆环进度view
    com.google.zxing:core 生成二维码的简单使用
    自定义控件 监控宿主activity的生命周期
  • 原文地址:https://www.cnblogs.com/samhx/p/9652101.html
Copyright © 2011-2022 走看看