2018年1月27日训练笔记
2018-01-27 20:24
225 查看
今天主要做了做总结,先是自己做总结,然后下午和做数学的同学一块做了总结和讨论,感觉是很好的过程,每个人都更清楚了自己的不足,知道自己接下来该多去看什么,大家也能更好地统一进度,接下来我要看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
4000
,还没仔细看。
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];
}
贴一下部分总结:
高斯消元
高斯消元法就是求解线性方程组的一个方法,方法本身是一个模板性方法,具体步骤:由原线性方程组得到增广矩阵,用高斯消元法得到下三角或上三角形式的矩阵,由先得到的解带入其余方程的除所有解。
一般要用列选主元消元法 ,比如当前要处理第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
4000
,还没仔细看。
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];
}
相关文章推荐
- 算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)
- Faster R-CNN 训练源码学习笔记
- facenet 代码阅读笔记:如何训练基于triplet-loss的模型
- 2017年10月12日训练笔记
- tensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试(MNIST For ML Beginners)
- 2018年2月5日训练笔记
- 【论文笔记】SparkNET: 用Spark训练深度神经网络
- 薛开宇学习笔记二之总结笔记(用一个预训练模型提取特征)--Linux语法总结
- 【深度学习】笔记6:使用caffe中的CIFAR10网络模型和自己的图片数据训练自己的模型(步骤详解)
- 2017年12月10日训练笔记
- 8月10日训练笔记
- 语义分割学习笔记(一)——SegNet 配置与训练
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
- 【人脸检测】“人脸训练代码”项目笔记(3)——代码结构分析
- 周末训练笔记(四)
- caffe学习笔记之Caffe for Windows 训练cifar10
- 9月3日周日训练笔记
- 【OpenCV学习笔记 021】haartraining训练生成xml过程
- 11月23日训练笔记
- 2018年1月7日训练笔记