zoukankan      html  css  js  c++  java
  • [AtCoder Grand Contest 024 Problem E]Sequence Growing Hard

    题目大意:
    考虑 N +1 个数组 {A0,A1,…,AN}。
    其中 Ai 的长度是 i,Ai 内的所有数字都在 1 到 K 之间。 Ai−1 是 Ai 的子序列,即 Ai 删一个数字可以得到 Ai−1。 Ai 的字典序大于 Ai−1。
    输入 N,K,M 问序列个数模 M。
    解题思路:
    考虑每次从前面那个状态插入一个数,那么插入位置右边的那个数要严格小于插入的数。
    fi,j,p 表示当前长度为i,取到数字j,有p个位置可插的方案数。
    不插在这个位置,那么fi,j,p−1 += fi,j,p(p不为0)
    还有就是插在这个位置,那么fi+1,j,p += fi,j,p * (p+1)
    或者这个数字不插了,fi,j+1,i += fi,j,p(p为0)
    答案就是fn,k+1

    C++ Code:

    #include<cstdio>
    long n,k,m,j,p,i,f[333][333][333];main(){scanf("%d%d%d",&n,&k,&m);for(f[i=0][1][0]=1;i<=n;++i)for(j=0;k/++j;)for(p=i;~p;--p)(f[i+1][j][p]+=f[i][j][p]*(p+1))%=m,((p?f[i][j][p-1]:f[i][j+1][i])+=f[i][j][p])%=m;printf("%d",f[n][k+1][n]);}
    
  • 相关阅读:
    电路原理图基本知识概述(转)
    数字电路笔记
    模拟电路笔记
    ROS笔记一
    STM32笔记三
    电子元件笔记
    STM32笔记二
    C语言相关知识
    利用sql报错帮助进行sql注入
    kali下纯文本与窗口环境切换
  • 原文地址:https://www.cnblogs.com/Mrsrz/p/9270320.html
Copyright © 2011-2022 走看看