zoukankan      html  css  js  c++  java
  • 暴力——cf1202C

    直接去考虑细节很多,不如暴力做

    即在四个方向到达最远前向反方向走一步,答案肯定是从这四种情况+不多走里出的

    #include<bits/stdc++.h>
    using namespace std;
    #define N 200005
    char s[N],t[N];
    int n,w,h,u,d,l,r,x,y,pu,pd,pl,pr;
    
    void insert(int pos,char ch){//在pos前塞入ch 
        int len=strlen(t+1);
        for(int i=len;i>=pos;i--)
            t[i+1]=t[i];
        t[pos]=ch; 
    }
    void calc(){
        int len=strlen(t+1),u=0,d=0,l=0,r=0,x=0,y=0;
        for(int i=1;i<=len;i++){
            if(t[i]=='W')y++;
            if(t[i]=='S')y--;
            if(t[i]=='A')x--;
            if(t[i]=='D')x++;
            if(y>u)u=y;
            if(y<d)d=y;
            if(x>r)r=x;
            if(x<l)l=x;
        }
        w=r-l+1;h=u-d+1;
    }
    
    
    int main(){
        int T;cin>>T;
        while(T--){
            u=0,d=0,l=0,r=0,x=0,y=0;
            pu=pd=pl=pr=0;
            memset(s,0,sizeof s);
            scanf("%s",s+1);
            n=strlen(s+1);
            for(int i=1;i<=n;i++){
                if(s[i]=='W')y++;
                if(s[i]=='S')y--;
                if(s[i]=='A')x--;
                if(s[i]=='D')x++;
                if(y>u)u=y,pu=i;
                if(y<d)d=y,pd=i;
                if(x>r)r=x,pr=i;
                if(x<l)l=x,pl=i;
            }
            w=r-l+1;h=u-d+1;
            long long ans=(long long)w*h;
            memset(t,0,sizeof t);
            memcpy(t,s,sizeof s);
            if(pu)insert(pu,'S');
            calc();
            ans=min(ans,1ll*w*h);
            
            memset(t,0,sizeof t);
            memcpy(t,s,sizeof s);
            if(pd)insert(pd,'W');
            calc();
            ans=min(ans,1ll*w*h);
            
            memset(t,0,sizeof t);
            memcpy(t,s,sizeof s);
            if(pr)insert(pr,'A');
            calc();
            ans=min(ans,1ll*w*h);
            
            memset(t,0,sizeof t);        
            memcpy(t,s,sizeof s);
            if(pl)insert(pl,'D');
            calc();
            ans=min(ans,1ll*w*h);
            
            cout<<ans<<'
    ';
            
        }
    }
    /*
    4
    DSAWWAW
    D
    WA
    WSSW
    */
  • 相关阅读:
    手机自动化
    记录
    Linux 死机了怎么办
    前端源码
    LNMP环境
    PHP学习之路(一)
    py
    蜘蛛问题
    mongodb
    【HTML/XML 2】XML基础知识点总结
  • 原文地址:https://www.cnblogs.com/zsben991126/p/11515693.html
Copyright © 2011-2022 走看看