zoukankan      html  css  js  c++  java
  • Codeforces Round #439 (Div. 2) C题

    题意:红蓝粉村庄分别有a,b,c个,建桥要求同色的村庄,要么不可达,要么最短路至少为3,问建立道路的方案数。

    分析:题意很明显就是,同色村庄内部不能连边,只能异色村庄染色,而且要保证是个偶图。

    那其实就是问分别为(a,b) (a,c) (b,c)的点集,偶图的数目,组合数搞一下就好了。

    注意取模,大数据验证下是否合法。

     1 #include<bits/stdc++.h>
     2 #define LL long long
     3 #define maxn 5100
     4 const LL Mod = 998244353;
     5 using namespace std;
     6 LL pre[maxn],C[maxn][maxn];
     7 LL ans = 1, res;
     8 int n, a, b, c;
     9 int main(){
    10     pre[0] = 1;
    11     for(int i = 1; i <= 5000; i ++){
    12         pre[i] = (pre[i-1] * (LL)i) % Mod;
    13     }
    14     C[0][0] = 1;
    15     for(int i = 1; i <= 5000; i ++){
    16         C[i][0] = C[i][i] = 1;
    17         for(int j = 1; j < i; j ++){
    18             C[i][j] = (C[i-1][j-1] + C[i-1][j]) % Mod;
    19         }
    20     }
    21     cin >> a >> b >> c;
    22     n = min(a,b), res = 0; 
    23     for(int i = 0; i <= n; i ++){
    24         res = ((res + ((((C[a][i] * C[b][i]) % Mod) * pre[i]) % Mod)) % Mod);
    25     }
    26     ans = (ans * res) % Mod;
    27     n = min(c,b), res = 0; 
    28     for(int i = 0; i <= n; i ++){
    29         res = ((res + ((((C[c][i] * C[b][i]) % Mod) * pre[i]) % Mod)) % Mod);
    30     }
    31     ans = (ans * res) % Mod;
    32     n = min(a,c), res = 0; 
    33     for(int i = 0; i <= n; i ++){
    34         res = ((res + ((((C[a][i] * C[c][i]) % Mod) * pre[i]) % Mod)) % Mod);
    35     }
    36     ans = (ans * res) % Mod;
    37     cout << ans % Mod;
    38     return 0;
    39 }
  • 相关阅读:
    网站服务化
    网站服务化
    dubbo 服务化
    dubbo 服务化
    elk 搭建
    poj1840
    poj1840
    poj2299
    poj2299
    poj2388
  • 原文地址:https://www.cnblogs.com/poler/p/7636786.html
Copyright © 2011-2022 走看看