zoukankan      html  css  js  c++  java
  • 2020 CCPC Wannafly Winter Camp Day1 C. 染色图

    2020 CCPC Wannafly Winter Camp Day1 C. 染色图

    定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任何一条边 (u,v),都有 f(u)≠f(v)。

    定义函数 g(n,k) 的值为所有包含 n 个点的无自环、无重边的 k 可染色无向图中的边数最大值。举例来说,g(3,1)=0,g(3,2)=2,g(3,3)=3。

    现在给出三个整数 n,l,r,你需要求解:((sum_{i=l}^rg(n,i))mod998244354)

    输入格式:

    第一行输入一个整数 (T(1≤T≤10^3)),表示数据组数。

    对于每组数据,输入三个整数 (n,l,r(1≤l≤r≤n≤10^9))

    输出格式

    对于每组数据,输出一行一个整数表示答案。

    输入样例:

    5
    3 1 1
    3 2 2
    5 2 4
    10 3 9
    1000 123 789
    

    输出样例:

    0
    2
    23
    280
    332539617
    

    时间限制: 1000 ms

    内存限制: 256 MB

    代码长度限制: 16 KB

    分析

    n个点,m种颜色,可以分成(m)堆,每堆的颜色都是相同的,这样就会有(n\%m)堆有(n/m+1)个点,(m-n\%m)堆有(n/m)个点,堆与堆之间的点都是要两两连线的,而对于堆中的点,是不能有连线的,所以就是一个大的完全图减去m个小的完全图。将公式推出来之后,根据数据范围可知不可暴力,可以对每个(n/m)的取值,求出对应的([l,r]),然后进行计算。

    [{n choose 2} - n\%m imes{lceil{nover m} ceil choose 2}-(m-n\%m) imes {lfloor{nover m} floor choose 2} ]

    [Downarrow ]

    [{n choose 2} - lfloor {nover m} floor imes n + lfloor {n over m} floor * (lfloor {nover m} floor + 1)*m / 2 ]

    枚举(lfloor {nover m} floor)的值,求出对应的[l,r]

    const int mod = 998244353;
    int T;
    ll n,l,r;
    int main()
    {
        cin >> T;
        while(T--){
            cin >> n >> l >> r;
            ll res = (r - l + 1) * (n * (n-1) / 2 % mod)%mod;
            for(int i = l;i <= r;i = d+1){
                ll tmp = n / i;
                ll d = n / i ? min(n / tmp, r) : r; //求出商为tmp的r
                ll num = d - i + 1; //区间长度
                res = (res - num * tmp % mod * n % mod + tmp * (tmp + 1) / 2 % mod * num % mod * (d + i) / 2 + mod) % mod;
            }
            cout << res << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    Linux内核RPC请求过程
    二分图
    Java实现 蓝桥杯 算法提高 合并石子
    Java实现 蓝桥杯 算法提高 合并石子
    Java实现 蓝桥杯 算法提高 摩尔斯电码
    Java实现 蓝桥杯 算法提高 摩尔斯电码
    Java实现 蓝桥杯 算法提高 文本加密
    Java实现 蓝桥杯 算法提高 文本加密
    Java蓝桥杯 算法提高 九宫格
    Java蓝桥杯 算法提高 九宫格
  • 原文地址:https://www.cnblogs.com/1625--H/p/12185240.html
Copyright © 2011-2022 走看看