有乙個長為\(n\)的01序列,每次等概率從\([1,len]\)中抽取乙個\(x\),可以選擇從右向左或是從左往右的第\(x\)個數字取走,求\(k\)次操作後取走1的期望個數\((k\leq n\leq 30)\)
然而就是直接狀態壓縮
以24為分界線,24步以內用狀態壓縮;24步以上可以發現狀態很大但狀態數很少(因為只進行了幾次操作),用\(map\)存
對於每種狀態列舉\(x\)記憶化搜尋即可,需要大力卡常
二進位制下去掉第\(p\)位:\(x=((x>>p)<<(p-1)) | (x\&((1<
(因為我的**太菜了卡不過常數,所以放的別人的)
#include#define maxn 35
#define ll long long
using namespace std;
int n,m,a[maxn];
char s[maxn];
double ans,f[(1<<24)+5];
const double eps=1e-10;
ll bin,num;
map< ll,double > mp[31];
inline void work(int x,int len)
double dfs(int now)
if(len<24) return f[1
}int main()
CSP校內集訓 替換遊戲(tarjan 離散化)
給乙個範圍 0,n 有兩種變換方式,k 或者給定的 m 個 x y 但必須保證變換前後的數始終在範圍內,給乙個數 x 求出它一直變換下去 注意不能得到了乙個數之後返回上一步 可以得到的所有數的和的最大值 n leq 10 8 m leq 10 5 k leq n 多組詢問 對兩種方式建邊,顯然乙個強...
CSP校內集訓 打撲克
有 n 堆大小為1的撲克,支援合併兩堆撲克和查詢有多少對撲克堆滿足 size i size j leq c c 不確定 暴力做法 開桶記錄當前存在有多少個大小為 i 的堆,查詢可用樹狀陣列或者雙指標,時間複雜度 o m 2logn 或者 o m 2 優化 發現列舉大小的桶有很多是空的,實際上,可以證...
CSP校內集訓 kat(期望DP)
一本有n道題的練習冊,katarina大佬每天都會做k道題。第一天做第1k題,第二天做第2k 1題 第n k 1天做第n k 1 n道題。每道題有它的難度值,假設今天katarina大佬做的題目中最大難度為t,那麼今天katarina大佬的勞累度就是 w t 做完這本書的勞累值就是每天的勞累值之和。...