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...