奇怪的解法

Posted bullshit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了奇怪的解法相关的知识,希望对你有一定的参考价值。

1、尺取法

2、反转法:[USACO07MAR]面对正确的方式Face The Right Way

思路:主要是考虑一个点翻转两次后就会变回原样,然后用前缀和判断是否翻转就可以了:
code:

#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#include<cstring>
#include<stack>
#include<bitset>
const int maxn=10006;
#include<cmath>
int n,m,dir[maxn];
int f[maxn],sum[maxn];
using namespace std;
inline int check(int i,int k)
{
    if ((sum[i-1]-sum[max((i-k),0)])%2==0) return 1;
    else return -1;
}
inline int solve(int k)
{
    int fina=0;
    for (int i=1;i<=n;++i)
    {
        int tmp;
        tmp=dir[i]*check(i,k);
        if (tmp==1) {sum[i]=sum[i-1];continue;}
        else 
        {
            if (n-i+1<k) return 0x3f3f3f3f;  //注意特判
            fina++;
            sum[i]=sum[i-1]+1;
        }
    }
    return fina;
}
int main()
{   
    scanf("%d",&n);
    for (int i=1;i<=n;++i)
    {
        char tmp=getchar();
        if (tmp==‘
‘) tmp=getchar();
        if (tmp==‘B‘) dir[i]=-1;
        else dir[i]=1;
    }
    int ans=n,kk=1;
    for (int i=1;i<=n;++i)
    {
        memset(sum,0,sizeof(sum));
        int chang=solve(i);
        if (chang<ans)
        {
            ans=chang;
            kk=i;
    }
    }
    printf("%d %d",kk,ans);
    return 0; 
}

以上是关于奇怪的解法的主要内容,如果未能解决你的问题,请参考以下文章

更改片段(子片段)时 RecyclerView 中的奇怪叠加

android webview不加载片段

使用制服时 Xamarin OpenGL 片段着色器的奇怪行为

切换到特定片段会产生奇怪的 java.lang.NullPointerException

片段在我的回收站视图中表现得很奇怪

AtCoder Context ABC 104 C Strange Bank(奇怪的银行)---动态规划解法