zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 53C(二分,思维|构造)

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6+6;
    int x[N],y[N];
    int sx,sy,n;
    char s[N];
    bool check(int m)
    {
        for(int i=1;i<=n-m+1;i++)
        {
            int tx=x[n]-x[i+m-1]+x[i-1];  //当前原来选项造成的横坐标影响
            int ty=y[n]-y[i+m-1]+y[i-1];  //当前原来选项造成的纵坐标影响
            int ex=sx-tx, ey=sy-ty;        //消除当前影响
            if(m>=(abs(ex)+abs(ey)) && (m-abs(ex)-abs(ey))%2==0) //可以构造
                return 1;
        }
        return 0;
    }
    int main()
    {
        scanf("%d",&n);
        scanf("%s",s+1);
        x[0]=y[0]=0;
        for(int i=1;i<=n;i++){
            x[i]=x[i-1];
            y[i]=y[i-1];  //累积前面步数的结果
            if(s[i]=='L')
                x[i]-=1;    //当前步数造成的影响
            else if(s[i]=='R')
                x[i]+=1;
            else if(s[i]=='D')
                y[i]-=1;
            else
            y[i]+=1;
        }
        scanf("%d %d",&sx,&sy);       //终点
        int l=0,r=n,ans=-1;
        while(l<=r){              //二分答案
            int mid=(l+r)>>1;
            if(check(mid))
                ans=mid,r=mid-1;
            else
                l=mid+1;
        }
        printf("%d ",ans);
    }
    //待温习

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    Docker配置容器位置和小技巧
    firewall防火墙
    iptables防火墙常用命令
    Docker 常用命令
    Dockerfile镜像的制作
    Windows和Centos下Docker的安装配置
    ubuntu 常用命令
    microPython环境安装及使用
    Arduino上“Collect2.exe: error: ld returned 5 exit status”错误的解决方法
    基于C语言的面向对象编程
  • 原文地址:https://www.cnblogs.com/ldudxy/p/9942735.html
Copyright © 2011-2022 走看看