码迷,mamicode.com
首页 > 其他好文 > 详细

CF R630 div2 1332 E Height All the Same

时间:2020-04-02 10:29:51      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:problem   方案   http   ==   偶数   def   std   put   ref   

LINK:Height All the Same

比赛的时候 被这道题给打自闭了 还有1个多小时的时候开始想 想了30min 无果 放弃治疗。

心态炸了 F不想看了 应该要把题目全看一遍的 下次不能这样了。

首先考虑总共的方案数 \((nm)^{R-L+1}\)

你发现 什么都没有了 开始分析性质。

这张矩阵图 完全可以变成01矩阵经过每一个格子不断加2 最后统一减去某个值会变成这个样子。

我们想让这个01矩阵变成全0或者全1.

开始手玩 \(1*1\) 的矩阵可以发现所有方案都合法 \(1*3\)的也是如此 考虑\(1*5\)的 发现也是如此。

\(1*4\)的就不行了。考虑\(2*2\)的发现不行 考虑\(2*3\)发现也不行 \(2*4\)也不行...

考虑\(3*3\)的 发现可以了....

大力猜结论 奇数个格子都是可以的。

偶数的格子可能可以可能不可以。

经过无数次的试验+大力猜结论 可以发现 当0或1的某个的数量为偶数的时候就可以。剩下的则不行。

这个还是不难猜的 毕竟是从偶数个格子过来的。

那么其实就等价于对于偶数个格子我们进行计算。

给每个格子分配一个权值 最后看他们的奇偶性。

可以发现都为奇数的时候 异或和为奇数 我们给依次给每个格子赋值即可f[i][j]表示前i个格子奇数个偶数或奇数 或偶数个偶数或奇数。

利用矩阵快速幂转移即可。因为一共有nm个格子。

考虑另外一种做法 统计不合法方案吧 考虑有奇数个格子为1剩下的奇数个格子为偶数。

那么方案为\(\sum_{i=1}^{nm}\)[(i&1)==1]\(C(nm,i)w1^{i}w2^{nm-i}\)

这个东西显然和 二项式定理有关。

不难得到上述式子等于\(((w1+w2)^{nm}-(w2-w1)^{nm})/2\)

这道题关键是猜出结论。

const ll MAXN=100010;
ll n,m,L,R;
inline ll ksm(ll b,ll p)
{
	if(b==mod)return 0;
	p=p%(mod-1);
	ll cnt=1;
	while(p)
	{
		if(p&1)cnt=cnt*b%mod;
		b=b*b%mod;p=p>>1;
	}
	return cnt;
}
int main()
{
	freopen("1.in","r",stdin);
	get(n);get(m);get(L);get(R);
	if((n*m)&1){putl(ksm(R-L+1,n*m));}
	else
	{
		ll w1=(R-L+1)/2;
		ll w2=w1;
		if((R-L+1)&1)++w1;
		putl((ksm(w1+w2,n*m)+ksm(w1-w2,n*m))%mod*ksm(2,mod-2)%mod);
	}
	return 0;
}

CF R630 div2 1332 E Height All the Same

标签:problem   方案   http   ==   偶数   def   std   put   ref   

原文地址:https://www.cnblogs.com/chdy/p/12617863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!