zoukankan      html  css  js  c++  java
  • [BZOJ 3622]已经没有什么好害怕的了(Dp+容斥原理)

    Description

    图片略

    Solution

    对啊,已经没有什么好害怕的了

    没有头的麻美学姐还是很萌的(雾

    排序预处理p[i]为b中小于a[i]的最大的数的标号

    f[i][j]表示前i个糖果使得糖果大于药片的至少有j组

    则f[i][j]=f[i-1][j]+f[i-1][j-1]*(p[i]-j+1)

    容斥得g[j]=f[n][j]*(n-j)!-∑g[k]*C(j,k) (j+1<=k<=n)

    (Update:今天发现这个好像是广义容斥原理?)

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #define MAXN 2002
    #define Mod 1000000009
    typedef long long LL;
    using namespace std;
    int n,k,a[MAXN],b[MAXN],p[MAXN];
    LL f[MAXN][MAXN],c[MAXN][MAXN],g[MAXN];
    int read()
    {
        int x=0,f=1;char c=getchar();
        while(c<'0'||c>'9'){
            if(c=='-')f=-1;c=getchar();
        }
        while(c>='0'&&c<='9'){
            x=x*10+c-'0';c=getchar();
        }
        return x*f;
    }
    int main()
    {
        n=read(),k=read();
        if((n+k)%2)
        {printf("0");return 0;}
        k=(n+k)/2;
        for(int i=1;i<=n;i++)
        a[i]=read();
        for(int i=1;i<=n;i++)
        b[i]=read();
        sort(a+1,a+1+n);
        sort(b+1,b+1+n);
        int t=1;
        for(int i=1;i<=n;i++)
        {
            while(a[i]>b[t]&&t<=n)t++;
            p[i]=t-1;
        }
        f[0][0]=1;
        for(int i=1;i<=n;i++)
        for(int j=0;j<=i;j++)
        {
            if(j)f[i][j]=(f[i-1][j-1]*max(0,p[i]-j+1))%Mod;
            f[i][j]=(f[i][j]+f[i-1][j])%Mod;
        }
        c[1][0]=1;c[1][1]=1;
        for(int i=2;i<=n;i++)
        for(int j=0;j<=i;j++)
        {if(!j)c[i][j]=1;c[i][j]=(c[i-1][j-1]+c[i-1][j])%Mod;}
        for(int i=n;i>=k;i--)
        {
            g[i]=f[n][i];
            for(int j=1;j<=n-i;j++)
            g[i]=(g[i]*j)%Mod;
            for(int j=i+1;j<=n;j++)
            {
                g[i]=(g[i]-(g[j]*c[j][i])%Mod+Mod)%Mod;
            }
        }
        printf("%d",g[k]);
        return 0;
    } 
  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/Zars19/p/6706723.html
Copyright © 2011-2022 走看看