• BestCoder Sequence


      hdu   4908  Bestcoder

    Problem Description
    Mr Potato is a coder.
    Mr Potato is the BestCoder.

    One night, an amazing sequence appeared in his dream. Length of this sequence is odd, the median number is M, and he named this sequence as Bestcoder Sequence.

    As the best coder, Mr potato has strong curiosity, he wonder the number of consecutive sub-sequences which are bestcoder sequences in a given permutation of 1 ~ N.
     


    Input
    Input contains multiple test cases.
    For each test case, there is a pair of integers N and M in the first line, and an permutation of 1 ~ N in the second line.

    [Technical Specification]
    1. 1 <= N <= 40000
    2. 1 <= M <= N
     


    Output
    For each case, you should output the number of consecutive sub-sequences which are the Bestcoder Sequences.
     


    Sample Input
    1 1
    1
    5 3
    4 5 3 2 1
     


    Sample Output
    1
    3
     
     
    建模好了,很好做。对于满足题意的子串,大于M的个数等于小于M的个数。我们只关心大于小于M这个性质。
    我们把大于M的数记作1,小于M的数记作-1,M记作0,则连续的包含M的和为0的子串就是满足题意的子串。
    建立模型。我们用数组sum[i]表示1->i  的和。对于大于等于M_ID  的数  i,sum[i],如果sum[j]==sum[i](j<M_id)
    则j+1到I为满足题意的子串。
     
    #include"iostream"
    #include"cstdio"
    #include"cstring"
    #include"algorithm"
    using namespace std;
    const int ms=40000;
    int sum[ms+1],a[ms+20000];
    int n,m;
    void solve()
    {
        memset(sum,0,sizeof(sum));
        memset(a,0,sizeof(a));
        int x,i,ans=0,id;
        for(i=1;i<=n;i++)
        {
            scanf("%d",&x);
            sum[i]=sum[i-1];
            if(x==m)
            {
                id=i;
                continue;
            }
            if(x>m)
                sum[i]++;
            else
                sum[i]--;
        }
        for(i=0;i<id;i++)
        {
            a[sum[i]+ms]++;
        }
        for(i=id;i<=n;i++)
            ans+=a[sum[i]+ms];
        printf("%d
    ",ans);
        return ;
    }
    int main()
    {
        while(scanf("%d%d",&n,&m)==2)
        {
            solve();
        }
        return 0;
    }
     
  • 相关阅读:
    tcp没用吗?为什么MOBA、“吃鸡”游戏不推荐用tcp协议
    这样做动画交互,一点都不费力!
    sql server 小记——分区表(上)
    vs中不得不会的一些小技巧(1)——细说查找
    Aforge.net之旅——开篇:从识别验证码开始
    Redis Hash操作
    Varint 数值压缩
    LevelDB Version
    LevelDB Cache机制
    LevelDB Compaction操作
  • 原文地址:https://www.cnblogs.com/767355675hutaishi/p/3905154.html
Copyright © 2020-2023  润新知