zoukankan      html  css  js  c++  java
  • Brackets

    题意:

    给定一个 $n, x, y$ ,问长度为 $2n$ 的合法括号序列中,第$x$个左括号晚于第$y$个左括号匹配的方案数是多少。

    解法:

    枚举 $C_A,C_B$对于三部分分别求答案即可。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    #define LL long long
    #define P 1000000007LL
    #define N 510
    
    using namespace std; 
    
    LL f[N][N], h[N][N];
    
    int main()
    {
        f[0][0] = h[0][0] = 1;
        for(int i = 0;i < N;i++)
            for(int j = 0;j < N;j++)
            {
                if(i)
                {
                    f[i][j] += f[i-1][j];
                    h[i][j] += h[i-1][j];
                    if(f[i][j] >= P) f[i][j] -= P;
                    if(h[i][j] >= P) h[i][j] -= P;
                }
                if(j)
                {
                    f[i][j] += f[i][j-1];
                    h[i][j] += h[i][j-1];
                    if(f[i][j] >= P) f[i][j] -= P;
                    if(h[i][j] >= P) h[i][j] -= P;
                }
                if(i < j) f[i][j] = 0;
                if(i > j) h[i][j] = 0;
            }
        int T, n, x, y;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d %d %d", &n, &x, &y);
            LL ans = 0;
            for(int i = 0;i <= n;i++)
                for(int j = i;j <= n;j++)
                {
                    ans += f[x-1][i] * f[y-x-1][j-i]%P * h[n-y][n-j] %P;
                    if(ans >= P) ans -= P;
                }
            cout << ans << endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    android焦点
    URI和URL的区别比较与理解
    Android Bundle类
    repo命令
    ubuntu adb找不到设备
    【python】-网络编程
    【python】-反射
    【python】-类的特殊成员方法
    【python】-7-面向对象的进阶
    【python】-多态
  • 原文地址:https://www.cnblogs.com/lawyer/p/6795675.html
Copyright © 2011-2022 走看看