平淡无奇的笔记
暂且就先将所有笔记写在一篇博客上吧,等需要分类管理的时候再分成多个博客放到一个专题中。
目录
数论
关于GCD
1. GCD递推式:GCD(a,b)=GCD(a,a%b)
2. GCD(a,a-b)=GCD(a,b)
证:GCD(a,b-a)=GCD(a,(b-a)%a)=GCD(a,(b-a+a)%a)=GCD(a,b%a)=GCD(a,b)
应用:CF1110C Meaningless Operations
关于位运算
1. 异或运算相当于把1对应的被异或数位取反,0对应的被异或数位取反,例:
0010 1101^0000 1111=0010 0010
如何做思维题?
1. 自顶向下
1. 分析问题的元素:最突出的元素为异或,其次为结果大于零,其次为每行取一个,其次为一个二维数组
2. 分析每个元素的特点:
异或:相同取0,不同取1
结果大于零:为什么是零,不是某个数字,如果是零会是什么情况
每行取一个:每行的数字在求解问题中是独立的,在列中是存在关系的(异或关系)
等等……
2. 自底向上
1. 分析元素的结论:
异或:
相同的数字异或为零,反之大于零(对应大于零这个元素)
多个数字异或为零不代表所有数字一定相同,但根据上面的结论将一个数字换成一个不同的数,异或结果必大于零
每行取一个:
作用就是换数字,但是有可能所有的数字都是相同的
等等……
2. 总结结论,解决问题
随便找一个选数方案如果结果大于零就可以直接解决问题。但找到了一个为零的选数方案,尝试用其中一个数字同一行的不同的数替换该数字,如果所有数字都找不到对应不同数字(同一行全相同),就解决了问题。