LeeBlog

导航

2011年1月28日 #

按位异或

摘要: 以前一直忽视了异或这些小运算,今天做到HDU的2095时才发现异或的功能,这里只讲它的一小部分; 异或时一种逻辑运算,它的真值表如下 1 ^ 1 == 0; 1 ^ 0 == 1; 0 ^ 1 == 1; 0 ^ 0 == 0; 异或实质上是将参与运算的两个数据,按对应的二进制逐位进行逻辑异或运算,只有当对应位的二进制数互斥时对应为的结果才为真; 下面介绍异或运算的几种性质: 1 交换律:a ^ b ^ c = a ^ c ^ b;(很多人忽视的性质,杭电2095就是利用这个性质做的,再小菜鸟的博客里面有 ); 2 结合律:a ^ b = b ^ a;(这个相信大家都知道 ) 按位异或同样可. 阅读全文

posted @ 2011-01-28 21:28 LeeBlog 阅读(655) 评论(0) 推荐(0) 编辑

HDU 2095 find your present (2)

摘要: 原以为这是一纯水题,就果断开了1000000了数组给它(1300多K),没想Memory果断超了,后来又用链表做(写了2000多K),再次无情的被Memory刷了,无耐百度一下,竟然发现别人的代码才300多B(表示我的有2000多B),发现自己的方法OUT了。  这段代码中最重要的是异或思想;相同的数异或后为0,0再和那个唯一的数异或(异或满足交换律,所以“礼物”,在前面出现和在最后出现没有区别,结果不变),结果即为那个不相同的数.杭电的测试数据太弱了,如果n为7, 3个1,3个2,一个3,结果就错了。(异或在本空间有介绍,如有不明,可以see一see 代码 阅读全文

posted @ 2011-01-28 20:51 LeeBlog 阅读(273) 评论(0) 推荐(0) 编辑