zoukankan      html  css  js  c++  java
  • bzoj3687

    3687: 简单题

    Time Limit: 10 Sec  Memory Limit: 512 MB
    Submit: 700  Solved: 319
    [Submit][Status][Discuss]

    Description

    小呆开始研究集合论了,他提出了关于一个数集四个问题:
    1.子集的异或和的算术和。
    2.子集的异或和的异或和。
    3.子集的算术和的算术和。
    4.子集的算术和的异或和。
        目前为止,小呆已经解决了前三个问题,还剩下最后一个问题还没有解决,他决定把
    这个问题交给你,未来的集训队队员来实现。

    Input

    第一行,一个整数n。
    第二行,n个正整数,表示01,a2….,。

    Output

     一行,包含一个整数,表示所有子集和的异或和。

    Sample Input

    2
    1 3

    Sample Output

    6

    HINT

    【样例解释】

      6=1 异或 3 异或 (1+3)

    【数据规模与约定】

    ai >0,1<n<1000,∑ai≤2000000。

    题解:
    首先会发现给了ai大小的限制
    那显然是用来dp的
    但是这样还没法过
    发现一个性质,对于dp[i] 我们只要维护它的奇偶性就可以了
    %2的话就可以考虑一下bitset
    令g表示它的上一状态,f先复制g
    f[x]=f[x]^g[x-a[i+1]]
    那么其实f就是将g右移a[i+1]再^上去
  • 相关阅读:
    Javascript FP-ramdajs
    微信小程序开发
    SPA for HTML5
    One Liners to Impress Your Friends
    Sass (Syntactically Awesome StyleSheets)
    iOS App Icon Template 5.0
    React Native Life Cycle and Communication
    Meteor framework
    RESTful Mongodb
    Server-sent Events
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8711615.html
Copyright © 2011-2022 走看看