time limit: 10 sec memory limit: 512 mb
submit: 861 solved: 399
[submit][status][discuss]
小呆開始研究集合論了,他提出了關於乙個數集四個問題:
1.子集的異或和的算術和。
2.子集的異或和的異或和。
3.子集的算術和的算術和。
4.子集的算術和的異或和。
目前為止,小呆已經解決了前三個問題,還剩下最後乙個問題還沒有解決,他決定把
這個問題交給你,未來的集訓隊隊員來實現。
第一行,乙個整數n。
第二行,n個正整數,表示01,a2….,。
一行,包含乙個整數,表示所有子集和的異或和。
21 3
6【樣例解釋】
6=1 異或 3 異或 (1+3)
【資料規模與約定】
ai >0,1
另外,不保證集合中的數滿足互異性,即有可能出現ai= aj且i不等於j
/*暴力 %%%黃學長設f[i]表示i出現在算術和中的次數,那麼對於a[j],有f[i]+=f[i-a[j]]。最後統計哪些數出現了奇數次即可。
*/#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 1000000000
using
namespace
std;
inline ll read()
while(ch>='
0'&&ch<='9')
return x*f;
}int ans,n,a[1005],b[1005],f[10005],bin[25
];void getans(int
x)void dfs(int k,int
last)
}void
solve1()
void
solve2()
intmain()
/*這道題f[i]表示和為i的集合個數為奇數還是偶數,
f#include
#include
#include
#include
using
namespace
std;
bitset
<2000017>f;
intn,m,x,ans;
intmain()
for(int i=1;i<=m;i++)
printf(
"%d\n
",ans);
return0;
}
bzoj3687 簡單題 bitset優化揹包
給定乙個總和不大於2e6的數集,求子集的算術和的異或和。好像可以直接上01揹包dp。但是會tle。其實記錄的只是每個體積的狀態的奇偶,所以方程可以寫成dp i dp i dp i x dp i d p i dp i x 然後發現每乙個點都是異或上前面一定距離的數,所以我們可以把整個陣列往後移動x個然...
BZOJ2683 簡單題 題解
1.若n比較小,則可以用二維的樹狀陣列或線段樹來做,但是500000,空間開不下,於是考慮離線cdq。子矩陣的數字和表示為也就是二維字首和,因此乙個要查詢的子矩陣,對其有影響的矩陣為s x2 y2 s x2 y1 1 s x1 1 y2 s x1 1 y1 1 這四個字首子矩陣 所以,在沒有修改操作...
bzoj4915 簡單的數字題
傳送門 題解 出自第52屆imo試題第1題。首先第一問一定是4 樣例給你了啊 如果要你證明,我們不妨令a123 4那麼有s a1 a2 a3 a4 s 2 a1 2 a2 2 a3 2 a4 2 那麼有a3 2 a4 2 a3 2 a4 2 a1 2 a2 2 a3 2 a4 2 s 2,即a3 a...