zoukankan      html  css  js  c++  java
  • [洛谷P5023][题解]填数游戏

    0.一些东西

    原题NOIp2018
    毒瘤找规律差评

    1.解法

    这道题数据较小,可以暴力打表找规律(没打)。
    当然正解是数学推导,我们接下来大致讲一下思路。
    注:下文中“对角线”均指左下-右上(副对角线)。
    首先给出两个引理及简略证明:
    引理1:任一对角线从左下到右上填数单调不增。
    证明很简单,照题意模拟即可,此处不再赘述。
    引理2:若((x,y-1))((x-1,y))填数相同,则以((x,y))为左上角的矩形每条对角线上填数分别相同。
    证:可运用反证法,设在对应矩形(红框)中出现了对角线上填数不等的情况,
    引理2
    蓝色与黄色路径即不满足题意,证毕。
    设最终答案为(ans(n,m))
    于是我们通过打表可得:
    1.(ans(n,m)=ans(m,n))
    证:将(n imes m)的矩形和填的数都反过来,可以理解为将每条路径的(w)(s)均反过来,结果显然不变。
    2.(ans(n,m+1)=3 imes ans(n,m))
    证明留作练习。(其实是我也不会证,以后补上这里)

    由于有了两个引理中的限制,我们可以手玩每种情况,算出答案。
    情况1:(n=m),此时有如下几种情况。
    1
    答案为(8^{n-1})
    2
    答案为(5 imes 2^{3n-7})
    3
    这种情况不太好办,我们发现左边的两列不确定性太大,不能直接计算。
    但是我们可以枚举!方式为枚举到哪条绿线出现了相同填数。
    这样我们就可以算出这种情况的答案,做一个等比数列求和即可得到答案。
    (不写了不写了)
    4
    与上面是完全对称的,可以直接套用。

    此时就可以推出(ans(n,n))了。(累死了直接放结果)
    (frac{83 imes8^n+5 imes2^{n+7}}{384})
    (ans(n,n+1))同理,(frac{83 imes8^{n}+2^{n+8}}{128})

    此时请注意,我们刚刚推的都是(nge4)的情况,其余情况如下:
    (n=1,ans(1,m)=2^m;)
    (n=2,ans(2,m)=4 imes3^{m-1};)
    (n=3,ans(3,m)=112 imes3^{m-3};)
    这样就可以推出任意(ans(n,m))了。

    2.代码

    #define mod 1000000007
    int n,m;
    inline int pw(int a,int b){
    	int ans=1;
    	while(b){
    		if(b&1)ans=ans*a%mod;
    		a=a*a%mod,b>>=1;
    	}
    	return ans;
    }
    signed main(){
    	Read(n),Read(m);
    	if(n>m)swap(n,m);
    	if(n==1)cout<<pw(2,m)<<endl;
    	else if(n==2)cout<<4*pw(3,m-1)%mod<<endl;
    	else if(n==3)cout<<112*pw(3,m-3)%mod<<endl;
    	else {
    		if(m==n)cout<<(83*pw(8,n)%mod+5*pw(2,n+7)%mod)%mod*pw(384,mod-2)%mod<<endl;
    		else cout<<pw(3,m-n-1)*(83*pw(8,n)%mod+pw(2,n+8))%mod*pw(128,mod-2)%mod<<endl;
    	}
    	return 0;
    }
    

    3.完结撒花

  • 相关阅读:
    Kafka笔记—可靠性、幂等性和事务
    简易 bokeh 图像散景效果算法实现
    unisound_asr 云知声 语音识别 python版接口
    分享用于学习C++音频处理的代码示例
    集 降噪 美颜 虚化 增强 为一体的极速图像润色算法 附Demo程序
    快速双边滤波 附完整C代码
    pixel art之 hqx 算法
    这一路走来,冷暖自知 (附算法demos)
    票据OCR前预处理 (附Demo)
    学习图像算法阶段性总结 (附一键修图Demo) 2016.04.19更新demo
  • 原文地址:https://www.cnblogs.com/juruoajh/p/13697592.html
Copyright © 2011-2022 走看看