div1 A
求1~2^m-1之間選擇n個(gè)數(shù),讓他們的任意連續(xù)子序列的xor和不等于0的方案數(shù)。
算法分析:
假設(shè)選擇 i 個(gè)數(shù)的方案數(shù)是dp(i),那么第i+1個(gè)數(shù)只有2^m-1-i種選擇。所以dp(i+1) = (2^m-1-i)*dp(i)
http://codeforces.com/contest/238/submission/2499373
div1 B
大坑。。。將一個(gè)數(shù)列A分成兩組,如果A(i)和A(j)屬于同一組,那么定義F(i,j)=A(i)+A(j),否這F(i,j) = A(i)+A(j)+C
現(xiàn)在給出A和C,求分組方案讓F的最大值和最小值之差最小。
算法分析:
只有兩種情況可能最優(yōu),A(0)單獨(dú)一組或者A(1)...A(i)單獨(dú)一組。
http://codeforces.com/contest/238/submission/2499373
div1 C
在一個(gè)有向樹上找到兩個(gè)點(diǎn)u,v。更改一些邊的方向讓u或v能到達(dá)所有點(diǎn),且讓更改數(shù)最小。
算法分析:
枚舉點(diǎn)u,以u(píng)為根遍歷。
對(duì)于兩個(gè)點(diǎn)u,v而言。對(duì)于不在路徑(u,v)上的邊,必須都朝向葉子,這個(gè)可以預(yù)處理。
對(duì)于在路徑(u,v)上的邊,存在一個(gè)點(diǎn) i,讓(u,i)和(v,i)都朝向i。
這就相當(dāng)于求把一個(gè)線性01序列A(0,...,n)變成00...11序列的最小代價(jià)。
這個(gè)可以用DP來(lái)解,那么放到樹里面就可以用treeDP來(lái)解了。
http://codeforces.com/contest/238/submission/2501450
posted on 2012-11-05 20:25
西月弦 閱讀(435)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
解題報(bào)告 、
codeforces