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

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

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

2019-11-11 00:28:05
字體:
來源:轉載
供稿:網友

題目描述

傳送門

題解

剛開始想的有問題,因為很多子集和可能為同一個數 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;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湖口县| 吉林省| 林州市| 金坛市| 龙陵县| 万宁市| 永仁县| 新化县| 松原市| 涿鹿县| 辽中县| 吕梁市| 通许县| 慈利县| 扶沟县| 福安市| 榆林市| 嘉祥县| 沁源县| 佛坪县| 三门县| 浦北县| 西峡县| 海兴县| 大城县| 河南省| 邵阳市| 彭水| 东海县| 井冈山市| 互助| 阿图什市| 宣化县| 新民市| 莫力| 东明县| 东明县| 泗阳县| 平原县| 惠来县| 库伦旗|