傳送
時間限制:c/c++ 2秒,其他語言4秒 空間限制:c/c++ 32768k,其他語言65536k64bit 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中任意乙個環,裡面所有邊...