牛客網 每日一題 4月14日題目精講 Xorto

2021-10-05 03:38:44 字數 1205 閱讀 5142

傳送

時間限制:c/c++ 2秒,其他語言4秒 空間限制:c/c++ 32768k,其他語言65536k

64bit io format:%lld

給定乙個長度為n的整數陣列,問有多少對互不重疊的非空區間,使得兩個區間內的數的異或和為0。 輸入描述: 第一行乙個數n表示陣列長度;

第二行n個整數表示陣列; 1<=n<=1000,0<=陣列元素<100000。

輸出描述:

一行乙個整數表示答案。

示例1輸入

300

0

輸出

5
說明

([1,1],[2,2]),([1,1],[3,3]),([1,1],[2,3]),([1,2],[3,3]),([2,2],[3,3])

列舉?tle√

暴力肯定過不了,我們可以先考慮只列舉乙個區間[x,y],這個區間可以通過字首異或和得到。pre來存字首

我們用[x,y]表示右邊的區間,題目要求左右區間異或和為0,也就是問[x,y]左邊有多少和它值一樣的區間。

我們可以用a[i]來存,a[i]表示左邊異或和為i區間個數,陣列a反應的數量,i反映的是值。

先將區間[k,i]存進a中,再用a[ ]來檢視左邊有多少區間異或和值與右區間[i+1 , j]值相同。

因為a存的是數量,所以直接用ans+=a [ pre[i] ^ [j] ]

#include

using

namespace std;

const

int maxn=

1e7+3;

int a[maxn]

;int pre[maxn]

;int x;

int n;

long

long ans=0;

intmain()

for(

int i=

1;i<=n;i++

) cout

}

關於異或的題我最近做了個

cf282e sausage maximization

牛客網題目鏈結

異或的題,解法挺新穎,不過不知道為什麼牛客網這裡不能 提交?

原題是cf的cf題目鏈結

我自己寫的題解

牛客網 每日一題 4月28日題目精講 美味菜餚

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld小明是個大廚,早上起來他開始一天的工作。他所在的餐廳每天早上都會買好n件食材 每種食材的數量可以視為無限 小明從到達餐廳開始就連續工作t時間。每道菜餚的製作需要特定的一種...

牛客網 每日一題 5月19日題目精講 比賽

時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld你在打比賽,這場比賽總共有12個題 對於第i個題,你的隊伍有a i 的機率解決她 如果解決不了她呢?由於所有人討論的都很大聲 所以你有b i 的概率從左邊那個隊那裡聽...

牛客網 每日一題 4月23日題目精講 邊的染色

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld小團有一張n個點,m條邊的無向圖g,有些邊上已經被標記了0或1,表示它的邊權。現在你需要給剩下的邊標記邊權為0或1,求有幾種標記的方式滿足 對於g中任意乙個環,裡面所有邊...