3 条题解

  • 2
    @ 2024-4-23 17:48:06
    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN=5008;
    int n,k,a[MAXN],f[MAXN<<1],tag,op,ans=MAXN;
    int ansk,sum;
    inline int read()
    {
        register int x=0,f=1;
        char s;
        while((s=getchar())<'0'||s>'9')
        {
            s=='-'?f=-1:f=1;
        }
        x=s-'0';
        while((s=getchar())>='0'&&s<='9')
        {
            x=x*10+s-'0';
        }
        return x*f;
    }
    int main()
    {
    	n=read();
    	for(int i=1;i<=n;i++)
    	{
    		char s;
    		cin>>s;
    		if(s=='B') a[i]=0;
    		if(s=='F') a[i]=1;
    	}
    	for(register int k=1;k<=n;k++)
    	{
    		sum=0;tag=0;op=0;
    		memset(f,0,sizeof(f));
    		for(register int i=1;i<=n;i++)
    		{
    			
    			if((a[i]+tag)%2==0)
    			{
    				if(i+k-1>n)	
    				{
    					op=1;
    					break;
    				}
    				++sum;
    				++tag;
    				f[i+k-1]=-1;
    			}
    			if(f[i]==-1)
    			{
    				--tag;
    				f[i]=0;
    			}
    		}
    		if(op) continue;
    		if(sum<ans)
    		{
    			ans=sum;
    			ansk=k;
    		}
    	}
    	printf("%d %d",ansk,ans);
    	return 0;
    }
    
    • 0
      @ 2022-7-14 15:15:48

      暴力

      jfKTJJ.png

      差分优化

      jfK7W9.png

      • -12
        @ 2023-7-4 21:06:04

        这个原老师就是L啦!

      • 1

      信息

      ID
      1905
      时间
      1000ms
      内存
      256MiB
      难度
      5
      标签
      递交数
      93
      已通过
      39
      上传者