zoukankan      html  css  js  c++  java
  • Mujin Programming Challenge 2017A

    题意:
    给你n个人的位置,每个人能往后跳一格或两格到无人的位置,跳到0位置,这个人消失,n个人消失组成一个排列,问有多少种排列。
    思路:
    额,搞了一整场这个A...代码也巨挫了。
    处理成1,3,5,7,9.....的位置情况,当出现连续的时候,比如1,3,5,7,8的话那么后面的数怎么跳都不会在前面这些数之前跳出去,bingo!
    所以当前就可以说明这几个就可以在现在跳出去,比如1,3,5,7,8这5个数,第一次跳出去的数有5种情况,然而一个跳出去以后,接下来一个位置是7这个位置。
    代码num表示当前出去的数量。
    code:
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const LL mod=1e9+7;
    const int N=1e5+10;
    LL n;
    int a[N];
    LL f[N];
    void init()
    {
        f[0]=1;
        for(LL i=1;i<=100000;i++)
            f[i]=f[i-1]*i%mod;
    }
    
    int main()
    {
        init();
        scanf("%lld",&n);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        LL ans=1;
        LL b=1;
        LL num=0;
        for(LL i=2;i<=n;i++)
        {
            if(b+2<=a[i])
                b=b+2;
            else
            {
                ans=ans*(i-num)%mod;
                num++;
            }
        }
        ans=ans*f[n-num]%mod;
        printf("%lld
    ",ans);
        return 0;
    }



  • 相关阅读:
    extjs 为组件动态添加插件
    springboot使用spring-cloud-starter-alibaba-sentinel导致响应变成xml格式
    js 将数据保存到本地
    iframe跨域安全
    nginx url自动301加斜杠
    EXTJS防止表单中回车触发提交
    servlet
    Struts1和Struts2的区别
    AWT和Swing的简记
    sleep()和wait()
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777399.html
Copyright © 2011-2022 走看看