• ABC232


    E

    分别算横坐标和纵坐标

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6+5;
    typedef long long LL;
    const LL mod=998244353;
    LL dx[N][2],dy[N][2];
    LL f[N],inv[N];
    int H,W,K;
    LL C(int a,int b)
    {
        return f[a]*inv[b]%mod*inv[a-b]%mod;
    }
    LL ksm(LL a,LL n)
    {
        LL res=1;
        while(n)
        {
            if(n&1)res=a%mod*res%mod;
            a=a%mod*a%mod;
            n>>=1;
        }
        return res;
    }
    void init()
    {
        f[0]=inv[0]=1;
        for(int i=1;i<=K;i++) f[i]=f[i-1]*i%mod;
        inv[K]=ksm(f[K],mod-2);
        for(int i=K-1;i;i--) inv[i]=inv[i+1]*(i+1)%mod;
    }
    void solve()
    {
        scanf("%d %d %d",&H,&W,&K);
        init();
        int x1,x2,y1,y2;
        dx[0][1]=dy[0][1];
        scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
        if(x1==x2) dx[0][1]=1;
        else dx[0][0]=1;
        if(y1==y2) dy[0][1]=1;
        else dy[0][0]=1;
        for(int i=1;i<=K;i++)
        {
            dx[i][1]=(dx[i-1][0])%mod;
            dx[i][0]=((H-1)%mod*dx[i-1][1]%mod+(H-2)%mod*dx[i-1][0]%mod)%mod;
            dy[i][1]=(dy[i-1][0])%mod;
            dy[i][0]=((W-1)%mod*dy[i-1][1]%mod+(W-2)%mod*dy[i-1][0]%mod)%mod;
        }
        LL ans=0;
        for(int i=0;i<=K;i++)
        {
            LL res=dx[i][1]*dy[K-i][1]%mod;
            res=res*C(K,i)%mod;
            ans=(ans+res)%mod;
        }
        printf("%lld",ans);
    
    }
    int main()
    {
        //int t;
        //scanf("%d",&t);
        //while(t--)
        //{
            solve();
        //}
    }
    View Code

    F

    把n!转换成2n

    #include <bits/stdc++.h>
    #define ll long long
    #define ull unsigned long long
    #define rep(i,a,b) for(ll i=(a);i<=(b);i++)
    #define dec(i,a,b) for(ll i=(a);i>=(b);i--)
    #define pll pair<ll,ll>
    using namespace std;
    ll INF = 0x7f7f7f7f7f7f7f7f;
    const int N = 2e5 + 5;
    ll mod = 998244353;
    
    ll n, x, y;
    ll dp[1 << 18], a[20], b[20];
    
    ll f(ll s, ll x) {
        ll res = 0;
        rep(i, 0, n-1) {
            if ((s & (1ll << i)) == 0 && i < x)
                res++;
        }
        return res;
    }
    
    int main() {
    #ifdef _DEBUG
        freopen("input.txt", "r", stdin);
        //freopen("output.txt", "w", stdout);
    #endif
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        cin >> n >> x >> y;
        rep(i, 1, n)
            cin >> a[i];
        rep(i, 1, n)
            cin >> b[i];
        dp[0] = 0;
        for (ll S = 1; S < (1ll << n); S++)
            dp[S] = INF;
        for (ll S = 0; S < (1ll << n); S++) {
            ll sz = 0;
            rep(i, 0, n-1) {
                if (S & (1ll << i))
                    sz++;
            }
            rep(i, 0, n-1) {
                if (S & (1ll << i))
                    continue;
                dp[S | (1ll << i)] = min(dp[S | (1ll << i)], dp[S] + abs(a[i+1] - b[sz + 1]) * x + f(S, i) * y);
            }
        }
        cout << dp[(1 << n) - 1] << '\n';
        return 0;
    }
    View Code
  • 相关阅读:
    Ajax实现异步上传图片
    python文章的抓取
    python
    Python的MySQLdb模块安装
    import _mysql----ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。
    安装第三方模块时遇到Python version 2.7 required, which was not found
    beautifulSoup安装
    安装setuptools和pip
    python 的简单抓取图片
    python
  • 原文地址:https://www.cnblogs.com/dealer/p/15784592.html
Copyright © 2020-2023  润新知