国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[BZOJ2687]簡單題(dp+bitset優化)

2019-11-11 02:16:50
字體:
來源:轉載
供稿:網友

題目描述

傳送門

題解

剛開始想的有問題,因為很多子集和可能為同一個數 f(i)表示和為i的子集一共有多少個,那么每加進一個數x,f(i+x)+=f(i) 這樣的話時間是O((∑ai)2)的,考慮怎么優化 很顯然最終的答案只與f的奇偶有關,那么讓f(i)表示和為i的子集的個數%2的值 轉移就變成了f(i+x)^=f(i) 可以把整個f看成一個二進制數,這樣就是左移一下然后做異或 直接搞成二進制數太大了,用bitset搞一下就行了

代碼

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<bitset>using namespace std;#define N 2000005int n,x,sum,ans;bitset <N> f;int main(){ scanf("%d",&n); f[0]=1; for (int i=1;i<=n;++i) { scanf("%d",&x); sum+=x; f^=f<<x; } for (int i=1;i<=sum;++i) if (f[i]) ans^=i;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖边县| 深水埗区| 修武县| 肃南| 基隆市| 疏附县| 界首市| 和平区| 洛南县| 商都县| 成安县| 营山县| 会理县| 来宾市| 古蔺县| 马山县| 宜川县| 忻州市| 五寨县| 萍乡市| 灵台县| 汉中市| 嘉鱼县| 双鸭山市| 当阳市| 梧州市| 新龙县| 天峻县| 沾化县| 耿马| 渭南市| 凌云县| 宁津县| 老河口市| 芜湖县| 台中县| 军事| 朝阳市| 临颍县| 陆川县| 乌兰察布市|