题意简单明确(

很容易知道最高的位置一定是左边能看到最高的和右边能看到最高的。于是我们考虑一个 dp:

设 \(dp[n][A][B]\) 表示长度为 \(n\) 的排列,左边有 \(A\) 个 balabala,右边有 \(B\) 个 balabala。

我们考虑每次令整个排列的元素全部加一,然后插入一个 \(1\)。

很明显,如果 \(1\) 插在最左边,会令 \(A+1\),如果插在最右边会令 \(B+1\),否则都不变。

于是得到了递推方程:

\[dp[n][A][B]=dp[n-1][A-1][B]+dp[n-1][A][B-1]+(n-2) \times dp[n-1][A][B]
\]

这样会得到 20pts 的好成绩。吸口氧不知道能不能跑快点儿。

观察 dp 的递推式,发现其存在组合意义:从 \((1,1,1)\) 到 \((n,A,B)\),令 \(n+1\) 会使 \(prod\) 乘上一个 \(n-1\) 。问所有路径的权值之和。

所以相当于从 \((1,n]\) 中选 \(A+B-2\) 个位置,其中 \(A-1\) 个位置为 \(0\),\(B-1\) 个位置为 \(1\),剩下的为下标减去 \(2\)。

于是问题变成了从 \([0,n-2]\) 中选择 \(A+B-2\) 个数删掉,所有方案剩下数之积之和。

从 \(n\) 个数中选择 \(m\) 个数删掉,似乎是经典的背包问题。

设 \(f[n][m]\) 为 \([0,n-2]\) 中删掉 \(m\) 个数的积之和。

然后你发现 \(f[1][1]\) 的定义出现了问题,于是重新设,设为 \([0,n-1]\),最后把 \(f[n][A+B-2]\) 改成 \(f[n-1][A+B-2]\) 就行。

这里的递推式为 \(f[n][m]=f[n-1][m] \times (n-1)+f[n-1][m-1]\)。

然后我们需要从 \(A+B-2\) 中选择 \(A-1\) 个位置令其为 \(1\),剩下的位置为 \(0\)。

所以答案就是 \(f[n-1][A+B-2] \times \binom {A+B-2} {A-1}\)。

写完题解后翻了一圈题解区,咋全是斯特林数,然后发现自己的 \(f\) 就是斯特林数/qd

#include<cstdio>
#include<cctype>
typedef unsigned ui;
const ui M=2e5+5,mod=1e9+7;
ui T,n[M],A[M],B[M],C[205][205],f[50005][205];
inline ui Add(const ui&a,const ui&b){
return a+b>=mod?a+b-mod:a+b;
}
inline ui read(){
ui n(0);char s;while(!isdigit(s=getchar()));
while(n=n*10+(s&15),isdigit(s=getchar()));return n;
}
inline void write(ui n){
static char s[10];ui top(0);
while(s[++top]=n%10^48,n/=10);
while(putchar(s[top]),--top);
}
signed main(){
ui i,j,mx(0);T=read();f[0][0]=C[0][0]=1;
for(i=1;i<=T;++i)n[i]=read(),A[i]=read(),B[i]=read(),n[i]>mx&&(mx=n[i]);
for(i=1;i<=mx;++i)for(j=1;j<=i&&j<=200;++j)f[i][j]=(f[i-1][j]*(i-1ull)+f[i-1][j-1])%mod;
for(i=1;i<=200;++i)for(C[i][0]=1,j=1;j<=200;++j)C[i][j]=Add(C[i-1][j],C[i-1][j-1]);
for(i=1;i<=T;++i)write(1ull*f[n[i]-1][A[i]+B[i]-2]*C[A[i]+B[i]-2][A[i]-1]%mod),putchar(10);
}

LGP4609题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. Emoji与unicode特殊字符的处理

    遇到了一个很让人纠结的问题:emoji表情在使用的过程中,会莫名其妙的消失,或者变成乱码,同时数据库用utf8mb4来存储,但是也出现了问题,冷备过后,导入进库的时候,变成了不可见字符,神奇的消失了! ...

  2. 已完成的python项目-环境离线部署

    python环境离线部署 当前生产环境中,有很多基于python开发的工具需要使用. 由于python工具往往涉及到很多依赖,在线状态下,可以通过pip requirements来管理安装. 但有时候 ...

  3. linux_17

    nginx负载均衡中常见的算法及原理有哪些? 用rewrite规则实现将所有到a域名的访问rewrite到b域名 实现反向代理客户端IP透传 利用LNMP实现wordpress站点搭建

  4. 帆软报表(finereport)控件背景色更改

    setTimeout(function() { $('.fr-trigger-btn-up').css({ "background-color": "#003399&qu ...

  5. 4、Linux基础--系统目录

    笔记 1.晨考 1.移动文件的命令 mv 2.删除文件的命令及其参数 rm 参数: -r : 递归删除 -f : 不提示删除 -i : 提示删除 3.复制文件的命令及其参数 cp 参数: -r : 递 ...

  6. Harbor2.2.4在CentOS7.9安装、部署

    CentOS7.9基础环境配置 https://www.cnblogs.com/uncleyong/p/15471002.html 直接从网盘获取配置好的环境 修改:vim /etc/hosts 12 ...

  7. kali linux 安装lanmp遇到的问题

    安装LANMP步骤(需要ROOT权限)2020版本以上的Linux kali需要百度参考修改权限得文章 root@kali:~# wget http://dl.wdlinux.cn/files/lan ...

  8. bugku ctf 杂项 旋转跳跃 (熟悉的声音中貌似又隐藏着啥,key:syclovergeek)

    做这道题之前先给出工具   MP3Stego 下载地址 链接:https://pan.baidu.com/s/1W2mmGJcrm570EdJ6o7jD7g  提取码:1h1b 题目下载加压后 是一个 ...

  9. csaw密码

    题目:AAoHAR1TIiIkUFUjUFQgVyInVSVQJVFRUSNRX1YgXiJSVyJQVRs=写python脚本: import base64 ciphertext="AAo ...

  10. IP欺骗实验

    实验目的 1.掌握IP欺骗的原理 2.学会利用IPSpoof软件工具进行伪造源IP地址的IP欺骗. 实验内容 使用IPSpoof进行本机IP地址修改,与目标主机通信,进行IP欺骗实验 实验环境描述 1 ...