Codeforces Round #173 (Div. 2)
轉載請註明出處,謝謝http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
首先先大概的流水帳一下吧。。。
註冊了一個小號,準備打一打
A題很水,提交的時候熄燈了,斷網,耽誤了一下。
看了B題之後發現不會,然後看了C題
隨便YY了一下,就交了一發(竟然是對的!!!)
然後看一下D題,然後發現不是可以轉換成3堆的,然後DP一下嗎
其實是4方DP,會TLE的。然後就全場第一個過了D的pt
嚇傻了,其實我沒有仔細想一下複雜度的問題。
然後把B,E都看了一下。。。。
B題大致瞎搞了一下交了,E題是Dshawn在帝都時給我出的類似一個題
做不出E真的是辜負了Dshawn啊,不過也圍觀了Dshawn WA 9,切JJ
水一下,cha了幾個C就去睡覺了。。。
A:水題
B:注意a+g==1000以及差在500以內等奇葩條件,其實每一步貪心就行了, 肯定有解
C:大致是這樣的,如果兩個串一樣,肯定可以,如果兩個串長度不一樣,肯定不可以。
然後可以發現0 0怎麼搞還是0 0,不是0 0 怎麼搞都搞不出0 0
然後就是判斷一下兩個串中是否只有0.
cha點在於好多人忽略了兩個串都只有0的情況,這種情況是有解的
否則一個全零,另一個不是,就是無解了
D:n=1肯定是先手贏
n=2是個威佐夫博弈
n=3等價一個Nim博弈,好神奇的題。
4方DP其實是可以過的,不要遞迴,寫成遞推,然後優化優化,TAT
E:把所有的字首加入到Trie中,然後列舉所有的字尾,在Trie樹中貪心查詢。
注意一下字首和字尾可能為空的情況
struct Trie{
Trie *son[2];
LL val;
}*root;
int n;
LL a[100005];
LL ans=0,sum=0;
Trie *NewNode(){
Trie *tmp=new Trie;
tmp->val=0;
tmp->son[0]=tmp->son[1]=NULL;
return tmp;
}
void insert(Trie *root,LL num){
int bit[100];
Trie *p=root;
for(int i=0;i<=40;i++)
bit[i]=1&(num>>i);
for(int i=40;i>=0;i--){
if(p->son[bit[i]]==NULL)
p->son[bit[i]]=NewNode();
p=p->son[bit[i]];
}
p->val=num;
}
LL query(Trie *root,LL num){
int bit[100];
Trie *p=root;
for(int i=0;i<=40;i++)
bit[i]=1&(num>>i);
for(int i=40;i>=0;i--){
if(p->son[bit[i]^1])
p=p->son[bit[i]^1];
else
p=p->son[bit[i]];
}
return num^p->val;
}
int main(){
cin>>n;
root=NewNode();
for(int i=1;i<=n;i++){
cin>>a[i];
sum^=a[i];
insert(root,sum);
ans=max(ans,sum);
}
insert(root,0);
sum=0;
for(int i=n;i;i--){
sum^=a[i];
ans=max(ans,query(root,sum));
}
cout<<ans<<endl;
return 0;
}
相關文章
- Codeforces Round #639 (Div. 2)
- Codeforces Round #541 (Div. 2)
- Codeforces Round #682 (Div. 2)
- Codeforces Round #678 (Div. 2)
- Codeforces Round #747 (Div. 2)
- Codeforces Round #673 (Div. 2)
- Codeforces Round #672 (Div. 2)
- Codeforces Round #448 (Div. 2) A
- Codeforces Round #217 (Div. 2)
- Codeforces Round #256 (Div. 2)
- Codeforces Round #259 (Div. 2)
- Codeforces Round #257 (Div. 2)
- Codeforces Round #258 (Div. 2)
- Codeforces Round #171 (Div. 2)
- Codeforces Round 951 (Div. 2)
- Codeforces Round 955 (Div. 2)
- Codeforces Round 953 (Div. 2)
- Codeforces Round 975 (Div. 2)
- Codeforces Round 976 (Div. 2)
- Codeforces Round 972 (Div. 2)
- Codeforces Round 979 (Div. 2)
- Codeforces Round 982 (Div. 2)
- Codeforces Round 932 (Div. 2)
- Codeforces Round 934 (Div. 2)
- Codeforces Round 940 (Div. 2)
- Codeforces Round 973 (Div. 2)
- Codeforces Round 960 (Div. 2)
- Codeforces Round 958 (Div. 2)
- Codeforces Round 961 (Div. 2)
- Codeforces Round 948 (Div. 2)
- Codeforces Round 945 (Div. 2)
- Codeforces Round 873 (Div. 2)
- Codeforces Round 969 (Div. 2)
- Codeforces Round 949 (Div. 2)
- Codeforces Round 965 (Div. 2)
- Codeforces Round 963 (Div. 2)
- Codeforces Round 967 (Div. 2)
- Codeforces Round 987 (Div. 2)