n
nn個球排成一排顏色不同,每次選擇乙個隨機的[
1..n
][1..n]
[1..n]
中的x
xx,然後刪掉第x
xx個或第n−x
+1
n-x+1
n−x+
1個數,求刪k
kk次之後刪掉的白球最多,求刪掉數量的期望值
考慮狀態壓縮dpdp
dp,定義第乙個1
11所在位數表示剩下的球數,1
11表示該位置是白球,0
00表示該位置是黑球。設f
sf_s
fs表示狀態為s
ss時的最小期望值。
d el
(s,i
)del(s,i)
del(s,
i)表示s
ss去掉第i
ii個球後的狀態,有狀態轉移方程fs=
∑i=1
lmax
lf_s=\frac^lmax\+one(s,i),f_+one(s,n-i+1)\}}
fs=l∑
i=1l
max
這樣的時間複雜度為o(2
nn
)o(2^nn)
o(2nn)
但是有許多狀態是沒有使用的,我們對於小的s
ss可以用乙個桶存,對於大的s
ss我們可以用map
mapma
p來存即可
#include
#include
#include
#include
#define xjq using
#define ak namespace
#define ioi std
xjq ak ioi;
const
int n=
35,lim=
1<<24;
int n,k;
double a[lim]
;map<
int,
double
> m;
char str[n]
;bool
live
(int x,
int l)
double
get(
int x,
int l)
void
change
(int x,
int l,
double val)
intdel
(int x,
int w)
double
dfs(
int s,
int l)
intmain()
nssl 1336 膜拜神牛
d es crip tion description descri ptio n 給定長度為n nn的序列a aa和b bb,若滿足ai aj a i geq a j ai aj 且bi b jb i leq b j bi bj 則i,ji,j i,j互相膜拜,求最大的互不膜拜集合 資料範圍 n 1...
nssl1476 聯 線段樹
無限長的01 0101 序列,每次進行乙個操作 區間內賦值為0 00區間內賦值為1 11區間取反 求第乙個0 00的位置 離散化 儲存每個區間的左右端點和他們加一之後的值 後可以用線段樹儲存第乙個0 00和第乙個1 11的位置。然後區間取反時就交換兩個值並且讓laz ylazy lazy 標記同樣取...
nssl 1336 膜拜神牛 LIS
題目描述 garfield聽說oi班有n頭神牛,每頭神牛有兩個屬性,演算法能力和思維能力,分別以ai和bi表示。如果神牛i和神牛j滿足ai aj且bi bj,那麼兩位神牛會互相膜拜。garfield認為膜拜是不和諧的,所以她想知道,最大的不存在膜拜關係的子集大小。輸入第一行,乙個整數n,表示神牛數量...