• CF R630 div2 1332 E Height All the Same


    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;
    }
    
  • 相关阅读:
    使群辉支持NTFS(未完善)
    docker 解决 Dockerfile同级文件有其他文件 导致docker build包越来越大
    nginx location配置前后端地址
    前端 Umi框架自带的proxy功能请求后端地址
    linux常用命令
    arthas的使用(正常部署+服务docker部署)
    linux
    oracle行转列,列转行函数的使用(listagg,xmlagg)
    oracle 使用函数 ROW_NUMBER() OVER(PARTITION BY 列 ORDER BY 列 排序 ),自关联日志表,将列数据转换为 行数据
    oracle merge into用法
  • 原文地址:https://www.cnblogs.com/chdy/p/12617863.html
Copyright © 2020-2023  润新知