E. Height All the Same
题目大意:
给你一个n*m 的矩阵,让你在里面填数字代表这个位置的高度,数字的范围是[L,R],有两种操作,第一种就是给一位置的高度加2,第二种就是给两个相邻的位置都加1。
求:填完数字,经过若干次两种操作之后可以使得高度相同的填数字方案数是多少?
题解:
其实这个题目最好自己先慢慢想,如果你水平在蓝名接近紫名了,这个应该是可以自己想出来的。
首先你会发现无论怎么填数字,因为可以在任意一个位置增加任意数量的2,所以所有的数字对2取模,最后都会变成一个01的矩阵,所以就转化为一个01矩阵怎么让其变成全为0或者全为1。
这时候就看第二种操作,会发现这个就是让相邻的两个位置取反。
如果我想消去一个1,则需要相邻有1的存在,消去0同理。如果1没有相邻的1,那么它不会改变1或0的数量,这个时候进行第二个操作的本质是在移动这个1的位置,这一点需要理解。
最后你会发现只要是1或者0是偶数个就一定有解。
如果1是偶数个,则可以把偶数个1移动到一起,然后两两消去变成0。如果0是偶数个同理。
所以如果要有解,那么填完数字之后,奇数的数量或者偶数的数量要有一个是偶数。
所以如果n*m 是一个奇数,因为 奇数=奇数+偶数,所以肯定有解,所以每一个位置可以在 [L,R] 的范围内任意取值,所以答案就是 \((R-L+1)^{nm}\)
如果是 n*m 是一个偶数,设偶数个数为x,奇数个数为y。
则答案应该是 \(C_{nm}^{0}x^{nm}+C_{nm}^{2}x^{nm-2}y^2+C_{nm}^{4}x^{nm-4}y^4...\) 枚举所有的偶数,但是这个不好求啊,高中数学要是学得好应该还是可以想到办法的,因为这个式子的求法高中是学习过的。
上面的式子就等价于 \((x+y)^{nm}-(x-y)^{nm}\) 这个可以自己推一下,很简单。
做完之和会发现这个其实并不是很难,但是呢,如果可以自己独立完成还是很有成就感的,这种自己有一点思路的题目还是建议尽量独立思考,也许花的时间会比较长,但是对思维能力的提升会快一些。
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define inf64 0x3f3f3f3f3f3f3f3f
using namespace std;
const int maxn=2e4+10;
const int mod=998244353;
typedef long long ll;
long long binpow(long long x,long long b)
{
long long ans=1;
while(b){
if (b&1) ans=ans*x%mod;
x=x*x%mod;
b>>=1;
}
return ans;
}
long long inv(long long x,long long mod)
{
long long k=mod-2,ans=1;
while(k)
{
if (k&1) ans=ans*x%mod;
x=x*x%mod;
k>>=1;
}
return ans;
}
int main(){
ll n,m,l,r;
scanf("%lld%lld%lld%lld",&n,&m,&l,&r);
ll x=r-l+1,b=n*m;
ll ans=binpow(x,b);
if(b%2==0) ans=(ans+(x&1))*inv(2,mod)%mod;
printf("%lld\n",ans);
return 0;
}
E. Height All the Same的更多相关文章
- [PyData] 03 - Data Representation
Ref: http://blog.csdn.net/u013534498/article/details/51399035 如何在Python中实现这五类强大的概率分布 考虑下在mgrid上画二维概率 ...
- H5 canvas的 width、height 与style中宽高的区别
Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width=&q ...
- height:100% 布局
常常会碰到需要填满整个浏览器,并且自适应高度的需求.首先肯定会想到给容器设定height:100%,但是会没有效果.原因是body没有高度,所以百分比无法生效. 解决方案:给html,body,标签都 ...
- 页面width与height使用百分比来划分不起作用解决办法--记录六
有时候你写 <div style="width:80%;height:100%;border:1px solid red"></div> <div s ...
- Canvas的width,height 和 样式中Canvas的width,height
控制Canvas的大小,有两种方式: 1:直接设置Canvas标签上的书width,height属性值; 2:通过Css设置Canvas的width,height; 这两种方式,区别是很大的. 1:C ...
- Canvas设置width与height 的问题!
最近因为工作需要,所以就学了一下Html中的Canvas标签. 当我看了一下教程后,自己写了一个hello world的时候,麻烦事就出现了.看下面代码: <!DOCTYPE html> ...
- [LeetCode] Queue Reconstruction by Height 根据高度重建队列
Suppose you have a random list of people standing in a queue. Each person is described by a pair of ...
- [LeetCode] Minimum Height Trees 最小高度树
For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...
- 设置height:100%无效的解决方法
设置height:100%无效的解决方法 刚接触网页排版的新手,常出现这种情况:设置table和div的高height="100%"无效,使用CSS来设置height:" ...
- document.documentElement.clientHeight 和 $(window).height() 无法正确获取页面可视区高度
背景: 弹出层插件(自适应) 实现过程中突然发现在获取可视区高度时,无论document.documentElement.clientHeight 还是 $(window).height()都无法正确 ...
随机推荐
- 三个步骤就能让你轻松掌握Python爬虫
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:NicePython PS:如有需要Python学习资料的小伙伴可以加 ...
- G - Harmonic Number (II) LightOJ - 1245
算是一个找规律的题目吧. 枚举前sqrt(n)个数,数i出现的次数为n/i-n/(i+1),对答案的贡献为(n/i-n/(i+1))*i. 对于sqrt后边的数,可以直接由n/i获得,并且一定只出现一 ...
- 杭电 逃离迷宫 BFS
给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位 ...
- ppt和pptx转图片完整代码,解决2003版和2007版中文乱码问题
引入所需依赖,注意poi版本,新版本不支持,最好使用和我一样的版本. <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --& ...
- linux CVE-2019-14287 Sudo提权漏洞
CVE-2019-14287 sudo介绍 sudo,也就是以超级管理员身份运行(superuser do)的意思.sudo 是 Linux 中最常使用的重要实用程序之一,它功能十分强大,几乎安装在每 ...
- python web的进化历程
对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 阶段1 socket服务端和客户端都自己编写 实现访问8080端口,返回一个'hello wo ...
- Jmeter系列(5)- jmeter.properties常用配置项讲解
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html jmeter.properties 所 ...
- 将jar包发布到maven中央仓库
将jar包发布到maven中央仓库 最近做了一个swagger-ui的开源项目,因为是采用vue进行解析swagger-json,需要前端支持,为了后端也能方便的使用此功能,所以将vue项目编译后的结 ...
- 团队题目——TD课程通
一.团队介绍 团队名称:精神小伙成双队 团队成员:冯静妃(博客地址:https://www.cnblogs.com/fengjingfei/) 李佳伟(博客地址:https://www.cnblogs ...
- 小白必看,Python 各种下划线都是啥意思_、_xx、xx_、__xx、__xx__、_classname_
我们在定义一些变量或者方法的时候,常常会用到下划线,在 Python 中,下划线可是很有用处的哟,比如变量,有些是一个下划线开头的(_xx),有些是两个下划线开头的(__xx),有些是在名称的结尾添加 ...