zoukankan      html  css  js  c++  java
  • Codeforces Bubble Cup 8

    H. Bots

    Time Limit: 1 Sec  

    Memory Limit: 256 MB

    题目连接

    http://codeforces.com/contest/575/problem/H

    Description

    Sasha and Ira are two best friends. But they aren’t just friends, they are software engineers and experts in artificial intelligence. They are developing an algorithm for two bots playing a two-player game. The game is cooperative and turn based. In each turn, one of the players makes a move (it doesn’t matter which player, it's possible that players turns do not alternate).

    Algorithm for bots that Sasha and Ira are developing works by keeping track of the state the game is in. Each time either bot makes a move, the state changes. And, since the game is very dynamic, it will never go back to the state it was already in at any point in the past.

    Sasha and Ira are perfectionists and want their algorithm to have an optimal winning strategy. They have noticed that in the optimal winning strategy, both bots make exactly N moves each. But, in order to find the optimal strategy, their algorithm needs to analyze all possible states of the game (they haven’t learned about alpha-beta pruning yet) and pick the best sequence of moves.

    They are worried about the efficiency of their algorithm and are wondering what is the total number of states of the game that need to be analyzed?

    Input

    The first and only line contains integer N.

    • 1 ≤ N ≤ 106

    Output

    Output should contain a single integer – number of possible states modulo 109 + 7.

    Sample Input

    2

    Sample Output

     19

    HINT

     

    题意

    有两个人,问你两个人都走n次的状态一共有多少种

    题解:

    打表打表,然后推推数学

    推出来是这个:2*(2*n-1)!/(n!*(n-1)!)-1

    那就随便搞搞就好啦

    代码:

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const ll Mod=1000000007LL;
    ll f[2000010];
    void build()
    {
        f[0]=1LL;
        for(int i=1;i<=2000005;i++)
            f[i]=i*f[i-1]%Mod;
    }
    ll fp(ll a,ll k)
    {
        ll res=1LL;
        while(k)
        {
            if(k&1)res=res*a%Mod;
            a=a*a%Mod;
            k>>=1;
        }
        return res;
    }
    ll C(int n,int k)
    {
        if(k>n)return 0LL;
        return f[n]*fp(f[k],Mod-2)%Mod*fp(f[n-k],Mod-2)%Mod;
    }
    int main()
    {
        build();
        int n;
        scanf("%d",&n);
        n++;
        ll ans=(2*C(2*n-1,n)+Mod-1)%Mod;
        printf("%I64d
    ",ans);
    }
  • 相关阅读:
    python之openpyxl模块(最全总结 足够初次使用)
    随笔 遇见
    浅析企业服务器安全防护的七个切入点
    jQuery.API源码深入剖析以及应用实现(1) - 核心函数篇
    常用Javascript精选(二)
    随笔 生活与生命
    jquery插件 8个很有用的jQuery插件
    jquery插件 5个小插件
    常用Javascript精选(一)
    jQuery库与其他JS库冲突的解决办法(转)
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4787655.html
Copyright © 2011-2022 走看看