传送门

文章目录

  • 题意:
  • 思路:

题意:



思路:

由于n,mn,mn,m都很大,不难猜到这是一个公式题。
首先化简题目中的两个操作,第二个操作就是可以让奇偶性相同的位置的高度相同。第一个操作虽然是改变相邻两个的奇偶性,但是仔细分析一下是可以改变任意两个位置的奇偶性,这里不多加证明,所以现在问题就变成了选n∗mn*mn∗m个数,只考虑选的奇偶性。
考虑当n∗mn*mn∗m为奇数的时候,那么选出来的数一定有偶数个奇数或者偶数个偶数,我们都可以用操作111将其转换成全部奇偶性都相同的,所以每个位置选的数任意,答案为(r−l+1)n∗m(r-l+1)^{n*m}(r−l+1)n∗m。
当n∗mn*mn∗m为偶数的时候,由于我们要将其转换成奇偶性相同的数,那么选出来的奇数和偶数的个数一定都是偶数,假设选了xxx个偶数和yyy奇数,答案为∑k=0,2,4,..,2nCnmkxkynm−k\sum _{k=0,2,4,..,2n} \mathrm{C}_{nm}^{k} x^ky^{nm-k}∑k=0,2,4,..,2n​Cnmk​xkynm−k ,我们发现其就是(x+y)nm(x+y)^{nm}(x+y)nm的二项式定理的偶数项,所以答案为(x+y)nm−(x−y)nm2\frac{(x+y)^{nm}-(x-y)^{nm}}{2}2(x+y)nm−(x−y)nm​。
用快速幂算一下就好啦。

// Problem: E. Height All the Same
// Contest: Codeforces - Codeforces Round #630 (Div. 2)
// URL: https://codeforces.com/contest/1332/problem/E
// Memory Limit: 512 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=998244353,INF=0x3f3f3f3f;
const double eps=1e-6;LL n,m,l,r;LL qmi(LL a,LL b) {LL ans=1;a%=mod;while(b) {if(b&1) ans=ans*a%mod;a=a*a%mod;b>>=1; }return ans%mod;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);cin>>n>>m>>l>>r;if(n*m%2==1) printf("%lld\n",qmi(r-l+1,n*m));else {LL a=qmi(r-l+1,n*m);LL b=(r-l+1)%2;a+=b; a%=mod;a*=qmi(2,mod-2); a%=mod;printf("%lld\n",a);}return 0;
}
/**/

Codeforces Round #630 (Div. 2) E. Height All the Same 排列组合相关推荐

  1. Codeforces Round #630 (Div. 2) F. Independent Set 树形dp

    传送门 文章目录 题意: 思路: 题意: 给你一棵树,求这棵树的边导出子图中独立集的数量和,独立集大小可以为000. 思路: 先考虑普通的独立集数量怎么求,无非就是分情况讨论一下选根还是不选根,而这个 ...

  2. Codeforces Round #630 (Div. 2) A~D【思维,数论,字符串,位运算】

    A. Exercising Walk 水题一道:在指定空间内你一定要向各个方向走a,b,c,d步问你能否在规定空间内走完这题的坑点样例都给出来了qwq #include <iostream> ...

  3. Codeforces Round #649 (Div. 2)C. Ehab and Prefix MEXs[排列的构造]

    C. Ehab and Prefix MEXs 题目大意: 解题思路:题目说保证a数组是非递减的,那么如果某位置a[i]!=a[i−1]a[i]!=a[i-1]a[i]!=a[i−1]那么这个位置ii ...

  4. Codeforces Round #715 (Div. 2)

    Codeforces Round #715 (Div. 2) 题号 题目 知识点 A Average Height B TMT Document C The Sports Festival 区间dp ...

  5. Codeforces Round #597 (Div. 2) - BenFromHRBUST

    Codeforces Round #597 (Div. 2) -----比赛传送门----- A - Good ol' Numbers Coloring Problem Description Con ...

  6. Codeforces Round #797 (Div. 3)无F

    Codeforces Round #797 (Div. 3)无F 这打的也太屎了,白天把G补了才知道简单的很,但f还是没头绪呜呜呜 Problem - A - Codeforces Given the ...

  7. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  8. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  9. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

最新文章

  1. 【组队学习】【34期】零基础学python编程思维
  2. 定制化Azure站点Java运行环境(1)
  3. Java实现返回的数据为树形结构
  4. 【数据结构与算法】之深入解析“二叉树的序列化与反序列化”的求解思路与算法示例
  5. vant自定义二级菜单
  6. html树状图右侧_树状图及制作方法(Excel 2016/Excel 2013)
  7. 单点突破,击穿阈值,DevOps转型你需要这样做
  8. 【ArcGIS风暴】ArcGIS快捷键大全
  9. JAVA入门到精通-第6讲-成员属性-成员方法
  10. java生成excel文件步骤_java导出Excel文件的步骤全纪录
  11. Hive 中日志的存放位置
  12. Tensorflow:variable变量和变量空间
  13. 无人驾驶相关文献阅读体会
  14. php花曲线,ps钢笔工具怎么画曲线
  15. python刷网易云_Python脚本用于定时关闭网易云音乐PC客户端
  16. 静态路由和动态路由详解
  17. ARM9嵌入式Linux开发-LCD
  18. ssm毕设项目客房订餐系统s2whx(java+VUE+Mybatis+Maven+Mysql+sprnig)
  19. 推荐系统基础(2):个性化推荐系统简述
  20. (原創) ThinkPad X61安裝過程全紀錄 (NB) (ThinkPad) (X61)

热门文章

  1. 深度学习框架PyTorch与TensorFlow,谁更胜一筹?
  2. 每日一笑 | 我写了一段代码,为什么不能运行呢?
  3. html仿苹果浏览器,完美仿iPhone风格主题 领航浏览器体验
  4. 计算机职称 计算机二级证,国家计算机二级证书含金量有多高
  5. php crypt mysql password_php使用crypt()函数进行加密
  6. 墨迹天气android,墨迹天气Android产品分析
  7. java pojo 是什么_什么是POJO
  8. get+php+mysql_Apache+PHP+MySql 的安装及配置
  9. epublib java_使用Epublib处理epub文件 | 学步园
  10. linux上用的端口转发工具,linux下最简单好用的的端口转发工具