zoukankan      html  css  js  c++  java
  • [CF1332E] Height All the Same

    对一个 (n imes m) 的矩阵,每个位置有权值 (a_{ij}),每次操作你可以将一个位置 (+2),或将四相邻的两个位置各 (+1)。如果一个矩阵经过若干次操作,可以使得所有位置权值相同,我们称它为好矩阵。问有多少个好矩阵满足大小为 (n imes m),且每个位置的权值都在 ([L,R]) 内。

    Solution

    首先观察到,如果 (nm) 是奇数,一定合法;如果 (nm) 是偶数,则当且仅当 (sum_{(i,j)} a_{i,j}) 是偶数时合法

    (nm) 是奇数的方案数位 ((r-l+1)^{nm})

    (nm) 是偶数时,若 (r-l+1) 是偶数,则所有方案中总和奇偶各占据一半,故 ((r-l+1)^{nm}/2);若 (r-l+1) 是奇数,则显然总和为偶数的比总和为奇数的方案数多 (1),于是答案为 (((r-l+1)^{nm}+1)/2)

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int mod = 998244353;
    int n,m,l,r,k;
    
    int qpow(int p,int q) {
        return (q&1?p:1) * (q?qpow(p*p%mod,q/2):1) % mod;
    }
    
    signed main() {
        cin>>n>>m>>l>>r;
        k=r-l+1;
        if(n*m%2) cout<<qpow(k,n*m);
        else if(k&1) cout<<(qpow(k,n*m)+1)*((mod+1)/2)%mod;
        else cout<<(qpow(k,n*m))*((mod+1)/2)%mod;
    }
    
    
  • 相关阅读:
    Django入门
    html语言
    elasticsearch基本接口使用
    linux随笔
    mysql基础操作
    mysql存储引擎
    MySQL字符集
    并发编程之多进程
    异常处理
    socket编程
  • 原文地址:https://www.cnblogs.com/mollnn/p/12610680.html
Copyright © 2011-2022 走看看