CF1332E Height All the Same 题解
考虑到可以在一个格子上码上两个方块,易得如果每个格子奇偶性相同,则一定可以到达同样高度。对于任意点对 \((x,y)\),我们可以通过找到一条路,路径上可以互达的两点有一边相邻,\(x\to b\to c\dots\to y\),每次增加相邻两个点,这样除了 \(x,y\) 各自加 \(1\),其余的点均加 \(2\),奇偶性不变。
所以,我们每次可以改变两个点的奇偶性。对于 \(nm\) 为奇数的情况,我们一定可以找到一种奇偶性的数有偶数个,每次修改一对为另一种奇偶性。也就是说,对于任意一种初始情况,均可以修改至完全相同。数量为 \((r-l+1)^{nm}\)。
对于 \(nm\) 为偶数的情况,只有奇偶数个数均为偶数时才满足要求。考虑枚举奇数数量方案数累加,运用乘法原理求出每种情况的方案数。我们先选位置,如果现在有 \(i\) 个奇数,则有 \(C_{nm}^{i}\) 种选法。设 \([l,r]\) 有 \(a\) 个奇数,\(b\) 个偶数,则奇数有 \(a^i\) 种方法,偶数有 \(b^{nm-i}\) 种选法。
\]
看到这个式子,容易联想到二项式定理。但是这个式子不好转化,需要转化为对于每一个 \(i\) 都有一个计算式。我们考虑用整体减去部分,可是还是不行。顺着这个思路,可以想到利用 \(-1\) 的幂构造摆动数列,当 \(i\) 为奇数时,\((-1)^i\) 刚好为负数,表示减去奇数项;当 \(i\) 为偶数时,\((-1)^i\) 为正数,尽管有重复计算,可是恰好答案中的每种情况算了两遍,最后除以 \(2\) 即可。
\]
直接利用二项式定理进行转化,达到复杂度 \(O(\log(nm))\)。
\]
#include <bits/stdc++.h>
using namespace std;
long long n,m,l,r,mod=998244353;
long long power(long long a,long long p)
{
long long x=a,ans=1;
while(p)
{
if(p%2==1)ans=ans*x%mod;
p/=2;
x=x*x%mod;
}
return ans;
}
int main()
{
scanf("%lld%lld%lld%lld",&n,&m,&l,&r);
if(n*m%2==1)printf("%lld",power(r-l+1,n*m));
else
{
long long a=(r-l+1)/2,b=0;
if((r-l+1)%2==1&&l%2==1)a++;
b=r-l+1-a;
printf("%lld",(power(r-l+1,n*m)+power((b-a+mod)%mod,n*m))%mod*499122177%mod);
}
return 0;
}
CF1332E Height All the Same 题解的更多相关文章
- POJ 3263 Tallest Cow 题解
题目 FJ's \(N (1 ≤ N ≤ 10,000)\) cows conveniently indexed 1..N are standing in a line. Each cow has a ...
- LeetCode Binary Search Tree Iterator
原题链接在这里:https://leetcode.com/problems/binary-search-tree-iterator/ Implement an iterator over a bina ...
- [PyData] 03 - Data Representation
Ref: http://blog.csdn.net/u013534498/article/details/51399035 如何在Python中实现这五类强大的概率分布 考虑下在mgrid上画二维概率 ...
- CF1036A Function Height 题解
Content 给定一个坐标系,在它的 \(x\) 轴上有 \(2n+1\) 个点 \(P_0,P_1,P_2,...,P_{2n}\),其中对于 \(0\leqslant i\leqslant 2n ...
- LeetCode Minimum Height Trees
原题链接在这里:https://leetcode.com/problems/minimum-height-trees/ 题目: For a undirected graph with tree cha ...
- LeetCode OJ 题解
博客搬至blog.csgrandeur.com,cnblogs不再更新. 新的题解会更新在新博客:http://blog.csgrandeur.com/2014/01/15/LeetCode-OJ-S ...
- 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...
- 算法(第四版)C# 习题题解——3.1
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更方便的版本见:https ...
- 算法(第四版)C# 习题题解——2.5
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更方便的版本见:https ...
- 算法(第四版)C# 习题题解——2.3
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更为方便的版本见:http ...
随机推荐
- 基于注解的 AOP 配置
第一步:在 spring 配置文件中开启 spring 对注解 AOP 的支持 <!-- 开启 spring 对注解 AOP 的支持 --> <aop:aspectj-autopro ...
- eolinker环境变量配置:用例执行前给把某参数设置为全局参数的方法
特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 1.场景分析 注册会员流程共计有添加数据,校验数据,提交 ...
- app自动化设计
一.在pom.xml引入依赖 testng:测试框架用例管理 appium:需要用到appium log4j:日志集成 allure:生成报告 二.po分层 分为基础层,page层,用例层,xml文件 ...
- sql学习day3——case when的使用
1,当前表 course_master open_course ...
- jetbrains这是作啥妖呢,用了好久都没有问题,现在这是咋了?
rider今天更新了下2025.1 数据库驱动下载不来: 插件不能正常访问: 清理下用户的配置目录: %UserProfile%\AppData\Local\JetBrains %UserProfil ...
- Java IO--利用内存流实现转大写的操作
package demo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java ...
- 在Ubuntu Server上安装Checkmk监控系统
一.安装前准备 更新系统并安装依赖: sudo apt update && sudo apt upgrade -y sudo apt install -y wget apt-trans ...
- OSS 上传和删除图片 Python SDK
最近在搞一些全栈的小项目, 涉及到图片的上传, 删改等操作, 想着还是用这个云服务器来整一波, 阿里云的 OSS对象存储, 40G 1年9块钱, 值得拥有! 前提 购买了阿里云 OSS 服务 创建了 ...
- Excel 拼接为 SQL 并打包 exe
关于 Excel 拼接 sql 这个操作, 我已经整过好几篇了, 当然在工作中也是蛮常用的, 今天主要是来写个终篇, 彻底结束它, 然后将代码进行打包为 exe 这样的桌面小软件, 除了自己用, 也可 ...
- [已解决] Compilation error ptxas fatal : Value ‘sm_30‘ is not defined for option ‘gpu-name‘
在用cmake编译cuda程序时,总是报Compilation error ptxas fatal : Value 'sm_30' is not defined for option 'gpu-nam ...