牛客练习赛71-C数学考试

数学考试

https://ac.nowcoder.com/acm/contest/7745/C

首先我们要明白dp[i]表示的是什么,看了好久的别人的代码才看懂了(i am vegetable),dp[i]表示的是长度为p[i],满足前i-1个限制条件的合法子串的个数!(看不懂就看例子)
举个例子,此时的限制条件有3个,分别是p[1]=3,p[2]=5,p[3]=7,那么dp[1]就是表示满足前0个限制条件长度为p[1]=3的合法子串的个数,很明显前0个是没有的,那么dp[1]=3!-0,dp[2]就是表示满足前1个限制条件长度为p[2]=5的合法子串的长度,dp[2]=5!-(不合法长度),那么不合法长度是多少?仔细看下题目:
第i个限制条件pi表示前pi个数不能是1-pi的排列的排列
dp[1]就是1-3的排列,那么它对于dp[2]来说肯定是不合法的,那有多少种,dp[2]=5,那么第4、5个位置肯定有2!种排列,就是4、5或者5、4,那么dp[2]=5!-dp[1]乘以2!
dp[3]类推,dp[3]=7!-(不合法长度),不合法长度等于什么呢?很明显,dp[1]表示1-3的排列,此时这个条件对于dp[3]是不合法的,因为dp[3]要满足前i-1个条件(3-1=2)的限制,那么排列有dp[1]乘以(7-3)!,而dp[2]表示的是满足第一个条件的长度为5的合法子串个数,很明显,dp[3]要满足第二个限制条件,dp[2]的排列对于dp[3]来说同样是不合法的,那无法就是dp[2](7-5)!,合起来就是dp[3]=5!-dp[1]2!-dp[2]*2!

#include<iostream>
#include<cstdio>
#include<algorithm>
#define mod 20000311
typedef long long ll;
using namespace std;
ll p[2010];//限制条件
ll dp[2010];//表示在长度为p[i]的串满足前i-1个限制条件的合法长度
ll f[2010];
int main (){
    //初始化,阶乘
    f[0]=1;
    for(int i=1;i<=2000;i++){
        f[i]=(f[i-1]*ll(i))%mod;
    }
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>p[i];
    }
    sort(p+1,p+m+1);
    m++;
    p[m]=n;
    for(int i=1;i<=m;i++){
        dp[i]=f[p[i]];//总排列数
        for(int j=1;j<i;j++){
            dp[i]=(dp[i]-(dp[j]*f[(p[i]-p[j])])%mod+mod)%mod;
        }
    }
    cout<<dp[m]<<endl;
}
全部评论
楼主最后那里应该是dp[3]=7!-dp[1]*(7-3)!-dp[2]*(7-5)!吧
点赞 回复 分享
发布于 2020-10-15 11:12

相关推荐

03-15 20:26
已编辑
电子科技大学 C++
T3题面:给一个3e5数组,每次询问长度为len的子数组乘积的和,如果子数组乘积&gt;1e9,则视为0.赛后一分钟想出来了,比赛时打了个暴力+线段树注意到1e9大约是2^30,&nbsp;因此len长度如果&gt;30就直接输出0,30以内做一个记忆化就行,复杂度O(30*n)感觉是以前比赛做过的题,忘了怎么做了。。。---upd:&nbsp;忘了数据范围了,如果有0,1的话那这样也不行
blueswiller:给出一个做法,刚刚才想到,应该没问题,时间复杂度为 O(max(30n, nlogn)): 1. 根据 0 切分数组。2. 现在问题转化为>=1 的情况,我们首先维护每一个数前一个 > 1 的数的位置,同时维护一个长度的差分数组,初始值全为 0。3. 我们从每一个数 i 开始向前跳,至多跳 30 次,维护这个过程中的乘积,于是得到 30 个区间加和。举例:假设从 j1 跳到 j2 ,相当于对查询长度 (i- j1 + 1) 至 (i - j2) 贡献 a_i * ... * a_j1。4. 对于所有区间加和,我们采用差分数组结合树状数组对其进行维护,由于长度至多为 n ,树状数组构建的复杂度为 O(nlogn),于是,构建阶段的复杂度为 O(max(30n, nlogn))。在线单次查询的复杂度为树状数组查询的复杂度 O(logn)。
投递淘天集团等公司10个岗位 > 笔试
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务