2018年1月27日训练笔记

        今天主要做了做总结,先是自己做总结,然后下午和做数学的同学一块做了总结和讨论,感觉是很好的过程,每个人都更清楚了自己的不足,知道自己接下来该多去看什么,大家也能更好地统一进度,接下来我要看Polya定理的更多题型,莫比乌斯也要进一步理解,然后组合数学之前的东西也要再回顾一下。


贴一下部分总结:

高斯消元

高斯消元法就是求解线性方程组的一个方法,方法本身是一个模板性方法,具体步骤:由原线性方程组得到增广矩阵,用高斯消元法得到下三角或上三角形式的矩阵,由先得到的解带入其余方程的除所有解。

一般要用列选主元消元法 ,比如当前要处理第i行,那么要用aii去消去同列元素,aii就是主元,此时在没处理过的行中选第i列绝对值最大的那个行与当前行交换,用交换后的主元去消除同列其他元素,可以减小运算的误差。

 

还注意判断无解的情况。

 

有一大类题型就是求解异或方程组,经典题型就是开关灯,用异或XOR做的:Poj 1222 EXTENDED LIGHTS OUT,给你一个5*6的格子,每个格子中有灯(亮着1,暗着0),每次你可以把一个暗的点亮(或者亮的熄灭)然后它上下左右的灯也会跟着变化。最后让你把所有的灯熄灭,问你应该改变哪些灯。

 

题目就是开始给一个01矩阵代表对应点的初始状态,每个点可以改变状态,而且这个点状态的改变会影响其他点,求改变哪些点能将所给矩阵的点全变为0,怎么把这个状态矩阵转化为方程组再转化为矩阵,

 

其实相当于对于每个点解一个方程:

  初始的状态  XOR  自己操作没操作  XOR  周围的四个点操作没操作 (对本点有影响的点变操作没操作) = 目标状态  (全为0)

两边同时XOR之前的状态。

   自己操作没操作  XOR  周围的四个点操作没操作  = 初始的状态 

得到关于每个点的一个方程:ai1*x1  xor  ai2*x2  xor  ai3*x3  xor ...xor  ain*xn = bi

 

所以对于一个方程,常数bi是之前的初始状态即输入的状态

Xi是对每个灯操作与否,1为操作,0不操作,是要解出的答案。

a(i,j)是灯j的开关对i的影响,是需要自己求的数组。

总共n*m个点,即得到n*m个方程,即可得到(n*m)*(n*m)系数矩阵,增广矩阵为(n*m)*(n*m+1),注意题给的灯的初始状态n*m矩阵,与这里方程矩阵的区别。

 

解异或方程组思想与解普通线性方程组思想相同,原理不同?。利用1 xor 1=0,还没仔细看。

for(inti=m*n;i>=1;i--)

{

        x[i]=a[i][m*n+1];

        if(!x[i])

continue;

        for(int j=i-1;j>=1;j--)

            if(a[j][i])

                a[j][m*n+1]^=x[i];

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值