哈哈哈我竟然秒切了省選題
莫隊+異或。
考慮異或的性質,乙個數同時異或兩次等於沒有進行操作。那麼我們設a[i]為前i個數的異或和,顯然對於乙個區間\([l,now]\),\(a[l-1]\oplus a[now]\)就是這個區間裡面所有的數的異或和。如果\(a[l-1]\oplus a[now]=k\)那麼ans++,這等同於\(a[l-1]=k\oplus a[now]\)。
**如下:
#include#include#include#include#include#define maxn 100010
using namespace std;
int n,m,k,len,ans;
int sum[maxn],a[maxn],ansans[maxn];
struct nodet[maxn];
inline bool cmp(struct node x,struct node y)
for(int i=1;i<=m;i++)
printf("%d\n",ansans[i]);
return 0;
}
CQOI 2018 異或序列
給出乙個長為 n 的數列 a 和 k 多次詢問 對於乙個區間 l i,r i 問區間內有多少個不為空的子段異或和為 k 注意到一件有趣的事,就是每次詢問的 k 相同。因為 a oplus a 0 所以子段異或問題可以看作字首異或和的異或,即 a i oplus a i 1 oplus.oplus a...
CQOI2018 異或序列
已知乙個長度為n的整數數列 a 1,a 2,a n 給定查詢引數l r,問在 a l,a a r 區間內,有多少子串行滿足異或和等於k。也就是說,對於所有的x,y i x y r 能夠滿足 a x bigoplus a bigoplus bigoplus a y k 的x,y有多少組。輸入格式 輸入...
CQOI2018 交錯序列
這個題簡直有毒,o a b 3logn 的做法不卡常只比 o 2 n n 多 10 分 看到 a 和 b 簡直小的可憐,於是可以往矩陣上聯想 發現這個柿子有些特殊,好像可以二項式定理搞一搞 於是 x ay b 可以寫成 n y ay b 於是接下來就二項式定理好了 n y ay b sum a bi...