ACM训练日记—1月24日

        今天的学习有点混乱,反而造成时间更紧迫了。

矩阵快速幂

       把矩阵乘积和快速幂结合起来就可以。这一点非常简单,但是这部分题目最难是:

1,判断出题目就是矩阵快速幂来做。    题目:hdoj2276,hdoj4686。

2,根据题目要求推出递推式,并转化为矩阵。   题目:hdoj4686,hdoj5015,hdoj4565。

因为还没读到递推关系和生成函数那一章,矩阵快速幂留了个不该留的尾巴。另外还有hdoj2157这道题方法让我印象深刻。下面简单整理一下吧。

下面部分参考此大佬博客http://blog.csdn.net/wust_zzwh/article/details/52058209

模版:

const int N=10;  
int tmp[N][N];  
void multi(int a[][N],int b[][N],int n)  
{  
    memset(tmp,0,sizeof tmp);  
    for(int i=1;i<=n;i++)  //按照高代里学的,一行成一列(AB),只要A的行数等于B的列数
        for(int j=1;j<=n;j++)  
        for(int k=1;k<=n;k++)  
        tmp[i][j]+=a[i][k]*b[k][j];  
    for(int i=1;i<=n;i++)  
        for(int j=1;j<=n;j++)  
        a[i][j]=tmp[i][j];  
}  
int res[N][N];  
void Pow(int a[][N],int n)  //这里其实就是快速幂。
{  
    memset(res,0,sizeof res);  
    for(int i=1;i<=n;i++) res[i][i]=1;  
    while(n)  
    {  
        if(n&1)  
            multi(res,a,n);//res=res*a;复制直接在multi里面实现了;  
        multi(a,a,n);//a=a*a  
        n>>=1;  
    }  
}

         hdoj2276  Kiki & Little Kiki 2

转自:http://blog.csdn.net/chenzhenyu123456/article/details/48182051

题意:给你N个围成一圈的灯,1号灯的左边是N号灯,N号灯的右边是1号灯。
          这些灯的开关状态在时刻改变,这里给出第i个灯的变化规律(1表示该灯是开着的,0表示该灯是关着的)

这道题确实不好想到用矩阵快速幂,先通过分析灯的变化,推出每个部分灯的变化,最后的出矩阵。其实回看其实也不难。具体的分析上面那位大佬分析的非常到位。感谢大佬。

         hdoj2157

转自:http://blog.csdn.net/chenzhenyu123456/article/details/48136727

题意:每次上课都走不同的路线去教室, 但是由于时间问题, 每次只能经过k个地方, 比方说, 这次葱头决定经过2个地方, 那他可以先去问鼎广场看看喷泉,再去教室, 也可以先到体育场跑几圈, 再到教室. 他非常想知道, 从A 点恰好经过k个点到达B点的方案数, 当然这个数有可能非常大, 所以你只要输出它模上1000的余数就可以了.

       这道题其实也可以用图论来做,可令我惊讶的是这道题的解和矩阵模型的性质相符合,将图建立邻接矩阵,矩阵的n次幂就是走n步的方案数,据说是属于离散数学的内容,先个学期必须好好听这门课。

        关于矩阵快速幂的题目主要还是第二点,我还真是自作自受,进度实在是太慢了,明天至少还要看完递推关系和生成函数,与莫比乌斯反演。后天完成置换群和polya定理。感觉不能在纠结在书本一行一行的看了。明天开始全面加快速度。

        下面继续整理补下之前看的知识点。

《初等数论》

1,设a1,a2及c均为正整数,(a1,a2)=1,那么当c>a1a2-a1-a2时,不定方程a1x+a2y=c有非负解,解数等于[c/(a1,a2)]或[c/(a1,a2)]+1,当c=a1a2-a1-a2时,不定方程没有负解。

2,设a1,a2及c均为正整数,(a1,a2)=1,那么当c>a1a2时,方程解a1x+a2y=c解数等于-[-c/(a1a2)]-1或-[-c/(a1,a2)],当c=a1a2时,方程(4)无正解。

3,求5x1+3x2=52的全部正解。

      解:x1=8,x2=4一组特解。全部正解是:x1=8+3t,x2=4-5t,-2<=[-8/3]+1<=t<=-[-4/5]-1<=0因此有三个正解。

4,不定方程(x^2)+(y^2)=z^2。。。。。。(1)

      设y为偶数,那么解必定x=(r^2)-(s^2),y=2rs,z=(r^2)+(s^2)。

其中r,s为满足条件r>s>0,(r,s)=1,2|r+s。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值