???HDU4689???Derangement??????????????????
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了???HDU4689???Derangement??????????????????相关的知识,希望对你有一定的参考价值。
?????????code ?????? cst number char http ?????? ?????? ==
???HDU4689???Derangement??????????????????
??????
Vjudge
????????????(+-)??????????????????????????????(n)???
?????????(i)??????(+)?????????(p_i>i)?????????(p_i<i)
????????????????????????([1,n])??????????????????
??????
????????????????????????(p_i<i)???????????????(RabbitNumbering)???
??????????????????????????????????????????????????????
??????????????????(+)?????????????????????????????????????????????????????????????????????(RabbitNumbering)????????????????????????????????????
????????????????????????????????????
?????????????????????
??????????????????????????????????????????(f[i][j])????????????????????????(i)???????????????(j)???(+)????????????
?????????????????????(+)?????????????????????
????????????????????????(i)?????????????????????(+)??????????????????????????????
????????????????????????????????????(-)??????
???????????????????????????(-)?????????????????????????????????
????????????????????????(j)???(+)????????????(j)???????????????????????????(-)?????????????????????
????????????????????????(i)???????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????
#include<cstdio>
#include<cstring>
#define ll long long
ll f[22][22];
char ch[22];
int n;
int main()
{
while(scanf("%s",ch+1)!=EOF)
{
n=strlen(ch+1);memset(f,0,sizeof(f));f[0][0]=1;
for(int i=1;i<=n;++i)
if(ch[i]=='+')
for(int j=1;j<=i;++j)f[i][j]=f[i-1][j-1]+f[i-1][j]*j;
else
for(int j=0;j<=i;++j)f[i][j]=f[i-1][j+1]*(j+1)*(j+1)+f[i-1][j]*j;
printf("%lld
",f[n][0]);
}
}
以上是关于???HDU4689???Derangement??????????????????的主要内容,如果未能解决你的问题,请参考以下文章
SDUT 2021 Winter Individual Contest - N(B-Derangement)