随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

有两个1~n 的排列A,B, B是1,2,3...n, 给出A每个数位置变化(往后,往前,不变)

问A排列数?

 

观察以下发现是个二分图匹配的模型,考虑dp

 

f[i ][ j]  考虑前i个,有j个未匹配

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <cstring>
using namespace std ;
 const int N=1003;
 const int mod=1e9+7;
 #define int long long
 int n,f[N][N];
 char op[N];
 void solve(int cas){
    int i,j;
    n =strlen(op+1);
    memset(f,0,sizeof f);
    f[0][0]=1;
    for(i=1;i<=n;i++){
         
        for(j=0;j<=i;j++){
            if(op[i]=='U')
            f[i][j]= f[i-1][j-1]+ (f[i-1][j]*j)%mod,
            f[i][j]%=mod;
             
            if(op[i]=='D')
            f[i][j]=((f[i-1][j+1]*(j+1))%mod*(j+1))%mod
            +(f[i-1][j]*j)%mod,
            f[i][j]%=mod;
             
            if(op[i]=='E')
            f[i][j]=f[i-1][j]%mod;
        }  
    }
    printf("Case %d: %d\n",cas,f[n][0]);
 }
 signed main(){
    int tes;cin>>tes;int cas=0;
    while(tes--){
        cin>>(op+1);solve(++cas);
    }
 }

 

posted on   towboat  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示