左岸阳光

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年11月21日

摘要: A~B:我用的枚举两个数字组成的所有数,同时判重bool超内存了,用位压缩才过~C: 求n个数的一组序列连续从i到j或操作可能得到多少不同的数字。每个数字不超过10^6,即20位。所以或操作本质是向20位二进制的序列填1。对于每个数ai,枚举每位,向前(0的方向)或。如果该位为0,则向前或过程中其他数该位变化不会由该数引起,此时加入当前数直接退出;如果该位为1,向前或过程中其他位的变化可以contribute to这一个数,为了避免重复,向前或持续到其左边第一个位数为1的数处。对20位处理完后,直接输出判重后的结果(判重是相对于20个位之间)。对于同一位不会出现重复加入同一个数字。每个数最多重 阅读全文
posted @ 2012-11-21 18:16 左岸阳光 阅读(190) 评论(0) 推荐(0) 编辑