平淡无奇的笔记

暂且就先将所有笔记写在一篇博客上吧,等需要分类管理的时候再分成多个博客放到一个专题中。

目录

数论

关于GCD

关于位运算

如何做思维题?


数论


关于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

如何做思维题?

CF1151B Dima and a Bad XOR 为例

1. 自顶向下

1. 分析问题的元素:最突出的元素为异或,其次为结果大于零,其次为每行取一个,其次为一个二维数组

2. 分析每个元素的特点:

异或:相同取0,不同取1

结果大于零:为什么是零,不是某个数字,如果是零会是什么情况

每行取一个:每行的数字在求解问题中是独立的,在列中是存在关系的(异或关系)

等等……

2. 自底向上

1. 分析元素的结论:

异或:

相同的数字异或为零,反之大于零(对应大于零这个元素)

多个数字异或为零不代表所有数字一定相同,但根据上面的结论将一个数字换成一个不同的数,异或结果必大于零

每行取一个:

作用就是换数字,但是有可能所有的数字都是相同的

等等……

2. 总结结论,解决问题

随便找一个选数方案如果结果大于零就可以直接解决问题。但找到了一个为零的选数方案,尝试用其中一个数字同一行的不同的数替换该数字,如果所有数字都找不到对应不同数字(同一行全相同),就解决了问题。

全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务