NC14247 Xorto(異或 字首和)

2022-05-28 16:33:11 字數 616 閱讀 4951

對於異或的題目,很多都跟字首和放在一起,比如說這題,讓你求不相交區間異或值相等的個數

很容易想到用字首和表示區間,現在考慮如何做到不相交並且不重複計算

1.二維迴圈,第一維從1開始,第二維乙個用來統計,乙個用來更新

統計的時候,從i開始到n,把這段裡面的所有區間的異或值,都看看前面有沒有相等的,之後計算

更新的時候從1-i,把前面的所有的區間值都加進去

這樣就做到不重不漏

#include#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int n=5e5+10

;int

s[n];

inta[n];

intcnt[n];

intmain()

ll res=0

;

for(i=1;i<=n;i++)

for(j=1;j<=i;j++)

}cout

}

view code

NC14247 Xorto 字首異或

題目鏈結 思路 兩個連續區間的異或和為0,看到區間嘛,就很容易想到字首和處理,這個題目也差不多,字首異或嘛,看著 n 為 1000,就直接暴力找這兩個區間唄。列舉分割點,分割點之前的所有字首異或和相同的都累加起來,然後列舉分割點之後的疑惑和,如果有相等的 疑惑和為0其實就是相等的意思吧 那麼就加上之...

牛客 每日一題 Xorto 題解(異或 字首和)

選取任意不重疊的兩個區間,使異或結果為0 前言已經想到了用字首和優化就是不知道該怎麼判斷他們不是重疊 正文暴力是列舉兩個區間左右端點,但是顯而易見會tle,我們可以考慮只列舉其中乙個區間 x,y 這個區間的異或和可以很容易的在o 1 時間複雜度通過字首異或和求得。如果我們規定 x,y 是右邊的那個區...

子段異或(異或字首和)

傳送門 第一行乙個整數 n 代表數列長度。第二行 n 個整數,代表數列。輸出乙個整數,代表答案。示例1 複製5 1 2 3 2 1 複製 2 子段 1,3 和子段 3,5 是合法子段。首先你得知道乙個知識點就是 如果sum i 為陣列a的前i項的異或和,就是說sum i a 1 a 2 a 3 a ...