P3917 異或序列

2022-03-09 06:37:10 字數 968 閱讀 2196

p3917 異或序列

暴力字首異或列舉每乙個區間,再求和,60分。

正解:按每一位來做

對於區間[l,r],如果它對答案有貢獻,區間中1的個數一定是奇數,可以按每一位取(1<

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

#define inf 2147483647

9#define for(i,a,b) for(register long long i=a;i<=b;i++)

10#define p(a) putchar(a)

11#define g() getchar()

12//

by war

13//

2017.10.23

14using

namespace

std;

15long

long

n;16

long

long a[100010

];17

long

long

cnt;

18long

long

ans;

19void

in(long

long &x)

2029

while(c<='

9'&&c>='

0')x=x*10+c-'

0',c=g();

30 x*=y;31}

32void o(long

long

x)33

39if(x>9)o(x/10

);40 p(x%10+'0'

);41}42

intmain()

4350 for(i,0,17)51

58o(ans);

59return0;

60 }

Luogu P3917異或序列

思路 把序列轉換成一顆n 1個節點n條邊邊權分別為a1 a2 an的樹 鏈 每乙個區間相當於樹上的一條路徑,那麼問題就轉換為求樹上任意兩點間路徑的異或和,令dis i 為根節點到i的路徑異或和,對於兩個點u和v,dis u dis v 對答案的貢獻為 顯然,第i位為0和第i位為1 的兩個數異或才會對...

二進位制亂搞 Luogu3917 異或序列

題面 luogu3917 我的做法好像比較傻。看到這種題首先想到字首。首先字首xor是不是很資辭?我的做法呢就是先把所有數按二進位制位拆開,然後每一位都做兩次字首。首先對數字做一次字首xor,記到 s 陣列裡,再對s陣列做一次字首和,記到ss 裡。然後我們可以對於每一位列舉起始位置i,然後從i開始向...

問題 A 異或序列

時間限制 1 sec 記憶體限制 128 mb 提交 188 解決 86 提交 狀態 討論版 命題人 admin 題目描述 已知乙個長度為n的整數數列a1,a2,an,給定查詢引數l r,問在al,al 1,ar區間內,有多少子串行滿足異或和等於k。也就是說,對於所有的x,y l x y r 滿足a...