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